linux内核编译+busybox制作根文件+qemu运行
1、下载linux-5.15.2源码
2、生成默认x86_64配置
make x86_64_defconfig
3、make menuconfig 进入配置界面
选择 *Initial RAM filesystem and RAM disk(initramfs/initrd) support
4、编译内核
make
生成 arch/x86/boot/bzImage
5、创建initramfs根文件系统
mkdir rootfs cd rootfs mkdir -p bin dev etc proc sys usr #添加init启动脚本 cat >init <<EOF #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys echo "hello from linux in QEMU!" exec /bin/sh EOF #添加执行权限 chmod +x init #编译busybox1.36.1 wget https://busybox.net/download/busybox-1.36.1.tar.bz2 tar -xvf busybox-1.36.1.tar.bz2 cd busybox-1.36.1 make menuconfig #配置界面选择 setting build static binary(no shared libs) #编译并安装到前面的rootfs make && make CONFIG_PREFIX=../rootfs install #创建设备节点 sudo mknod -m 622 dev/console c 5 1 sudo mknod -m 666 dev/null c 1 3 #打包为initramfs cd rootfs中 find . | cpio -ov -H newc | gzip > ../initramfs.cpio.gz
6,在QEMU中启动镜像和根文件
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd ../initramfs.cpio.gz -append "console=ttyS0 rdinit=/init" -nographic
浙公网安备 33010602011771号