Matching systemd kernel-install layout configuration
Mkinitcpio now evaluates the "layout" configuration value configured for kernel-install and generates presets and initramfs/unified kernel images in conformance with that layout.
If there are CPU microcode updates installed under /boot (i.e.: /boot/intel-ucode.img) now mkinitcpio preset generation will automatically include them in the presets.
Mkinitcpio now automatically picks up *-ucode.img images from /boot, like CPU microdode updates (e.g.: intel-ucode.img).
Added two new convenience binaries to the package:
- regenerate-mkinitcpio-presets
- reinstall-kernels
You can use these to easily change your kernel configuration: after changing your setup (either changing your mkinitcpio presets or changing your /etc/kernel/install.conf "layout" configuration).
-
regenerate-mkinitcpio-presets: Makes mkinitcpio generate the default presets for your installed kernel packages based on the system configuration just as if you removed and reinstalled them using the pacman.
-
reinstall-kernels: Runs mkinitcpio for all mkinitcpio presets, and if your layout configuration requires it, copies your kernel images to the proper location (for bios layout to /boot/vmlinuz- for EFI BLS type 1 to ///<version/vmlinuz> for the uki layout unified kernel images are emitted to //EFI/Linux/{,-fallback}.efi).
However other installation hooks like, i.e.: secure boot signing your kernels, or kernel-install install scripts are not triggered by reinstall-kernels.
To change from one layout configuration to another set layout= in /etc/kernel/install.conf.
e.g.:
$ cat /etc/kernel/install.conf layout=uki
after you configured the layout you would like run:
$ sudo regenerate-mkinitcpio-presets $ sudo reinstall-kernels
(if you want to sign them for secure boot you still need to do that after reinstall-kernels.: e.g.: sudo sbctl sign-all -g)
The mkinitcpio initrd generator for systemd kernel-install now also respects the configured layout for kernel-install.
There are 3 layout configurations now:
-
traditional: no /efi of /boot/efi directories. /boot/ will be popuplated with separated initramfs and kernel image files. e.g.: /boot/vmlinuz, /boot/initramfs, /boot/initramfs-fallback
You can use this configuration by not having EFI related partitions like /efi or /boot/efi.
-
EFI bls type 1: this is the default for efi systems. The esp partition (mounted as either /efi or /boot/efi) is used for installing the separate kernel and initramfs images.
This is the default layout for if an esp mountpoint (/efi or /boot/efi) exists. This corresponds to layout=bls.
The kernel and initramfs files are installed to: ////.
-
EFI bls type 2: this is the unified kernel images layout.
The unified kernel images are installed to //EFI/Linux/{,-fallback}.efi
This corresponds to layout=uki.