mcpField
Q
qemu-for-kernel-development

qemu-for-kernel-development

github.com/mohitmishra786开发269331 次安装18 周前更新
代码仓库

关于 qemu-for-kernel-development

面向 Agent 的 QEMU 内核与驱动开发指南,介绍自定义内核构建、启动和测试。内容涵盖 virtio 设备、Buildroot 或 initramfs 根文件系统、模块测试循环及内核调试。

主要功能

  1. 01在 QEMU 中启动自定义内核
  2. 02配置 virtio 块设备和网络
  3. 03使用 Buildroot 构建根文件系统
  4. 04测试树外内核模块
  5. 05使用 GDB 调试内核

适用场景

  1. 01无需裸机测试内核补丁
  2. 02为 virtio 或仿真平台开发驱动
  3. 03在 CI 中运行内核启动冒烟测试
  4. 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、libvirt
  • skills/qemu/qemu-embedded-simulation — 裸机 MCU QEMU
  • skills/kernel/kernel-testing — KUnit、kselftest
  • skills/kernel-dev/device-tree — virt/平台的 DT
  • skills/debuggers/gdb — 远程 GDB 基础知识

评论

支持 Markdown