mcpField
Q
qemu-for-kernel-development

qemu-for-kernel-development

github.com/mohitmishra786開発269331 回インストール18 週間前に更新
リポジトリ

qemu-for-kernel-development について

QEMUを使ったカーネルとドライバー開発を案内するエージェント向けスキルです。カスタムカーネルの構築・起動、virtio、Buildrootやinitramfs、モジュールテスト、デバッグを扱います。

主な機能

  1. 01QEMUでのカスタムカーネル起動
  2. 02virtioブロックデバイスとネットワークの設定
  3. 03Buildrootによるルートファイルシステム構築
  4. 04ツリー外カーネルモジュールのテスト
  5. 05GDBによるカーネルデバッグ

活用シーン

  1. 01ベアメタルを使わないカーネルパッチのテスト
  2. 02virtioやエミュレート環境向けドライバー開発
  3. 03CIでのカーネル起動スモークテスト
  4. 049pによるホストソースツリーの共有

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill qemu-for-kernel-development

インストール後、Claude Code で/qemu-for-kernel-developmentを入力して読み込まれたか確認します。

詳細

カーネル開発向け QEMU

目的

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. エージェントの使用
/qemu-for-kernel-development Boot arm64 virt with custom Image and virtio rootfs for driver CI

よくある問題

症状原因対処方法
ルートファイルシステムがなく、カーネルパニックが発生するroot= の指定が誤っているvirtio blk の場合は 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 の基礎

コメント