简介
一直想研究qemu很久了,都是浅尝辄止,看一半的文档就不搞了,要下载那么多的镜像很讨厌的。最近觉得这两年实在是没什么长进确实应该深入看看了。
命令行
先了解这个命令怎么用吧,首先下载个TinyCore-current.iso 官网上下载才16MB
qemu-system-i386 -m 2G -smp 2 -vga vmware TinyCore-current.iso -enable-kvm
不支持kvm就删除-enable-kvm吧,硬件加速的。
自编译内核启动
-
编译内核
make menuconfig make make bzImage
-
编译文件系统initrd,
cd linux-5.0.4/arch/x84_64/boot mkinitramfs -o initrd.img
-
使用内核镜像和文件系统
qemu-system-x86_64 -kernel bzImage -initrd initrd.img
好了,内核已经跑起来了,基本的initcramfs文件系统,感觉可以用来调试内核启动失败的bug, 当然不能涉及到文件系统。
自己写启动初始化进程
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
printf("Hello world!\n");
sleep(999999999);
}
编译
gcc init.c -o init -static
创建镜像并启动
echo init | cpio -o -H newc | gzip > test.cpio.gz
OK, 可以启动内核,执行这个程序了
qemu-system-x86_64 -m 512M -kernel ./bzImage -initrd test.cpio.gz
http://www.tinycorelinux.net/downloads.html
http://gruba.blogspot.com/2009/08/qemu-minimal-linux-kernel-config.html
https://blog.youkuaiyun.com/u014022631/article/details/81001263
https://www.linuxidc.com/Linux/2015-03/114461.htm
https://www.linuxidc.com/Linux/2015-03/114462.htm
https://www.jianshu.com/p/e4ea9e9d8308
https://main.lv/writeup/qemu_usage.md
https://unix.stackexchange.com/questions/48302/running-bzimage-in-qemu-unable-to-mount-root-fs-on-unknown-block0-0