mkinitcpio - Arch Linux initramfs generation tools

CHANGES WITH v35.2:

        Bugfix release:

        * install/sd-vconsole: include font map and font unimap files in the
          initramfs.

        * Fix support for adding firmware files that a kernel module specifies
          using glob syntax.

        * Do not show a misleading "Possibly missing firmware for module"
          warning when a firmware file was already added once.

        * install/keymap: make sure keymap file adding works on non-UTF-8
          locales.

        Contributions from: Balló György, nl6720

        – 2023-03-24

CHANGES WITH v35.1:

        Bugfix release:

        * mkinitcpio failed to setup the required files in /dev/fd to support process
          substitution. This resulted in hooks/resume failing to work after a shellcheck
          fix up.

        Contributions from: Morten Linderud

        – 2023-03-19

CHANGES WITH v35:

        New Features:

        * mkinitcpio now has support for post-generation hooks. These can be
          used to act on generated initramfs images such as Secure Boot signing.
          The feature is documented in the mkinitcpio(8) man page.

        Changes in mkinitcpio:

        * Improved code quality of scripts with shellcheck.

        * Replaced hexdump usage with od.

        * The makefile was taught `coverage` which generates a coverage report of
          mkinitcpio.

        * Several improvements on the symlink handling of mkinitcpio.

        * add_binary was taught to check for script interpreters and warns about
          missing interpreters.

        * UKIs are now generated with dynamically allocated section sizes instead
          of the previous hard coded values.

        * xz compression is now always executed in "multithreaded mode" through
          the -T0 switch after the xz utilitiy's recent improvements in reproducibility.

        * Several fixups to improve consistency for msg/error/warning messages.

        * Preset scripts are now documented in the mkinitcpio(8) man page.

        * mkinitcpio will now attempt to more thoroughly clean up its temporary files upon
          exit.

        * Modules included in the initramfs now retain their permissions instead of being
          hard coded to 644.

        * The kernel-install script will now utilize the staging area as expected by
          systemd.

        * The init script now passes file system labels, file system UUIDs, partition
          labels and partition UUIDs directly to the mount and fsck commands instead of
          resolving them.

        Changes in hooks:

        * install/sd-vconsole is now executed inside a subshell to avoid
          affecting the global scope.

        * install/sd-vconsole and install/consolefont now look for zstd compressed fonts.

        Changes in packaging:

        * The installed preset now includes commented-out suggestions for UKI and
          default_options.

        * libalpm/scripts/mkinitcpio will now also delete UKIs when
          uninstalling a kernel.

        Contributions from: Adam Maroti, cedric cvl, ff0x, Florian Eitel,
        Josephine Pfeiffer, Markus Weippert, Michael Kopp, Morten Linderud,
        nl6720, rogueai, Sebastian Wiesner, Tobias Powalowski, Yishen Miao

        – 2023-03-18

CHANGES WITH v34:

        Announcement of future breaking changes:

        * Preset variables *_efi_image are deprecated in favor of *_uki and
          option --uefi is deprecated in favor with --uki. The old variables and
          options still work, but emit a deprecation warning.

        Changes in mkinitcpio:

        * Preserve relativity of symbolic links that reside in the same
          directory as their targets.

        * Fix symbolic link creation and create target files with correct
          permissions.

        * Document add_udev_rule that has been available since v31.

        * Instead of using stat to get the file permissions and install to copy
          it, use cp unless custom permissions are specified. This improves
          overall speed of file additions.

        * Existing test suite is migrated to bats (Bash Automated Testing
          System) and more tests are now available.

        * Ensure /proc/cmdline is read as text and make sure to append a newline
          and NUL to the .cmdline embedded in unified kernel images. This works
          around an issue where /proc/cmdline contains garbage.

        * The kernel-install plugin now supports generating unified kernel
          images.

        * Warn if the interpreter (from the shebang) is missing when adding
          "binaries" that are actually scripts.

        Changes in hooks:

        * hooks/shutdown once again works when /run/initramfs/ already exists in
          the initramfs.

        * install/autodetect looks up modules in the target kernel version
          instead of the currently running one.

        * install/consolefont, install/keymap and install/sd-vconsole now
          declare vconsole.conf supported variables as local to prevent
          conflicts with misconstructed hooks may set these variables globally.

        * install/memdisk uses the add_udev_rule function available since v31.

        Contributions from: Adam Maroti, Christian Hesse, Geert Hendrickx,
        Hector Martin, Morten Linderud, Tcc, Tobias Powalowski, nl6720, rogueai

        – 2022-12-07

CHANGES WITH v33:

        Announcements:
    
        * Development has moved to the Arch Linux GitLab instance. The new
          URL is https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio
    
        Changes in mkinitcpio:
        
        * Introduce DECOMPRESS_MODULES in mkinitcpio.conf. Allows the user to
          toggle if modules should be recompressed during initramfs creation or
          not. Defaults to "yes".

        * Support UKI generation on AArch64.

        * Introduce a new --remove switch which allows mkinitcpio to remove all
          mkinitcpio generated files. Only works together
          with the -p/-P switches currently.

        * In the initramfs the file /etc/os-release, symlinked to
          /etc/initrd-release, is now included. systemd enabled initramfs
          environments might need this file.

        * Supports finding kernel version in gzipped non-x86 kernels.

        * Try to properly resolve symlinks when adding files into the initramfs.

        Changes in hooks:

        * install/fsck now includes the e2fsck binary and symlinks fsck.ext*
          utilities to this binary.

        * install/fsck will no longer attempt to include nonexistent fsck
          helpers.

        * install/kms will attempt to include modules that implement the privacy
          screen feature. Currently the module names are hardcoded.

        Changes in packaging:

        * mkinitcpio-remove and mkinitcpio-install are now unified into a single
          script installed to 'libalpm/scripts/mkinitcpio'.

        Contributions from: 0x7F, Felix Yan, Hugo Osvaldo Barrera,
        Morten Linderud, nl6720, rogueai, Simon Brüggen, Tobias Powalowski

        – 2022-11-20
