mohitmishra786/low-level-dev-skills

qemu-for-kernel-development

QEMU kernel development skill for driver and kernel testing.

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

QEMU for Kernel Development

Purpose

Guide agents through QEMU-based kernel and driver development workflows: building/booting custom kernels, attaching virtio block/network, using Buildroot or minimal initramfs, and rapid module test cycles — focused on kernel dev vs general skills/virtualization/qemu-kvm.

When to Use

  • Test kernel patch without bare metal
  • Develop driver against virtio or emulated DT platform
  • CI kernel boot smoke test
  • NFS or 9p root for fast edit-compile-test

Workflow

1. Minimal direct kernel boot (arm64 virt)

bash
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:

bash
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 rootfs loop

bash
cd buildroot
make qemu_aarch64_virt_defconfig
make
# output/images/Image, rootfs.ext4

Integrate custom kernel: set BR2_LINUX_KERNEL_CUSTOM_VERSION or external tree.

3. Out-of-tree module test

bash
# on host — cross build
make -C $KERNEL_SRC M=$PWD modules
# in guest or via initramfs
insmod mydriver.ko
dmesg | tail

Share tree with 9p:

bash
-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 stub for kernel

bash
qemu-system-aarch64 ... -s -S
gdb vmlinux
(gdb) target remote :1234
(gdb) break start_kernel

Use CONFIG_KGDB for live kernel debugging after boot.

5. Device tree overrides

bash
qemu-system-aarch64 -machine virt -dtb myboard.dtb ...

virt machine provides virtio devices; platform drivers can target QEMU -device models.

6. Agent usage

/qemu-for-kernel-development Boot arm64 virt with custom Image and virtio rootfs for driver CI

Common Problems

SymptomCauseFix
Kernel panic no rootWrong root=root=/dev/vda for virtio blk
No console outputMissing console= on cmdlineconsole=ttyAMA0 / ttyS0
Module vermagic errorBuilt against wrong treeSame KERNEL_SRC as booted image
Slow without KVMTCG emulation-enable-kvm on x86 host
DTB mismatchWrong machineUse virt DTB from kernel make dtbs

Related Skills

  • skills/virtualization/qemu-kvm — KVM, VFIO, libvirt
  • skills/qemu/qemu-embedded-simulation — bare-metal MCU QEMU
  • skills/kernel/kernel-testing — KUnit, kselftest
  • skills/kernel-dev/device-tree — DT for virt/platform
  • skills/debuggers/gdb — remote GDB basics
du même dépôt

Autres Skills

Tous les Skills
mohitmishra786
Communauté

static-analysis

Static analysis skill for C/C++ codebases. Use when hardening code quality, triaging noisy builds, running clang-tidy, cppcheck, or scan-build, interpreting check categories, suppressing false positives, or integrating static analysis into CI. Activates on queries about clang-tidy checks, cppcheck, scan-build, compilecommands.json, code hardening, or static analysis warnings.

installations
1
GitHub Stars
263
Mis à jour
27 juin
mohitmishra786
Communauté

assembly-x86

x86-64 assembly skill for reading, writing, and debugging assembly code. Use when reading GCC/Clang assembly output, writing inline asm in C/C++, understanding the System V AMD64 ABI calling convention, or debugging register and stack state. Activates on queries about x86-64 assembly, AT&T vs Intel syntax, inline asm, calling conventions, SIMD intrinsics, or reading disassembly output from objdump or GDB.

installations
1
GitHub Stars
258
Mis à jour
27 juin
mohitmishra786
Communauté

cpp-modules

C++20 modules skill for modern C++ projects. Use when working with named modules, module partitions, header units, CMake MODULESOURCES, Clang -fmodules-ts, BMI caching issues, or migrating from headers to modules. Activates on queries about C++20 modules, import statements, module interface units, header units, or BMI files.

installations
1
GitHub Stars
258
Mis à jour
27 juin
mohitmishra786
Communauté

gcc

GCC compiler skill for C/C++ projects. Use when selecting optimization levels, warning flags, debug builds, LTO, sanitizer instrumentation, or diagnosing compilation errors with GCC. Covers flag selection for debug vs release, ABI concerns, preprocessor macros, profile-guided optimization, and integration with build systems. Activates on queries about gcc flags, compilation errors, performance tuning, warning suppression, or cross-standard compilation.

installations
1
GitHub Stars
258
Mis à jour
27 juin