制作根文件系统
使用busybox制作根文件系统(ext4)
wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2 tar -jxvf busybox-1.36.1.tar.bz2 cd busybox-1.36.1 make menuconfig

make -j8 # 安装到指定前缀目录(如./rootfs) make install
cd ./rootfs # 进入BusyBox安装目录 # 1. 创建核心目录 mkdir -p dev proc sys tmp etc/init.d mnt root var/log# 2. 设置目录权限 chmod 777 tmp # 临时目录可读写 sudo chown root:root root # root目录归属root用户

cat > etc/init.d/rcS << EOF #!/bin/sh# 挂载文件系统 mount -t proc proc /proc mount -t sysfs sysfs /sys mount -t tmpfs tmpfs /tmp mount -o remount,rw / # 重新挂载根目录为可读写# 创建设备节点(mdev自动管理设备) echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s# 启动shell(可选,若未配置inittab) exec /bin/sh EOF # 添加执行权限 chmod +x etc/init.d/rcS

cat > etc/inittab << EOF # 格式:<id>:<runlevels>:<action>:<command> ::sysinit:/etc/init.d/rcS # 系统初始化 console::respawn:/bin/sh # 控制台自动重启shell ::restart:/sbin/init # 重启时执行init ::ctrlaltdel:/sbin/reboot # Ctrl+Alt+Del触发重启 ::shutdown:/bin/umount -a -r # 关机卸载文件系统 EOF
ext4 镜像(适合块设备挂载)
# 创建128M的空镜像 dd if=/dev/zero of=rootfs.ext4 bs=1M count=128 # 格式化ext4 mkfs.ext4 rootfs.ext4 # 挂载并拷贝文件 mkdir -p tmp_mount sudo mount rootfs.ext4 tmp_mount sudo cp -r rootfs/* tmp_mount/ sudo umount tmp_mount
ramdisk(内存文件系统,调试更高效)
cd rootfs find . -print0 | cpio --null -ov --format=newc > ../rootfs.cpio cd .. gzip rootfs.cpio # 压缩(可选)
编译6.18内核(适配qemu)
从官网下载 https://www.kernel.org/
# 1. 加载QEMU通用配置(基础模板) make defconfig # 加载x86默认配置 make menuconfig # 图形化微调(关键配置如下)

make -j8
QEMU 启动 Linux 6.18 + 自定义根文件系统
qemu-system-x86_64 \ -M pc \ # 模拟PC平台 -kernel /data/linux-6.18.1/arch/x86_64/boot/bzImage \ # 自己编译的内核 -drive file=/data/busybox-1.36.1/rootfs.ext4,format=raw,if=virtio \ # 自定义根文件系统 -append "root=/dev/vda rw console=ttyS0 loglevel=8" \ # 根设备+串口输出 -m 1G \ # 分配1G内存 -nographic # 纯命令行模式

至此系统起来,可以做内核调试了。