Cannot boot installer on platforms requiring Device Tree
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
debian-installer (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
In the past, when booting Linux on non-(x84_64|i386) machines, it was a requirement to configure and build Linux kernels tailored specifically for a particular device. Now, after many efforts ("one image to rule them all" and the like) to unify and consolidate vendor fragmentation, it is now possible to boot Single Board Computers (SBCs) of similar core architectures with one single binary image.
In order to make this possible Linux is provided with a description of the hardware it is expected to operate on. There are currently two main technologies which provide this functionality; Advanced Configuration and Power Interface (ACPI) and Device Tree (DT). This report only deals with Device Tree (DT).
In an ideal world, firmware installed onto a device would be readily upgradable and thus provide Linux with an up-to-date hardware description that it can work with. However, there are some devices which do not contain either capable or upgradable (or both) firmware, so this information has to be sought from elsewhere.
The kernel packages provided by the Ubuntu build system do contain pre-compiled Device Tree Binaries (DTBs) for currently supported hardware, however these do not make it into the Ubuntu Installers. Instead only a single kernel binary exists which expects to be informed of platform specifics via ACPI tables provided by the platform's firmware. This means that many devices which could easily be supported by the Ubuntu Installer, are not.
There are a couple of ideas which we'd like to put forward to start the conversation off:
1. Place all supported DTBs into the installer
2. Allow for a small writable partition on the install media for a user to place a DTB
3. Enable Grub to be able to pick a DTB from a menu at boot time
At worst case, as long as the DTBs find their way into the installer a user can manually add a 'devicetree' (similar to 'linux' and 'initrd') entry to the Grub menuentry, which would also achieve the aim.
Any help to boot such devices would be gratefully received.
1. Which files are these? can you please give names of .deb and file paths that are in the archive; but missing from the installer environments?
2. We actually do create small writable partitions by default.... do you not see one? and/or is it too small?
3. Sure, or I'd also be ok with a loop of trying them all, and have some mechanism in the initrd to panic the kernel, for the next grub entry to be tried. Or like maybe kexec? See for example how to attempt initrd-less boot, panic, try initrd-full boot on cloud images.