Qemu搭建linux内核环境
编译linux内核
下载内核源码https://mirrors.tuna.tsinghua.edu.cn/kernel/
解压源码tar -xvf linux-xxxx.tar.gz
解压后进入源码根目录,指定编译架构,打开配置菜单
1 | cd linux-xxxx |
编译生成镜像1
sudo make -j 4 bzImage
配置busybox
启动内核还需要一个具有根文件系统的磁盘镜像文件,根文件系统中提供可供交互的shell程序以及一些常用工具命令。
借助busybox工具来制作根文件系统
下载地址 https://git.busybox.net/busybox/
解压1
tar -jxvf busybox-1.32.0.tar.bz2
进入busybox根目录,配置编译选项
1 | cd busybox-1.32.0 |
设置为静态编译1
2Settings --->
[*] Build BusyBox as a static binary (no shared libs)
制作rootfs
制作rootfs镜像文件,并把busybox安装到其中
使用dd命令创建文件,并格式化为ext4文件系统
1 | ayoung@ubuntu:~/Desktop/busybox-1_32_0$ dd if=/dev/zero of=rootfs.img bs=1M count=100 |
创建用于挂载该镜像文件的目录fs,挂载后才能往里面写入busybox
使用mount命令将rootfs.img挂载到fs目录,编译busybox并写入fs目录中
1 | ayoung@ubuntu:~/Desktop/busybox-1_32_0$ mkdir fs |
接着对写入的busybox进行补充配置
1 | ayoung@ubuntu:~/Desktop/busybox-1_32_0$ cd fs |
制作完成后rootfs目录如下1
2ayoung@ubuntu:~/Desktop/busybox-1_32_0$ ls fs
bin dev etc home linuxrc lost+found mnt proc sbin usr
最后卸载rootfs.img1
sudo umount fs
启动qemu
1 | !/bin/sh |
此时会发现文件系统只读,无法执行mkdir等操作
挂载
1 | sudo mount -o loop -w rootfs.img sysmain/ |
修改启动后执行的脚本/etc/init.d/rcS,可以在这里添加想要执行的命令。mount rw -o remount /将文件系统改为可读写。想要加入文件系统的文件可以直接放进挂载的目录下。完成后umount即可
1 | !/bin/sh |
添加共享磁盘
创建64MB磁盘镜像文件,并格式化为ext4,作为共享磁盘备用
1 | dd if=/dev/zero of=ext4.img bs=512 count=131072 |
qemu启动命令中使用-hdb增加一个磁盘1
-hdb ext4.img
修改启动脚本,自动挂载sdb到mnt目录
1 | mount -t ext4 /dev/sdb /mnt |
宿主机挂载ext4.img,实现文件共享
1 | sudo mount -t ext4 -o loop ext4.img ./share |
实测感觉没有很好用,感觉不如直接挂载原文件系统进行修改再卸载



