Due to an influx of spam, we have had to temporarily disable account registrations. Please write an email to accountsupport@archlinux.org, with your desired username, if you want to get access. Sorry for the inconvenience.
This is not a bug, it is a possible improvement that needs to be studied to see if it can be implemented. The idea is to be able to tell the kernel by parameter where the airootfs.sfs file resides without having to pass the archisodevice parameter.
Essentially it is something similar to what grml does.
The reason for this would be to be able to do the same thing with archiso that is done in this AUR package, where it is not necessary to pass the UUID of the ESP partition to the kernel for boot.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
tell the kernel by parameter where the airootfs.sfs file resides
How?
The boot loader and kernel+udev address the block devices in an entirely different way. While mkarchiso uses a GRUB (🤮) specific feature to search for a specific file (/boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid) and pass the UUID of the volume it's on to the kernel, it still relies on a UUID.
An alternative would be getting rid of the separate rootfs image and place it all in the initramfs image.
I do not know. I am no expert in these matters. But I understand that it is possible when it is done in other systems, for example Puppy Linux boots without any UUID being specified.
The initramfs needs know where the root file system image is since it needs to mount it. If the boot loader doesn't tell it (via archisodevice) then it needs to search for it in some way.
The initramfs gets the ISO UUID where the root file
system resides from the GRUB kernel parameters in GRUB configuration file in all my branches.
The ISO UUID is written in configuration files at
build time so no mistakes can be made about which drive
to load.
When the root file system image is an encrypted one,
the UUID is instead given to encrypt hook,
while /dev/mapper/root is given to archiso
hook as stable archisodevice value.
I don't see a single good reason to have the bootloader "guess" anything,
in particular the root file system image location (and its
signatures).
To load root file system image from a set of alternatives is not
having the bootloader randomly guess which drive contains the correct root file system, so either integrity checks on kernel and initramfs have to be included in GRUB directly or the kernel has to be copied over an encrypted space so that the even if the UUID is the same, the bootloader won't be able to open the partition with using user's provided "secret".
I didn't notice the "recent" mess-up in grub-embed.cfg for
uefi systems because on my branches I have been selecting the correct
drive using security-sorted UUID search of build-time encrypted external partitions (booting images from eventually present unencrypted volumes with signatures on the above mentioned encrypted partitions or from secondary drives on public builds) since last year.
The idea is to avoid hardcoding the UUIDs. This is what "file system transposition" is all about, you simply copy the ISO contents to a FAT formatted USB flash and it simply works for UEFI booting.
The is no reason not to have hardcoded UUIDs without "file system transposition": the guessing mechanism can be used as fallback when drives corresponding to hardcoded UUIDs are not available.
The security vulnerability introduced by guessing the root file system drive
can be partially avoided by hardcoding root file system image checksums in
the bootloader config file embedded in the bootloader binary and
verify integrity at runtime before loading the kernel.
With code implemented to do that you can also check kernel and initramfs integrity at the same
time. I want to stress code code to that with minimal effort is on my branch since last year probably.
I still think guessing the drives for the root file system is a bad choice in the general direction of maximizing total I/O by accessing install media images from multiple available sources or easing install media access.
One doesn't want to read the data from any device providing correct data, one wants data
from a specific drive only, so more data should be gathered to estabilish if the selected drive
is the same from which the boot loader has been loaded.
I will add a mandatory checksum on loaded artifacts to my code just the same.
I will be sure to use the same vulnerability you are keeping open to let ISOs produced by my fork auto-close the hole whenever they find a vulnerable but legit install medium.