Hacker News new | ask | show | jobs
by anderspitman 1321 days ago
I've been playing with QEMU a lot lately. Early on I encountered a fairly fundamental problem: how do you pass arbitrary data to a booting Linux system? I ended up discovering fw_cfg[0], but it feels pretty janky for this purpose and didn't seem to work for larger files like executables. Anyone aware of a better way?

[0]: https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-f...

3 comments

This isn't a perfect approach, but I've had pretty decent results with QEMU's virtfs for passing data into a QEMU VM (assuming your guest kernel is compiled with support for it).

QEMU's -virtfs option maps a folder on your host to a virtual filesystem. Inside your guest, you can mount the filesystem (assuming your kernel has CONFIG_NET_9P and CONFIG_NET_9P_VIRTIO enabled) and use it however you want.

Unfortunately I need to support Windows hosts. I believe there's a patch in the works to add support, but it hasn't landed yet.
You can hook up the virtual serial port to stdin/stdout of the host by passing `-serial stdio` or `-nographic` in the QEMU args. You can then read from/write to the serial port in the VM.
Update the grub config directly. You can probably mount /boot from the outside?