You are not logged in.
Me and my friend are using an Arch system with systemd-boot and UKI. The UKI is made of the initramfs built by mkinitcpio and then using `ukify` to build the UKI.
The computer we are using is an Apple MacOS with Intel CPU (x86_64). We tested by vanilla Linux kernel and Linux LTS kernel, but when we reach the bootloader, and we select one of the entries, we get a message like this image
The `/etc/mkinitcpio.conf` content is:
# vim:set ft=sh:
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=(usb_storage uas xhci_hcd ahci libahci sd_mod usbhid hid_apple xhci_pci ehci_pci ohci_hcd uhci_hcd)
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No RAID, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect microcode modconf block filesystems fsck)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev microcode modconf block filesystems fsck)
#
## This setup assembles a mdadm array with an encrypted root file system.
## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
# HOOKS=(base udev microcode modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
## This setup loads an lvm2 volume group.
# HOOKS=(base udev microcode modconf block lvm2 filesystems fsck)
#
## This will create a systemd based initramfs which loads an encrypted root filesystem.
# HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr and fsck hooks.
HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt lvm2 filesystems fsck)
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
COMPRESSION="gzip"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()
# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"The `lsblk -f` output is:
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
loop0 squashfs 4.0
sda
├─sda1 vfat FAT32 EFI 67E3-17ED
└─sda2 apfs f24db0ef-f094-46a3-ad44-af4e5441a036
sdb
├─sdb1 vfat FAT32 E79E-A77D
└─sdb2 ext4 1.0 65143aeb-2ce2-48c8-8c73-8e9f0a6e5450 96G 12% /
sdc iso9660 Joliet Extension 2025-11-25-02-07-22-00
├─sdc1 iso9660 Joliet Extension 2025-11-25-02-07-22-00
└─sdc2 vfat FAT32 ARCHISO_EFI 6925-0F5A and `blkid` is:
/dev/sdb2: UUID="65143aeb-2ce2-48c8-8c73-8e9f0a6e5450" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="ext4" PARTUUID="a50e47f4-fc29-47b2-9381-96f8138936df"
/dev/sdb1: UUID="E79E-A77D" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="7667711a-f42e-4072-88cf-d530109f8bfa"
/dev/loop0: BLOCK_SIZE="1048576" TYPE="squashfs"
/dev/sdc2: LABEL_FATBOOT="ARCHISO_EFI" LABEL="ARCHISO_EFI" UUID="6925-0F5A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="Appended2" PARTUUID="35323032-3131-4532-b032-303230373232"
/dev/sdc1: BLOCK_SIZE="2048" UUID="2025-11-25-02-07-22-00" TYPE="iso9660" PARTLABEL="ISO9660" PARTUUID="35323032-3131-4532-b031-303230373232"
/dev/sda2: UUID="f24db0ef-f094-46a3-ad44-af4e5441a036" BLOCK_SIZE="4096" TYPE="apfs" PARTUUID="224b6cc6-12bd-42df-8c12-4327b1c09a85"
/dev/sda1: LABEL_FATBOOT="EFI" LABEL="EFI" UUID="67E3-17ED" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="9338d4a9-98f1-4078-ab90-386f828727c5"So the root partition is installed in `/dev/sdb2` and the EFI partition of the external disk is `/dev/sdb1` (the external disk is `/dev/sdb`).
So, looking at the blue screen error above, it tries to boot the correct UUID but it cannot find it... it is like it is not able to detect the `/dev/sdb` external disk AFTER the boot entry selection (because at boot time, it is running the bootloader in `/dev/sdb1`.
If I install it on internal drives, it works correctly. Despite I added the right mkinitcpio modules for usb and rebuilt UKI by `ukify like:
ukify build \
--linux=/boot/vmlinuz-linux-lts \
--initrd=/boot/initramfs-linux-lts.img \
--cmdline=@/etc/kernel/cmdline \
--os-release=/usr/lib/os-release \
--output=/efi/EFI/Linux/linux-lts.efi(for Linux LTS and vanilla Linux), it returns always that blue screen with the same error, so it cannot find how to access to the disk partition `/dev/sdb2`. We also tried to use:
root=UUID=65143aeb-2ce2-48c8-8c73-8e9f0a6e5450 rw rootwait systemd.log_level=debug systemd.log_target=console rd.shellin `/etc/kernel/cmdline` but no good result.
What are we missing? Is there a specific module or package to install?
Last edited by D3vil0p3r (2025-11-25 17:02:18)
Offline
Try it without the autodetect mkinitcpio hook.
Offline
I can't see the image, could you try linking that again?
Offline