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. 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). 1) 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. 2) 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-<version> for EFI BLS type 1 to /<esp>/<machine-id>/<version/vmlinuz> for the uki layout unified kernel images are emitted to /<esp>/EFI/Linux/<name>{,-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=<your-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) 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: /<esp>/<machine-id>/<kernel-id>/. * EFI bls type 2: this is the unified kernel images layout. The unified kernel images are installed to /<esp>/EFI/Linux/<packagename>{,-fallback}.efi This corresponds to layout=uki.