mkinitcpio is the initramfs generation tool written for Arch Linux. A new release of mkinitcpio has been tagged. The release can be downloaded from Gitlab: https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio/-/releases/v39 CHANGES WITH v39: Announcement of future breaking changes: * The use of global variables for getting the value of cmdline parameters is now deprecated. Hook authors should update their hooks to use the getarg function instead. See mkinitcpio(8) for more information on getarg's usage. In a future release, global variables will no longer be assigned for cmdline parameters. New Features: * ARM zImage is now supported. The relevant code paths have also been cleaned up with more code sharing between the main implementation and the shell completions. * install/acpi_override is a new hook that allows ACPI table upgrades and overrides. It will look for `.aml` files in `/usr/initcpio/acpi_override/` and `/etc/initcpio/acpi_override/` which will be copied to `/kernel/firmware/acpi/` in the early uncompressed initramfs. Changes in mkinitcpio: * Compressed files are now placed in the uncompressed early cpio instead of the compressed cpio. This change ensures we are not double compressing files. * As compressed files are included in the early cpio, module decompression has been disabled by default to avoid compressing them using a weaker compression and improve boot speed for some weak CPUs. * MODULES_DECOMPRESS will now also decompress firmware files. * The values of arbitrary cmdline arguments can now be retrieved at runtime using the getarg function. * The default umask is now 022 to ensure files installed with hooks have the permission set to 644 by default. * gzip is used instead of zstd if the kernel version is below 5.9. * `add_all_modules_from_symbol` has been fixed to ensure we are not failing if no symbols can be found. * `add_file` will now use the source file name if the destination ends with a slash. * `add_file` now supports copying from file descriptors. This is useful for cases where you want to pipe files into the initramfs. * `add_file_early` and `add_dir_early` has been added to include files into the early CPIO. * Include `--no-cmdline` in the help output along with some missing options in the shell completion. * UKIs will now be created with `ukify` if it is available on the system. Changes in lsinitcpio: * lsinitcpio now supports listing, analyzing and extracting UKIs. * It will now provide a count of the number of included modules and binaries * Fixed a bug where the `[explicit]` marks in the output was lost. Changes in hooks: * install/resume and install/systemd includes the lzo and lz4 kernel modules to support resuming from hibernation when using a hibernation image compression algorithm other than the compile-time default. * install/keyboard now includes all modules under `kernel/hid/*-hid` directories, which may be required by some keyboards. * install/keyboard removed a workaround for Linux 3.5. * install/base now includes the umount binary. This avoids the mismatch where mount was from util-linux, while umount was provided by busybox. * install/lvm2 now includes the dm-vdo module introduced in Linux 6.9. Changes in packaging: * The libalpm hook will now rebuild the initramfs when kernel modules and firmware files are removed. * mkinitcpio-generate-shutdown-ramfs.service has gotten cleanups and hardening options enabled. `systemctl soft-reboot` pulls shutdown.target so the service is now removed from the mentioned target and included into `poweroff.target`, `halt.target`, `reboot.target` and `kexec.target`. * The distributed tarball now uses xz instead of gzip. * The Makefile now prefers to use asciidoctor if available. * Presets are now generated when mkinitcpio is installed. Contributions from: Bill Auger, Eva Kurchatova, Luke T. Shumaker, Markus Weippert, Mike Yuan, Morten Linderud, Onur Ankut, Ron Brown, classabbyamp, jay-wilkinson, nl6720 - 2024-05-03