UKI+sbctl:启用 Secure Boot 最简单的方法
前情提要
上一篇 Archboot 实现 Secure Boot 自动配置的办法,觉得还是不够简单,而且我现在也不需要通过 Grub 引导 Windows 和其他系统,遂有本文。
正文
在现有系统上抛弃Grub,拥抱统一内核映像(UKI)并启用 Secure Boot
我所使用的内核为
linux-zen
,下面的配置请注意修改
修改内核命令行参数
创建/etc/kernel/cmdline
如下:
root=UUID=系统的分区UUID rw splash loglevel=3
注:Btrfs分区可能需要添加 rootflags=subvol=XXX 的挂载参数1,可以在grub生成的文件中寻找
修改 mkinitcpio 预设
编辑/etc/mkinitcpio.d/linux-zen.preset
,取消 "PRESET_image=XXX" "PRESET_uki=XXX"的注释,并且修改存储位置,保存到 EFI
分区内
# mkinitcpio preset file for the 'linux-zen' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux-zen"
PRESETS=('default' 'fallback')
###我的EFI分区挂载在/boot下,故作此修改###
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-linux-zen.img"
default_uki="/boot/EFI/Linux/arch-linux-zen.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-linux-zen-fallback.img"
fallback_uki="/boot/EFI/Linux/arch-linux-zen-fallback.efi"
fallback_options="-S autodetect"
构建 UKI
确保 EFI
目录已挂载,运行:
mkdir -p EFI_MOUNT_POINT/EFI/Linux
mkinitcpio -p linux-zen
添加引导
遵循一切从简的理念,使用 efibootmgr
添加引导
efibootmgr --create \
-d /dev/nvmeXXX -p 1 \
--label "Arch Linux" \
--loader "EFI/Linux/arch-linux-zen.efi"
#nvmeXXX EFI分区
签名 UKI
如果此时已经配置好
sbctl
和 Secure Boot,可直接通过sbctl sign -s /EFI_MOUNT_POINT/EFI/Boot/bootx64.efi
结束本文至此,您可以抛弃 Grub 了,享受快人一步的开机😏
通过以下命令删除不再使用的自动签名
sbctl remove-file /boot/grub/x86_64-efi/grub.efi
如果还没有安装
sbctl
,请继续阅读
设置 Secure Boot
进入设备 BIOS,将 Secure Boot
进入设置模式 Setup Mode
进入Archlinux,安装 sbctl
包,运行
sbctl enroll-keys -m
sbctl sign -s /EFI_MOUNT_POINT/EFI/Boot/bootx64.efi
重启至 BIOS 开启 Secure Boot
至此,UKI + sbctl 最简单 Secure Boot 设置就大功告成了
Copyright Notice: Unless otherwise stated, this article is an original work. Copyright belongs to VConet的杂物间. Licensed under CC BY-NC-SA 4.0. Please cite the source when reprinting!
Article URL: https://old.vconet.top/archives/uki-sbctl-secureboot.html
Sofa