Complete guide for setting up Arch Linux with Secure Boot using Ubuntu’s signed shim and systemd-boot on systems with locked BIOS (cannot disable Secure Boot or enroll custom keys).
Prerequisites
Ventoy USB with Secure Boot support enabled
Official Arch Linux ISO
System with Secure Boot enabled (locked BIOS)
Internet connection for AUR packages
Overview
This setup uses:
Ventoy to boot the official Arch ISO with Secure Boot enabled
Ubuntu’s signed shim (trusted by Microsoft) as first-stage bootloader
systemd-boot as second-stage bootloader (renamed to grubx64.efi)
Personal MOK keys to sign kernel and bootloader
Pacman hooks for automatic signing on updates
Step 1: Install Arch Linux
Boot from Ventoy, select the Arch Linux ISO, and perform a standard Arch installation with systemd-boot as your bootloader.
Install systemd-boot
# During installation, after chrootbootctl install
This creates /boot/EFI/systemd/systemd-bootx64.efi
Step 2: Install Required Packages
# Install AUR helper if not already installed# Example with yay:pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# Install shim-signed from AURyay -S shim-signed
# Install signing toolspacman -S sbsigntools efibootmgr mokutil
Step 3: Setup Shim Files
# Create directory for Arch boot filessudo mkdir -p /boot/EFI/arch
# Copy Ubuntu's signed shim filessudo cp /usr/share/shim-signed/shimx64.efi /boot/EFI/arch/
sudo cp /usr/share/shim-signed/mmx64.efi /boot/EFI/arch/
# CRITICAL: Rename systemd-boot to grubx64.efi# This is required because shim is hardcoded to load grubx64.efisudo cp /boot/EFI/systemd/systemd-bootx64.efi /boot/EFI/arch/grubx64.efi
Step 4: Generate MOK (Machine Owner Key)
# Create secure directory for keyssudo mkdir -p /etc/secureboot/keys
sudo chmod 700 /etc/secureboot
# Generate RSA key pair and self-signed certificatesudo openssl req -newkey rsa:2048 -nodes \
-keyout /etc/secureboot/keys/MOK.key \
-new -x509 -sha256 -days 3650\
-subj "/CN=Arch Linux MOK/"\
-out /etc/secureboot/keys/MOK.crt
# Convert certificate to DER format (required by MOK)sudo openssl x509 -outform DER \
-in /etc/secureboot/keys/MOK.crt \
-out /etc/secureboot/keys/MOK.cer
# Schedule MOK enrollment for next bootsudo mokutil --import /etc/secureboot/keys/MOK.cer
# You will be prompted to set a password# Remember this password - you'll need it on next boot!
Step 7: Create EFI Boot Entry
Important: Replace /dev/sdX with your actual disk device (e.g., /dev/sda or /dev/nvme0n1)
# Find your disk devicelsblk
# Create boot entry pointing to shimsudo efibootmgr --create --disk /dev/sdX --part 1\
--loader /EFI/arch/shimx64.efi \
--label "Arch Linux" --unicode
If efibootmgr fails with “No such file or directory”, ensure efivarfs is mounted:
sudo mount -t efivarfs efivarfs /sys/firmware/efi/efivars