Subject: bug#31380: grub fails to build on i686-linux

From: [email-masked] (Ludovic Courtès)
Date: Fri, 15 Jun 2018 18:45:16 +0200

[email-masked] (Ludovic Courtès) skribis:

> I wanted to try ‘guix system vm-image -s i686-linux’ on my x86_64 laptop
> to make sure GRUB runs fine.  Unfortunately, I stumbled upon another
> issue, which is that qemu-system-i386 built for i686-linux segfaults at
> startup:

I was able to work around it by disabling KVM:

diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 73d0191de..a675111d4 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -104,7 +104,8 @@ the #:references-graphs parameter of 'derivation'."
       ;; hardware virtualization to still use these commands.  KVM support is
       ;; still buggy on some ARM32 boards. Do not use it even if available.
       ,@(if (and (file-exists? "/dev/kvm")
-                 (not target-arm32?))
+                 (not target-arm32?)
+                 (not (string-suffix? "-i386" qemu)))
             '("-enable-kvm")
             '())

I suspect a KVM bug in Linux 4.17 though, because running the same
‘qemu-system-i386’ binary under strace works…  Perhaps worth applying
the patch above in the meantime, WDYT?

Anyway, with this patch I successfully run:

  guix system vm-image gnu/system/examples/bare-bones.tmpl -s i686-linux

and confirmed that the resulting image would boot through GRUB.

Ludo’.