Wait... What??? Where are all my /boot files gone?
Hello future me 👋
You might wonder where all the files e.g. /boot/vmlinuz-linux
, /boot/amd-ucode.img
, /boot/initramfs-linux.img
and the boot loader configs in /boot/loader/entries
are gone.
I changed everything to Unified kernel images, by primarily changing the file /etc/mkinitcpio.d/linux.preset
to generate the UKI. I also told the generation of /boot/vmlinuz-linux
to be placed in /usr/local/share/boot/vmlinuz-linux
instead, by setting ALL_kver="/usr/local/share/boot/vmlinuz-linux"
.
The newly generated files will end up in /boot/EFI/Linux/arch-linux.efi
and /boot/EFI/Linux/arch-linux-fallback.efi
. systemd-boot
will pick up these automatically. So no further entries are needed.
Since, there are no boot loader entries any more, we must tell the system somehow about our cmdline. This is done in /etc/cmdline.d/*.conf
. This files are respected by mkinitcpio
and are bundled into the mentioned /boot/EFI/Linux/arch-linux*.efi
files.
$ cat /etc/cmdline/10-root.conf
rd.luks.name=9c8381f8-7e0f-44f6-be26-655b70d33a32=root root=UUID=a1af7e43-857b-4903-8896-e25484175e5d
$ cat /etc/mkinitcpio.d/linux.preset
ALL_kver="/usr/local/share/boot/vmlinuz-linux"
PRESETS=('default' 'fallback')
default_uki="/boot/EFI/Linux/arch-linux.efi"
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
fallback_uki="/boot/EFI/Linux/arch-linux-fallback.efi"
fallback_options="-S autodetect"
While I was there, I decided to get rid of /boot/amd-ucode.img
as well. mkinitcpio
collects the firmware from /usr/lib/firmware/amd-ucore/
anyways, and packs it into the initramfs
. No need to keep the file around. However, /boot/amd-ucode.img
is part of the package amd-ucode. I had to tell pacman to don’t extract those files.
$ grep NoExtract /etc/pacman.conf
NoExtract = boot/*-ucode.img
Those changes do provide nothing but a learning opportunity 😄 And maybe… just maybe… in some point in the future, I will sign everything.