提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
如何使用busybox制作文件系统,在qemu中使用。我看了一些制作文章,写的不是很全,有一些点需要注意。下面分享制作过程。
一、内核编译
从kernel.org中下载源码,
编译时
make menuconfig
在菜单中选择 改为65535。退出保存
然后编译内核 make -j128 -s
二、使用busybox制作文件系统
从 https://busybox.net/downloads/ 下载
解压 tar -jxvf xx.tar.bz2
然后编译
mkdir build
make O=build menuconfig
注意选择静态编译,否则后面可能会panic
cd build
make -j4
make install
编译后执行
创建文件夹
mkdir -pv initramfs/x86_64_busybox
cd initramfs/x86_64_busybox/
mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}}
cp -av …/…/busybox-1.32.0/build/_install/* .
initramfs需要一个init程序,可以写一个简单的shell脚本作为init,内容如下
代码如下(示例):
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo -e “\nBoot took $(cut -d’ ’ -f1 /proc/uptime) seconds\n”
exec /bin/sh
然后修改执行权限
chmod 777 init
将x86_64_busybox目录下的内容打包归档为cpio文件,供linux内核在做initramfs启动时执行,打包为cpio文件的命令为
find . -print0 | cpio --null -ov --format=newc | gzip -9 > …/initramfs-busybox-x86_64.cpio.gz
执行
qemu-system-x86_64 -smp 2 -m 1024M -kernel /源码目录/arch/x86_64/boot/bzImage -nographic -append “root=/dev/ram0 rw console=ttyS0 init=/linuxrc” -initrd /刚刚制作的文件系统目录/initramfs-busybox-x86_64.cpio.gz
总结
注意修改65535 和静态编译,然后是加给文件系统可执行权限,如果启动不了的话。
根文件系统分享在百度网盘分享一下 全套内容。包括文件系统,和内核,脚本自己改一下路径即可。
链接:https://pan.baidu.com/s/1_dn0oJx6HaeMa1Nn4Tm-7w
提取码:1234
主要参考 https://blog.csdn.net/fantasy_wxe/article/details/108418822