guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: boot multiple Gnu/Linux Distributions from one USB key


From: Tobias Geerinckx-Rice
Subject: Re: boot multiple Gnu/Linux Distributions from one USB key
Date: Tue, 12 Mar 2019 11:34:18 +0100

gnuforever (yay!),

gnuforever wrote:
I configured a usb stick to boot multiple Gnu/Linux Distributions by
following this tutorial:
https://community.linuxmint.com/tutorial/view/1846
It works for Tails, PureOS, Trisquel and Parabola

It works because these distributions have specific support for loopback booting, which is a non-trivial amount of work. You'll note the following in the GRUB menu entry for ‘pclinuxos’:

 linux … bootfromiso=/boot-isos/pclinuxos64-kde-2014.05.iso …

This tells the pclinuxos early user space (initramfs) that it should do some loop mounting and other magic before mounting the root partition. You'll also note that Debian-based distributions use a completely different magic word:

 linux … iso-scan/filename=$isofile …

because none of this is standardised or transparent. It's an explicit distro feature that needs to be implemented somewhere in the init code.

I am trying to add GuixSD.

Unfortunately, the Guix System doesn't implement anything like that yet.

For the menuentry, I always start from the grub.cfg embedded in the
iso file.
I add or remove options if needed.

For GuixSD, I came up with this configuration:
I used label instead of uuid.

    ## GUIXSD
    menuentry "GUIXSD - Gnu/Linux" {
set isofile="/boot-isos/guixsd-install-0.16.0.x86_64-linux.iso"
        loopback loop (hd0,1)$isofile
        search --label --set GUIXSD_IMAGE
        linux
(loop)/gnu/store/0zajbn9q39yva4l0zzrcshlll8qikzba-linux-libre-4.19.6/bzImage9
--root=GUIXSD_IMAGE
--system=(loop)/gnu/store/l4hgd4l7acrqwi3imav9akcvv4sbj85j-system
--load=(loop)/gnu/store/l4hgd4l7acrqwi3imav9akcvv4sbj85j-system/boot
        initrd
(loop)/gnu/store/9nqaksx40zh5d6cg5rim3f3spy56bfb9-raw-initrd/initrd.cpio.gz
    }

It doesn't work.

Well, it works up to and including booting the kernel, which is still pretty cool when you think about it :-)

Unfortunately, all off GRUB's loopback magic is local to GRUB. You can't use it to make virtual drives appear in other operating systems. (Well, maybe DOS, but that's more D than OS anyway.)

I get the following error message:

waiting for partition 'GUIXSD_IMAGE' to appear...

Once the kernel boots, Guix's early userspace only looks for real partititions. It won't peek inside random files to see if they contain a file system. And there's currently no way to tell it to.

I wonder if MAPPED-DEVICES could be a solution here, with a bit (heh) of extra code…

Is there any other way to configure multiple Gnu/Linux distros to boot
from one usb?

TL;DR: there is no one reliable way, only distro-specific support.

Kind regards,

T G-R



reply via email to

[Prev in Thread] Current Thread [Next in Thread]