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

  

posted @ 2025-05-07 20:24  UNkey  阅读(215)  评论(0)    收藏  举报