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

Improvement ideas for kernel and the surrounding oekosystem



Hi folks

I'd like to propose some pretty drastic reshaping of the way kernels,
initrd and bootloaders interact with each other and with dpkg.

Traditionaly we install kernel images and configs into /boot.  During
installation we generate files in /boot (and housekeeping in /var/lib).
Setup symlinks, sometimes in /boot, sometimes in /.  This is then used
by bootloader scripts to generate something bootable.

This poses several problems:
- We still have bootloaders without config generation, aka it relys on
  symlinks and may even break on runtime if they are changed.  But
  symlinks and bootloader setup are not handled by the same package.
- A lot of bootloaders require special filesystems or other settings.
  Now this more and more clashs with dpkg, as dpkg can't write data on
  those filesystems (FAT for EFI is a common example).
- You need to know what you want to boot and need to install your system
  accordingly.
- It does not fit anywhere in the regime of /usr-merge.

So my rough ideas would be:
- Everything from kernel packages is installed somewhere in /usr/lib.
  Aka the images itself and, if we got to it, pre-built initramfs and
  even unified images (initramfs integrated).
- Everything generated on installation by e.g. initramfs generators is
  put somewhere into /var/lib/.
- The bootloader stuff is responsible to put everything where they want
  to have it.  So those can tightly control what they need setup in what
  way.

How it could like like:
- /usr/lib/kernel/linux_5.14.0-1-amd64
  - kernel (linux can boot efi, bios and xen)
  - (initramfs.$package)
  - (kernel.efiunified)
- /usr/lib/kernel/xen_4.14
  - kernel.pcbios
  - kernel.efi
- /var/lib/kernel/linux_5.14.0-1-amd64
  - initramfs.$package (you could have multiple initramfs generators
    installed)
  - data.$package

The interfaces:
- kernel tells installed initramfs generators to do their magic on a
  single kernel
- kernel tells installed bootloaders to do their magic on a single
  kernel
- initramfs on installation wants to build all initramfs
- bootloaders on installation want to do their magic

All the tracking and signaling should be in one package.

What are your thoughts about that?

Regards,
Bastian

-- 
Schshschshchsch.
		-- The Gorn, "Arena", stardate 3046.2


Reply to: