From e1efa34d8a009b52de4bce3eb37f28bdda3a239d Mon Sep 17 00:00:00 2001 From: Softer Date: Tue, 28 Apr 2026 14:01:05 +0300 Subject: [PATCH] Install mkinitcpio explicitly in base packages (#4484) Prevents pacstrap from picking a different initramfs provider (dracut, booster) when running from a non-Arch host. Fixes #4368 --- archinstall/lib/installer.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index ca98fdb9..c28f37c4 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -61,7 +61,12 @@ from archinstall.lib.plugins import plugins from archinstall.lib.translationhandler import tr # Any package that the Installer() is responsible for (optional and the default ones) -__packages__ = ['base', 'sudo', 'linux-firmware'] + [k.value for k in Kernel] +# https://github.com/archlinux/archinstall/issues/4368 +# mkinitcpio is listed explicitly so pacstrap installs it deterministically. Otherwise +# pacman picks the first initramfs provider from the host's pacman.conf, which on non-Arch +# hosts (EndeavourOS prefers dracut, etc.) breaks the installer's mkinitcpio() and +# _config_uki() methods that assume mkinitcpio is present in the chroot. +__packages__ = ['base', 'sudo', 'linux-firmware', 'mkinitcpio'] + [k.value for k in Kernel] # Additional packages that are installed if the user is running the Live ISO with accessibility tools enabled __accessibility_packages__ = ['brltty', 'espeakup', 'alsa-utils'] @@ -80,7 +85,7 @@ class Installer: `Installer()` is the wrapper for most basic installation steps. It also wraps :py:func:`~archinstall.Installer.pacstrap` among other things. """ - self._base_packages = base_packages or __packages__[:3] + self._base_packages = base_packages or __packages__[:4] self.kernels = kernels or [DEFAULT_KERNEL.value] self._disk_config = disk_config