mohitmishra786/low-level-dev-skills

qemu-for-kernel-development

QEMU kernel development skill for driver and kernel testing.

Ver código-fonte
Documento original do Skill

Renderizado do repositório de origem, preservando títulos, exemplos, código, tabelas, links e imagens.

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
do mesmo repositório

Mais Skills

Todos os Skills
mohitmishra786
Comunidade

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.

instalações
1
GitHub Stars
263
Atualizado
27 de jun.
mohitmishra786
Comunidade

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.

instalações
1
GitHub Stars
258
Atualizado
27 de jun.
mohitmishra786
Comunidade

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.

instalações
1
GitHub Stars
258
Atualizado
27 de jun.
mohitmishra786
Comunidade

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.

instalações
1
GitHub Stars
258
Atualizado
27 de jun.