From efdbd8e0de4d781d53ffb7a5833220c37739a568 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 12 Mar 2014 00:05:16 +0100 Subject: QEMU multiboot. --- open_issues/nightly_builds_deb_packages.mdwn | 241 ++------------------------- 1 file changed, 13 insertions(+), 228 deletions(-) (limited to 'open_issues/nightly_builds_deb_packages.mdwn') diff --git a/open_issues/nightly_builds_deb_packages.mdwn b/open_issues/nightly_builds_deb_packages.mdwn index 0992b0f3..cef16734 100644 --- a/open_issues/nightly_builds_deb_packages.mdwn +++ b/open_issues/nightly_builds_deb_packages.mdwn @@ -67,16 +67,16 @@ See also [[nightly_builds]]. there has been talk here the other day about using qemus multiboot capabilities to directly boot the hurd -[[debugging_gnumach_startup_qemu_gdb]], *Multiboot* - - i always wanted to try that out - the jenkins rules to test the install uses --kernel, --initrd and - --append in qemu to specify the preseed file. without a similar method - to boot hurd, it will be hard to automate the test. rewriting the iso - might be an option, but not a very nice one. - i believe that it is possible to use those options to boot a - hurd - i'll report back to you +[[hurd/running/qemu#multiboot]]. + +For d-i purposes, you'll additionally need: + + $ wget http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/current/initrd.gz + +..., and to the `--initrd` option prepend `'initrd.gz $(ramdisk-create)',` +before the `ext2fs.static`, and refer the latter to `gunzip:device:rd0` instead +of `device:hd0s1`. + I tried adding an url= option to grub when booting the installer, but it seem to be ignored. perhaps the preseed udeb is missing, or the network support was @@ -84,8 +84,6 @@ See also [[nightly_builds]]. uh, i don't know about that stuff, youpi creates the d-i images ok. seem to me that the d-i images do not support preseeding at the moment. - pere: when i try to use qemus multiboot support to boot the - hurd, qemu crashes :/ youpi: ^ did you succeed? if so, can you share how? teythoon: nope, I concluded it didn't work, and left it to other to fix. :) @@ -112,158 +110,8 @@ See also [[nightly_builds]]. #debian-qa will understand. :) -## IRC, OFTC, #debian-hurd, 2014-02-27 - - almost managed to multiboot - it gets stuck at "start ext2fs.static" - any idea? - multiboot what ? - gg0: that sound like the race blocking boot some times. - no - that'd print more - teythoon: booting hurd with qemu without grub - oh cool - can you paste your qemu arguments somewhere ? - probably ext2fs.static got passed a wrong commandline? - they are the grub ones but gnumach needs to be uncompressed - otherwise qemu complains saying linux kernel is too old - yes, i got past that one - but my qemu keeps crashing - can you please paste the command you used ? - "qemu: linux kernel too old to load a ram disk" - well, my fun level would really decrease :) - if you pasted the commands you used? - gg0: if it talks about "linux", it's not actually using multiboot - azeem: yep :) - youpi: i think it just can't distinguish, btw bt uncompressing it, it - boots - gg0: well, "any idea?" means you are requesting help - but without pasting the line, we can't divine what can be going - wrong - gg0: well, if it can't see that gnumach *can* handle multiboot - modules, qemu is very broken - modules are all loaded, multiboot options seems working well - ie. -initrd "file1 arg=foo,file2" - arg=foo? - fwiw, i tried http://paste.debian.net/84408/ - kvm -m 256 \ - -kernel gnumach \ - -append 'gnumach root=device:hd0s1' \ - -initrd "0.master/hurd/ext2fs.static ext2fs \ - --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)',\ - 0.master/lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'" \ - -drive 'file=/media/pool/hurd-tests/image.qcow2,cache=writeback' -snapshot - http://postimg.org/image/esywbywh9/ - azeem: pasted from man qemu - here screenshot ^ - is this the stock debian ext2fs.static ? - gg0: are the ext2fs.static arguments cutoff at - "-exec-server-[...]"? - teythoon: yes, everything from last CD image - which you copied to the host ? - azeem: as you can see just below --exec-server-task=3 - teythoon: loop mounted, like jenkins does - ok - the early hurd bootstrap code is very delicate - and often, the bootstrap just hangs with no indication why - we won't even notice the rootfs or the exec server crashing for - example - replace gnumach, initrd.gz, ext2fs.static, ld.so.1 paths with yours: - --kernel gnumach --initrd "initrd.gz initrd - \$(ramdisk-create),ext2fs.static ext2fs - --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),ld.so.1 exec /hurd/exec - \$(exec-task=task-create)" - you are missing the kernel command line, no? - teythoon: afaiu it takes it at runtime from itself if any - if anyone passes --append - in pasted screenshot i pass desktop=lxde - need to pass something like gunzip:device:rd0? on cd image it doesn't - pass anything - no, it's already passed to ext2fs in the multiboot command line - ok - -T typed - i do not see any significant difference between your arguments - and mine - for me, kvm/qemu still crashes - % kvm --version - QEMU emulator version 1.1.2 (qemu-kvm-1.1.2+dfsg-6, Debian), - Copyright (c) 2003-2008 Fabrice Bellard - teythoon: i don't have any "'" :) and too many gnumach, one in append - too - yes - but that shouldn't cause kvm to crash - oh - here QEMU emulator version 1.7.0 (Debian 1.7.0+dfsg-3) - jessie on amd64 - seems quite older - indeed - wheezy vs current jessie - yes - teythoon: qemu 1.7.0 is on wheezy-backports - anyone tried to reproduce it? - - -## IRC, freenode, #hurd, 2014-02-27 - - options to boot hurd with qemu multiboot: - 17:54 < gg0> replace gnumach, initrd.gz, ext2fs.static, ld.so.1 paths - with yours: - 17:54 < gg0> --kernel gnumach --initrd "initrd.gz initrd - \$(ramdisk-create),ext2fs.static ext2fs - --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),ld.so.1 exec /hurd/exec - \$(exec-task=task-create)" - gnumach needs to be uncompressed - this gets stuck at "start ext2fs.static:" - indeed, same for me - i strongly suspect qemu multiboot support to be incomplete - i couldn't make it work well enough with x15 either - if gnumach is compressed, "qemu: linux kernel too old to load a ram - disk" - i think that's a grub specific feature - - -## IRC, freenode, #hurd, 2014-02-28 - - start ext2fs.static2: ext2fs: device:rd0: panic: get_hypermetadata: - bad magic number 0xd7f0 (should be 0xef53) - \o/ it boots - gg0: what was wrong ? - --kernel /path/to/uncompressed-gnumach --initrd "/path/to/initrd.gz - \$(ramdisk-create),/path/to/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),/path/to/ld.so.1 /hurd/exec - \$(exec-task=task-create)" - gg0: uh, using absolute paths fixes this ? - teythoon: not necessary, just to be clearer - solved by removing initrd between initrd.gz and ramdisk-create, and - ext2fs between ext2fs.static and multiboot-command-line - also exec between ld.so.1 and /hurd/exec - gg0: oh, i see - - ## IRC, OFTC, #debian-hurd, 2014-02-28 - --kernel /path/to/uncompressed-gnumach --initrd "/path/to/initrd.gz - \$(ramdisk-create),/path/to/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),/path/to/ld.so.1 /hurd/exec - \$(exec-task=task-create)" - multiboot works - cool. gg0: are you able to feed the installer one of the preseed files at ? though jenking translates double quotes, need to escape the world @@ -271,7 +119,6 @@ See also [[nightly_builds]]. pere: i'm working on that, stuck at working around that mandatory double quote *initrd double quote - gg0: could you paste your command line on the hurd wiki? ok got a g-i-installation_debian_sid_daily_hurd_lxde able to boot let's provide a preseed shouldn't there be some info/debug consoles from tty 2 to 4? @@ -321,10 +168,6 @@ See also [[nightly_builds]]. ## IRC, OFTC, #debian-hurd, 2014-03-02 - teythoon: curiosity, correct qemu multiboot options still make old - qemu crashing? - gg0: no idea, i'll try it later - youpi: any chance to have monthly/weekly (daily would be too much i guess) isos/images? can i help somehow? I am wondering why having that @@ -619,31 +462,11 @@ See also [[nightly_builds]]. possibly oh wait here qemu multiboot that shouldn't have any impact - did you leave the command line somewhere on the wiki so I can try - with it, just to be sure? - - http://darnassus.sceen.net/~hurd-web/hurd/running/qemu/#QEMU_Multiboot 5€ on qemu multiboot as the culprit you should also see it sometimes double-mounts /dev/hd0s1 under /target and /target/./media/cdrom(!) but that's due to new apt it in-targets (= installs under /target) - gg0: rather use the gnumach, ld.so and ext2fs.static from the ISO - image you are booting - especially for ld.so, which has to be the same as the libc - installed in the initrd - ah, you're getting the initrd there too - well, really use the same as the ISO - i already do - ah, ok, so the wiki example is just with current - but the wiki example doesn't use -cdrom to provide the ISO ? - no it doesn't even mention you could also use a cdrom - it just shows how to use qemu multiboot options - it seems one have to avoid any blanks in the multiboot option - notably before file names - well, actually it works but it's rather incomplete - well, it shows how to boot the installer - not how to boot an installed system - removed spaces, added option + any luck reproducing mtab issue? still not @@ -781,7 +604,7 @@ See also [[nightly_builds]]. Resource lost didn't manage to reproduce so far environment is pretty the same: booting with qemu multiboot - http://darnassus.sceen.net/~hurd-web/hurd/running/qemu/#QEMU_Multiboot + http://darnassus.sceen.net/~hurd-web/hurd/running/qemu/#multiboot so root on initrd + chroot on real disk what's weird is that issue vanishes by removing console=com0 from -append options @@ -820,19 +643,14 @@ See also [[nightly_builds]]. zero everytime first thing to do when developping is first take the time to find ways to work efficiently - i'd want to try multiboot with teythoon's gnumach/hurd but boot gets - stuck with old initrd unfortunately I had to apply some patches first in d-i because isc-dhcp doens't work -> use the debian-ports version - so i could simply copying whole /hurd dir to new initrd - -ing then in d-i to automatically enable the debian-ports mirror and last in the debian-cd to include debian-ports-archive-keyring - you'd also need to copy the libs + anything missing here? http://people.debian.org/~sthibault/hurd-i386/installer/README-d-i - libc0.3 on initrd is still 2.17 mini.iso doesn't like any mirror "mirror does not support the specified release" something wrong/missing in my rebuilt @@ -862,22 +680,6 @@ See also [[nightly_builds]]. ## IRC, freenode, #hurd, 2014-03-09 - http://postimg.org/image/oca8ormaj/ - with teythoon's repo too ^ - - -## IRC, OFTC, #debian-hurd, 2014-03-09 - - ok i'm out of tests, i get Resource lost with teythoon's gnumach/hurd - packages in initrd too - http://postimg.org/image/oca8ormaj/ - thread storms, dead locks, resource lost - i find assonance - - -## IRC, freenode, #hurd, 2014-03-09 - - gg0: strange teythoon: shouldn't there be a patch which shows pid instead of task? 20:43 < teythoon> task /hurd/procfs(19) O deallocating an invalid port 1049744, most probably a bug. @@ -939,23 +741,6 @@ See also [[nightly_builds]]. #1 SMP Debian 3.11.10-1 (2013-12-04) -## IRC, freenode, #hurd, 2014-03-10 - - teythoon: err, i had unpacked your packages to initrd but - gnumach/ext2fs.static i was using for multiboot were debian ones - now with yours by reading system /proc/mounts (not chroot one) i get - read error: (ipc/mig) bad request message ID - mixing up things - gg0: yes, that is to be expected. the message ids for the - relevant rpcs changed "recently". i'm really sorry about that. - but in general, you should use the hurd components from one - source together - gg0: yes, that is to be expected. the message ids for the - relevant rpcs changed "recently". i'm really sorry about that. - but in general, you should use the hurd components from one - source together - - ## IRC, OFTC, #debian-hurd, 2014-03-10 tschwinge: i just meant Debian Jenkins provides (hopefully for hurd -- cgit v1.2.3