Subject: bug#41541: merge wip-hurd-vm

From: Jan Nieuwenhuizen <[email-masked]>
Date: Tue, 26 May 2020 16:21:16 +0200

Hello!

TL; DR: I propose to rebase on master, squash the squash!es, collapse
the Reverts, hard reset and => review+finish the rest, merge!

So...

After about two months in the working, current wip-hurd-vm

    commit 6a284069188f59553f27760614ffb604b49ec62b
    squash! linux-boot: Update 'make-hurd-device-nodes'.

is finally in a state where it supports building a VM image for the Hurd
in three ways.  The April-1st hack^H^H^H^method

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix build -f gnu/system/hurd.scm 
--8<---------------cut here---------------end--------------->8---

  => /gnu/store/f1vzgwgxjacn1rd9cpnmpgbv8c5k3rbx-qemu-image

still produces a bootable VM, but fails during startup; lacking
/boot/activation.  Starting the Shepherd from RC was introduced, which
broke this.  We could spend some effort to resurrect it, but...

It was a fun and amazing feat but I think we should remove it before the
merge.  I don't think we realised how sharp/smart this hack was,
navigating cleanly across and through cross-build and qemu-image bugs.

The next method is by using

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system vm-image --no-grafts --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl
--8<---------------cut here---------------end--------------->8---

  => /gnu/store/8pr6qnwl4b5kria0j0hxscv66izc8zpi-qemu-image

TODO: address the no-grafts (See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=41350#71)

This produces a functional VM, including openssh server.  Closures
haven't been registered, though, so adding and starting a guix-daemon
may not do what we want yet.

And lastly the new, preferred method that we finally got working
yesterday

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system disk-image --no-grafts --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl
--8<---------------cut here---------------end--------------->8---

  => /gnu/store/qyq2pj175skkc8kffy5nzfyb47sk3kls-disk-image

It should be trivial to add a guix-daemon and do some real work here.

Mattieu is looking into cleaning up of

--8<---------------cut here---------------start------------->8---
b605a36031 * origin/wip-hurd-vm WIP hurd-directives
--8<---------------cut here---------------end--------------->8---

and we also already had a small brain storming on IRC about

--8<---------------cut here---------------start------------->8---
dd62341283 * bootloader: grub: Add support for '<hurd-menu-entry>'.
ec1dfae81b * system: Add 'hurd' field to <boot-parameters>.
43df8616f6 * bootloader: Add `<hurd-menu-entry>'.
--8<---------------cut here---------------end--------------->8---

I guess that before merging, we will want to rewrite this bit, alongside
these lines, nicely summarized as

--8<---------------cut here---------------start------------->8---
<civodul> so to sum up, the following fields would be added to <menu-entry>:
          kernel, multiboot-modules
<civodul> janneke: it's not GRUB-specific though, in the sense that GRUB
          closely matches the underlying abstractions
<civodul> that is: "multiboot kernel + modules", or "linux + initrd", etc.
<civodul> and yes, <boot-parameters> needs to be extended to reflect these
          addition
--8<---------------cut here---------------end--------------->8---

Greetings,
janneke

PS: I'm starting the VMs like so

    guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512\
     -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222\
     -snapshot -hda <the-image>

-- 
Jan Nieuwenhuizen <[email-masked]> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com