path: root/hurd/running/qemu.mdwn
diff options
authorThomas Schwinge <>2014-03-12 00:05:16 +0100
committerThomas Schwinge <>2014-03-12 00:05:16 +0100
commitefdbd8e0de4d781d53ffb7a5833220c37739a568 (patch)
tree6ab99d7c79841f1d46fc1154de70e331591d5e0c /hurd/running/qemu.mdwn
parente74a8ccb8c2cf082e82f3acc797dce3c77649488 (diff)
QEMU multiboot.
Diffstat (limited to 'hurd/running/qemu.mdwn')
1 files changed, 21 insertions, 13 deletions
diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn
index 8c3209d..5a13a65 100644
--- a/hurd/running/qemu.mdwn
+++ b/hurd/running/qemu.mdwn
@@ -368,25 +368,33 @@ Once you have logged in as `root` run the `pfinet` translator with values that a
That should do it! Do not forget to edit/update `/etc/resolv.conf` to get DNS working.
-# QEMU Multiboot
+# <a name="multiboot">Multiboot</a>
-See [[open_issues/debugging_gnumach_startup_qemu_gdb#multiboot]].
See "Linux/Multiboot boot specific" section on QEMU manpage.
-Get for instance cdimage boot components
+Get the multiboot modules. Either extract them from the disk image, or,
- $ wget{gnumach.gz,initrd.gz,ext2fs.static,}
+ $ wget{gnumach.gz,ext2fs.static,}
-gnumach needs to be uncompressed
+Generally, these files need to correspond to the ones in the disk image, so
+don't forget to keep them up to date.
+The kernel image needs to be uncompressed (`gunzip gnumach.gz`), as otherwise
+you'll get told: *qemu: linux kernel too old to load a ram disk*.
+ $ qemu [...] \
+ > --kernel gnumach \
+ > --initrd \
+ > 'ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed device:hd0s1 $(task-create) $(task-resume)',\
+ > ' /hurd/exec $(exec-task=task-create)'
+Note that, contrary to [[GRUB]]'s configuration file, you don't specify
+"`argv[0]`" here, and it's fortunate that neither ext2fs nor exec need a comma
+on their command line...
+You can also use `--append [...]`, which will show up in `/proc/cmdline`.
- $ gunzip gnumach.gz
- $ sudo qemu-system-i386 -m 512 \
- --kernel gnumach \
- --initrd "\
- initrd.gz \$(ramdisk-create),\
- ext2fs.static --multiboot-command-line=\${kernel-command-line} --host-priv-port=\${host-port} --device-master-port=\${device-port} --exec-server-task=\${exec-task} -T typed gunzip:device:rd0 \$(task-create) \$(task-resume),\
- /hurd/exec \$(exec-task=task-create)" \
- <other_qemu_options>
# `qemu: fatal: Trying to execute code outside RAM or ROM at 0x000000010010001e`