[gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Grant Edwards
On 2024-02-23, Mark Knecht  wrote:

> The only other idea I had was to install  to a different
> disk and then use something like Clonezilla to move it to the partition
> you want it in on your system.
>
> While I suspect you were being sarcastic I do not think any solution
> that involves a 'pocketful of USB 3 thumb drives' will be satisfying.

Actually (assuming the thumb drives are relaible) it probably would
work fine. That's more-or-less the typical solution that my colleagues
use -- though it's a drawer full of hard drives in caddies instead of
USB thumb drives. Back in the day when we supported a couple versions
of SCO, various BSDs, Novell Netware and Solaris, it required a fait
bit of drawer space.

For now, I guess I'll stick with the scheme I'm using but switch from
DOS disklabel and gap to GPT disklabel and BIOS boot partition. It
seems ugly, but it's managable with the help of a few shell scripts
that are stored in the parition that belongs to the master copy of
grub.






Re: [gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Mark Knecht
On Fri, Feb 23, 2024 at 12:52 PM Grant Edwards 
wrote:
>
> On 2024-02-23, Mark Knecht  wrote:
> > On Fri, Feb 23, 2024 at 11:59 AM Grant Edwards <
grant.b.edwa...@gmail.com>
> > wrote:
> >>
> >> The simple solution is to give up on multi-booting a dozen different
> >> distros on a single disk and buy a pocketful of USB 3 thumb drives.
> >>
> >
> > Given performance does drop a bit and there can be issues with
allocating
> > hardware, why not use Virtualbox which allows you to run both your base
> > distro and then as many of the others as your hardware can handle as
VMs?
>
> The machine is used for testing PCI and PCI-express boards and their
> drivers. I don't really trust PCI passthrough (especially when it
> comes to interrupt handling) enought to do such testing in a
> VM. IFAICT, it's very rare for customers to use VMs. If customers do
> start to use VMs, then we'll have to test with VMs also.
>
In that specific use case I completely agree.

The only other idea I had was to install  to a different
disk and then use something like Clonezilla to move it to the partition
you want it in on your system.

While I suspect you were being sarcastic I do not think any solution
that involves a 'pocketful of USB 3 thumb drives' will be satisfying.

Wishing you luck,
Mark


[gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Grant Edwards
On 2024-02-23, Mark Knecht  wrote:
> On Fri, Feb 23, 2024 at 11:59 AM Grant Edwards 
> wrote:
>>
>> The simple solution is to give up on multi-booting a dozen different
>> distros on a single disk and buy a pocketful of USB 3 thumb drives.
>>
>
> Given performance does drop a bit and there can be issues with allocating
> hardware, why not use Virtualbox which allows you to run both your base
> distro and then as many of the others as your hardware can handle as VMs?

The machine is used for testing PCI and PCI-express boards and their
drivers. I don't really trust PCI passthrough (especially when it
comes to interrupt handling) enought to do such testing in a
VM. IFAICT, it's very rare for customers to use VMs. If customers do
start to use VMs, then we'll have to test with VMs also.

--
Grant






Re: [gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Mark Knecht
On Fri, Feb 23, 2024 at 11:59 AM Grant Edwards 
wrote:
>
>
> The simple solution is to give up on multi-booting a dozen different
> distros on a single disk and buy a pocketful of USB 3 thumb drives.
>

Given performance does drop a bit and there can be issues with allocating
hardware, why not use Virtualbox which allows you to run both your base
distro and then as many of the others as your hardware can handle as VMs?

This is how I go about investigating a new distro before committing to it.


[gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Grant Edwards
On 2024-02-23, Wols Lists  wrote:
> On 23/02/2024 00:28, Grant Edwards wrote:

>> In my experience, 's bootloader does not boot other
>> installations by calling other bootloaders. It does so by rummaging
>> through all of the other partitions looking for kernel images,
>> intird files, grub.cfg files, etc.  It then adds menu entries to
>> the config file for 's bootloader which, when selected,
>> directly load the kernel image and initrd from those other
>> partitions. Sometimes, it works -- at least until those other
>> installations get updated without the knowlege of the distro that
>> currently "owns" the MBR's bootloader config. Then it stops working
>> until you tell that bootloader to re-do it's rummaging about
>> routine.
>
> IME distros that try that (SUSE, anyone!) generally get confused as
> to which kernel belongs to which root partition.
>
> Hence needing to boot with a live distro to edit the resulting mess
> and get the system to actually come up without crashing ...

IIRC, all of the big distros used to do that. It didn't work very
well, but at least it took a really long time.

However, I read recently that Ubuntu had disabled the os-prober by
default in 22.04.  Disabling it was always one of the first things I
did after installing a new distro.

The simple solution is to give up on multi-booting a dozen different
distros on a single disk and buy a pocketful of USB 3 thumb drives.

--
Grant





Re: [gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Wols Lists

On 23/02/2024 00:28, Grant Edwards wrote:

In my experience, 's bootloader does not boot other
installations by calling other bootloaders. It does so by rummaging
through all of the other partitions looking for kernel images, intird
files, grub.cfg files, etc.  It then adds menu entries to the config
file for 's bootloader which, when selected, directly load the
kernel image and initrd from those other partitions. Sometimes, it
works -- at least until those other installations get updated without
the knowlege of the distro that currently "owns" the MBR's bootloader
config. Then it stops working until you tell that bootloader to re-do
it's rummaging about routine.


IME distros that try that (SUSE, anyone!) generally get confused as to 
which kernel belongs to which root partition.


Hence needing to boot with a live distro to edit the resulting mess and 
get the system to actually come up without crashing ...


Cheers,
Wol



[gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Grant Edwards
On 2024-02-23, Michael  wrote:

> The problem starts if/when kernel images are overwritten by
> successive Linux OS distros.  This is likely when derivatives of the
> same main distros e.g.  Ubuntu all create a directory called
> /EFI/ubuntu/ in the ESP and drop their kernels & initrd images in
> there potentially overwriting other distro's files.

Yes, that's the problem that I've read about when trying to multi-boot
with UEFI.  I usually have 3-4 different Ubuntu installations and 3-4
different RedHat installations. Ubuntu in particular causes a log of
complaints about overwriting ESP files belonging to other Ubuntus.

> When using a distro's installer menu on a legacy BIOS MoBo you can
> select a partition (PBR) to install GRUB,

You used to be able to.  I can no longer find the option to do that in
Ubuntu or RedHat. I've been told that Suse still allows it.

> but GRUB will complain and suggest you could use blocklists but it
> is unreliable.  Last time I received an error like this, I installed
> grub in a PBR manually with the '--force' option, without using the
> installer GUI.  After that, whenever I updated GRUB it complained
> again about blocklists, but it worked fine.

Using --force will work fine as long as the grub 1.5 files don't get
moved afterwards. That's why I lock them in place. Locking them will
cause future upgrades to Grub for that distro to fail, but that
doens't happen very often.  When it does, you unlock them, updated
grub, re-install using --force, and lock them again.

>> I'd welcome pointers to where those advanced options are in the RH
>> and Ubunutu installers -- I've searched everywhere I can think
>> of. Various things Google has found lead me to believe that they no
>> longer support installing grub in a partition.
>
> Try using '--force' to make GRUB install its image in some distro's
> boot/root partition PBR instead of the disk MBR, but you'll probably
> have to perform this outside the installer script.  I've done this
> with VMs.

Yes, in my OP describing what I'm doing now it explains that's what I
do. Then I lock the Grub files that are located using the blocklists
created by the --force option.

>> I guess I'll stick with my current setup.
>> 
>> Or perhaps I'll switch from a DOS disklabel to a GPT disklabel.
>> Instead of backing up and restoring the MBR and the gap, I would
>> backup and restore the MBR and the BIOS boot partition. And I could
>> use UUIDs and partition labels.
>
> These days I use disks with GPT even on MoBos with legacy BIOS.

Same here -- except for this one machine.  I think I'll switch it over
soon.

> Instead of backing up and restoring the MBR/BIOS Boot Partition you
> could just reinstall grub and run grub-mkconfig, as long as the
> latter involves fewer key-presses.  ;-)

I don't use grub-mkconfig for the "main" grub. It has a fixed grub.cfg
file that does nothing but chainload the user-selected partition.

Currently, backing up MBR+gap only happens once when I install/setup
the main grub.  Restoring BMR+gap is one command (which is actually in
a shell script) that's run after any new distro is installed.

MBR+Bios-boot-partition would work pretty much the same way.

--
Grant








[gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Grant Edwards
On 2024-02-23, Wojciech Kuzyszyn  wrote:

> I guess most (all) of the distro's you are talking about use GRUB (or
> at least they allow to do it).

Yes, I belive that they are all now using Grub2.

> If that's true, I'm pretty sure you can happily let them overwrite
> the GRUB in MBR as many times as they want, since it's the same (or
> just probably minor version differences) bootloader. Just make a
> copy of /boot/grub/grub.cfg and make sure it's the same on every
> partition.

That means I have to update all of those grub.cfg files manually every
time I install or update a distro. That's a lot of work.

> Or, even better, if that's possible right now, make a common /boot
> partition and after installing the new distro just merge the
> (probably new) /boot/grub/grub.cfg with your old one.

"just merge the new grub.cfg file with the old one" is the problem.

I tried that for a while: every time a distro got installed, I would
add it to the "main" grub config file. Every time a distro got a
kernel update, I'd modify the main grub config file. It was a lot more
work that my current scheme (and a lot more error prone).

> I really think that *should* work!

It would work, but maintaining the grub.cfg files is a lot of
work. The scheme I'm using now doens't require me to mess with any of
the grub.cfg files when distros get updated or installed.

--
Grant




Re: [gentoo-user] Re: How to set up drive with many Linux distros?

2024-02-23 Thread Michael
On Friday, 23 February 2024 00:28:59 GMT Grant Edwards wrote:
> On 2024-02-22, Wol  wrote:
> > On 22/02/2024 21:45, Grant Edwards wrote:
> >> I've been reading up on UEFI, and it doesn't seem to be any
> >> better. People complain about distro's stomping on each other's files
> >> in the ESP partiton and multiple distro's using the same name in the
> >> boot slots stored in NVM. And then the boot choice order changes
> >> (though it may not be apparent to the naked eye) when one of the
> >> distros decides to update/reinstall its boot stuff.
> > 
> > At least if you use UEFI *as* your bootloader, then that won't
> > happen.  That assumes you're using UEFI, though!
> 
> According to what I've read UEFI isn't a bootloader. It's a boot
> manager which can load and run EFI bootloaders (of which there can be
> multiple installed).

The UEFI firmware of the MoBo contains its own bootloader and a boot manager 
with its own boot menu, initialised and running from the MoBo's EEPROM. Unlike 
conventional/legacy bootloaders stored in the first sector of a disk (MBR), 
the UEFI firmware is stored in the MoBo's EEPROM, a larger equivalent to the 
old CMOS.

However, this comes with the caveat the UEFI 'bootloader' can only load .efi 
executables which have already been placed in the FAT32 formatted EFI System 
Partition (ESP).  Unlike GRUB's MBR Stage 1 bootloader code, the UEFI firmware 
is large enough to contain its own fs driver to be able to read the ESP fs 
content and identify and run all .efi applications.

Kernel images which have been built with the EFI stub and therefore masquerade 
as .efi compatible files can be loaded directly by the UEFI firmware without 
the need of an additional bootloader.


> > In which case, 's bootloader doesn't get a look-in.
> 
> Yes, AFAICT, it does (sometimes?). When you install  under
> UEFI it installs EFI bootloader files (either kernels wrapped in EFI
> bootloader executables or the grub EFI bootloader) in the EFI Systgem
> Partition (ESP), and then adds one or more entries in the EFI NVM that
> points to those files (or something like that).  The Linux UEFI
> systems I have all still use grub2 (which gets written to the ESP).

Legacy GRUB on an MBR partitioned disk, writes its Stage 1 bootloader code in 
the first sector and Stage 1.5 with the fs drivers in sector 34, before the 
first partition.

GRUB2 on a UEFI system installs the file /efi//grubx64.efi in the ESP, 
an equivalent of the Stage 1 and Stage 1.5 of legacy GRUB.  The Stage 2 /boot/
grub/ files can be installed either in the ESP, or on a different partition.


> It's entirely possible for one distro to overwrite files in the ESP
> that belong to other distros. I've read multiple complaints about
> exactly that when trying to do multi-boot with UEFI. In practice it's
> just like the fight over who owns the MBR and the DOS disklable gap.

It doesn't really matter if the grubx64.efi executable is overwritten, as long 
as the OS_PROBER is not disabled in /etc/default/grub.  Re-running grub-
mkconfig will re-scan the ESP and any drive/partitions, pick up any OS kernel 
images known by GRUB and add them to GRUB's boot menu.

The problem starts if/when kernel images are overwritten by successive Linux 
OS distros.  This is likely when derivatives of the same main distros e.g. 
Ubuntu all create a directory called /EFI/ubuntu/ in the ESP and drop their 
kernels & initrd images in there potentially overwriting other distro's files.


> One recipe I read about for doing what I wanted to do with UEFI
> involved installing a Linux distro (didn't really matter which), then
> installing rEFInd. After that, some manual renaming and deleting of
> the files in the ESP was required. Then he started installing various
> distros. After each distro installation, the author had to re-install
> rEFInd, and after many of them he had to manually remove or rename
> files in the ESP (or adjust the rEFInd config file).
> 
> And in the end, he ended up with multiple menu entries (for different
> installations) that had identical names.

The concept of one bootloader/manager ruling them all is broadly the same 
whether you use rEFInd or GRUB, as are the hoops you have to jump through to 
accommodate distros' automated/hardcoded installation scripts.

When using a distro's installer menu on a legacy BIOS MoBo you can select a 
partition (PBR) to install GRUB, but GRUB will complain and suggest you could 
use blocklists but it is unreliable.  Last time I received an error like this, 
I installed grub in a PBR manually with the '--force' option, without using 
the installer GUI.  After that, whenever I updated GRUB it complained again 
about blocklists, but it worked fine.


> It was more complicated and difficult than my current scheme.
> 
> > As for "'s obviously superior bootloader", well 
> > is using the exact same boot-loader, and when IT installs, how is it
> > going to be able to boot  if it can't call 's boot
> > loader because it's