关于 qemu-for-kernel-development
面向 Agent 的 QEMU 内核与驱动开发指南,介绍自定义内核构建、启动和测试。内容涵盖 virtio 设备、Buildroot 或 initramfs 根文件系统、模块测试循环及内核调试。
主要功能
- 01在 QEMU 中启动自定义内核
- 02配置 virtio 块设备和网络
- 03使用 Buildroot 构建根文件系统
- 04测试树外内核模块
- 05使用 GDB 调试内核
适用场景
- 01无需裸机测试内核补丁
- 02为 virtio 或仿真平台开发驱动
- 03在 CI 中运行内核启动冒烟测试
- 04通过 9p 共享主机源代码树
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mohitmishra786/ low-level-dev-skills --skill qemu-for-kernel-development安装后在 Claude Code 中输入/qemu-for-kernel-development确认已加载。
详细介绍
用于内核开发的 QEMU
用途
指导 Agent 使用基于 QEMU 的内核和驱动开发工作流:构建/启动自定义内核、连接 virtio 块设备/网络、使用 Buildroot 或精简 initramfs,以及快速迭代测试模块——专注于内核开发,而非通用的 skills/virtualization/qemu-kvm。
适用场景
- 无需裸机即可测试内核补丁
- 针对 virtio 或模拟的 DT 平台开发驱动
- CI 内核启动冒烟测试
- 使用 NFS 或 9p 根文件系统加快编辑-编译-测试
工作流
1. 最简直接启动内核(arm64 virt)
qemu-system-aarch64 \
-machine virt -cpu cortex-a57 -smp 4 -m 2G \
-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 -m 4G -smp 4 \
-kernel arch/x86/boot/bzImage \
-append "console=ttyS0 root=/dev/vda rw" \
-drive file=rootfs.img,format=raw,if=virtio \
-nographic
2. Buildroot 根文件系统循环
cd buildroot
make qemu_aarch64_virt_defconfig
make
# output/images/Image, rootfs.ext4
集成自定义内核:设置 BR2_LINUX_KERNEL_CUSTOM_VERSION 或指定外部树。
3. 测试树外模块
# on host — cross build
make -C $KERNEL_SRC M=$PWD modules
# in guest or via initramfs
insmod mydriver.ko
dmesg | tail
使用 9p 共享目录:
-fsdev local,id=dev,path=$PWD,security_model=none \
-device virtio-9p-pci,fsdev=dev,mount_tag=hostshare
# guest: mount -t 9p -o trans=virtio hostshare /mnt
4. 内核的 GDB 存根
qemu-system-aarch64 ... -s -S
gdb vmlinux
(gdb) target remote :1234
(gdb) break start_kernel
使用 CONFIG_KGDB 在启动后实时调试内核。
5. 设备树覆盖
qemu-system-aarch64 -machine virt -dtb myboard.dtb ...
virt 机器提供 virtio 设备;平台驱动可以针对 QEMU 的 -device 模型。
6. Agent 使用方法
/qemu-for-kernel-development Boot arm64 virt with custom Image and virtio rootfs for driver CI
常见问题
| 现象 | 原因 | 修复方法 |
|---|---|---|
| 内核 panic,找不到根文件系统 | root= 错误 | virtio 块设备使用 root=/dev/vda |
| 没有控制台输出 | 命令行缺少 console= | console=ttyAMA0 / ttyS0 |
| 模块 vermagic 错误 | 针对错误的内核树构建 | 使用与启动镜像相同的 KERNEL_SRC |
| 未使用 KVM 时速度慢 | TCG 仿真 | 在 x86 主机上使用 -enable-kvm |
| DTB 不匹配 | 机器类型错误 | 使用内核 make dtbs 生成的 virt DTB |
相关技能
skills/virtualization/qemu-kvm— KVM、VFIO、libvirtskills/qemu/qemu-embedded-simulation— 裸机 MCU QEMUskills/kernel/kernel-testing— KUnit、kselftestskills/kernel-dev/device-tree— virt/平台的 DTskills/debuggers/gdb— 远程 GDB 基础知识
评论
支持 Markdown