用途:该技能引导代理完成基于 QEMU 的内核与驱动开发流程,包括构建和启动自定义内核、挂载 virtio 块设备与网络、使用 Buildroot 或最小 initramfs,以及快速迭代测试内核模块。适用于无裸机环境下测试内核补丁、针对 virtio 或模拟设备树平台开发驱动、CI 内核启动冒烟测试,以及通过 NFS 或 9p 根文件系统加速编辑-编译-测试循环。
主要能力与用法:
- 直接启动内核(arm64 virt):使用 qemu-system-aarch64 配合 -machine virt、-cpu cortex-a57、-kernel arch/arm64/boot/Image、-append "console=ttyAMA0 root=/dev/vda rw"、-drive if=virtio,file=rootfs.ext4,format=raw、-netdev user,id=net0 -device virtio-net-device,netdev=net0、-nographic。x86_64 类似,使用 qemu-system-x86_64 -enable-kvm 与 console=ttyS0。
- Buildroot 根文件系统:在 buildroot 中执行 make qemu_aarch64_virt_defconfig 与 make,产物为 output/images/Image 和 rootfs.ext4;可通过 BR2_LINUX_KERNEL_CUSTOM_VERSION 或外部树集成自定义内核。
- 树外模块测试:主机交叉编译 make -C $KERNEL_SRC M=$PWD modules,客户机内 insmod mydriver.ko 并用 dmesg | tail 查看;可用 9p 共享目录:-fsdev local,id=dev,path=$PWD,security_model=none -device virtio-9p-pci,fsdev=dev,mount_tag=hostshare,客户机 mount -t 9p -o trans=virtio hostshare /mnt。
- GDB 调试:加 -s -S 启动,gdb vmlinux 后 target remote :1234,可 break start_kernel;启动后可用 CONFIG_KGDB 进行实时调试。
- 设备树覆盖:通过 -dtb myboard.dtb 指定;virt 机器提供 virtio 设备,平台驱动可针对 QEMU -device 模型。
- 代理调用示例:/qemu-for-kernel-development Boot arm64 virt with custom Image and virtio rootfs for driver CI。
常见问题:内核 panic 无根文件系统时检查 root= 是否为 /dev/vda;无控制台输出时补充 console=;模块 vermagic 错误需保证 KERNEL_SRC 与启动镜像一致;无 KVM 时速度慢,x86 主机可加 -enable-kvm;DTB 不匹配需使用 virt 机器对应的 DTB。
限制:资料未提供收费、平台支持范围或性能数据;具体命令参数需按实际内核版本与架构调整。