minimal kernel config for qemu/malta
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
Date: 2017-10-19 21:32:17
Hey folks,
I've got some CI infrastructure for WireGuard sitting on
build.wireguard.com , where I build new kernels for different
architectures. This works well for x86{_64) and arm(64), but I'm
having trouble getting it rolling on qemu/malta, and none of my usual
tricks seem to be working. (By tricks of course I mean enabling a
bunch of random stuff until it works, and then bisecting options until
I find the missing one...)
The magic lives here:
https://git.zx2c4.com/WireGuard/tree/src/tests/qemu
Essentially what's happening is that this config file:
https://git.zx2c4.com/WireGuard/tree/src/tests/qemu/kernel.config
is prepended with this set of MIPS-specific directives:
CONFIG_CPU_MIPS32_R2=y
CONFIG_MIPS_MALTA=y
And then is combined into the final .config using:
$ make allnoconfig
$ scripts/kconfig/merge_config.sh -n .config kernel.config.from.above
Finally, qemu is launched with:
qemu-system-mips \
-nodefaults \
-nographic \
-cpu 24Kf -machine malta \
-smp 2 \
-m 192M \
-object rng-random,id=rng0,filename=/dev/urandom \
-device virtio-rng-pci,rng=rng0 \
-device virtio-serial,max_ports=2 \
-chardev stdio,id=stdio \
-device virtconsole,chardev=stdio \
-chardev file,id=status,path=./result \
-device virtserialport,chardev=status \
-no-reboot \
-monitor none \
-kernel ./kernel-src/vmlinux
While this general procedure works flawlessly for intel and arm, with
mips, it just seems to hang, with no output, and I can't seem to find
which option I'm missing.
As you might have seen above, I'm mostly concerned with finding the
minimal set of options required to _generate_ a minimal full config.
However, if it's easier for you to view the whole config at once after
the merge steps above, it lives here: http://ix.io/Bud
If anybody knows what I'm missing to launch a simple malta/virtio
kernel on qemu, please do let me know.
Thanks,
Jason