Duplicate marker files will make chainload fail to launch subiquity
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu CD Images |
New
|
Undecided
|
Unassigned | ||
subiquity |
New
|
Undecided
|
Unassigned | ||
debian-installer (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Focal beta iso efi.img manipulates grub when searching for the target device to boot. The current searching method uses /.disk/info as a marker file to identify the target live usb device. efi.img assumes there is only one live bootable device inserted with the marker file /.disk/info and searches in this way:
search --file --set=root /.disk/info
set prefix=
source $prefix/
In some use cases, people pre-insert many different distributions so they could easy to boot to and re-install different distributions. The marker file method will block this kind of multiple bootable setup.
[Steps to Reproduce]
1. Pre-insert one or more Ubuntu Bionic (or above) live usb sticks to your target machine
2. Boot from focal beta iso live usb stick
[Expected Result]
We boot to the subiquity and start to install the system.
[Actual Result]
We will boot to the grub menu provided by the other live usb sticks. The unexpected grub menu may lead you to load incorrect installer files and fail on installation.
[More Information]
The issue is reproducible 100% by a combination of Marvell Cavium ThunderX2 Sabre with Bionic live usb pre-inserted and intended to install the system via focal beta iso live usb. Use dd to destroys the bionic live usb will make the chainload boot to the expected focal one (and completed the installation with subiquity).
description: | updated |
Normal way to have multiple .isos at the same time is to place all .iso's on a single stick and use loopback.cfg support.
However, I'm not sure if our loopback.cfg is correct, as I have never tested it.
How do you expect us to uniquely find the disk to boot? Should we first check if /.disk/info exists in the current root, and just carry on? And only execute the search when we didn't find anything?