有没有大佬发一下UKI启动

我在官方看了几天文档,不管用什么办法都不能做出统一内核镜像UKI,相关资料非常少,有没有会做的?

这是我找到的一个资料(不过是 Arch Linux的),你可以参考一下:

https://wiki.archlinux.org/title/User:Bai-Chiang/Arch_Linux_installation_with_unified_kernel_image_(UKI),_full_disk_encryption,_secure_boot,_btrfs_snapshots,_and_common_setups

另外,这是我自己和上述资料不同的部分:

写入内核参数,在早期用户空间解锁。告诉内核要解密的分区是哪个,所有参数必须写在同一行上。

/etc/cmdline.d/root.conf

解密时通过解密完成后的设备名区分

rd.luks.name=要解密的分区UUID=用cryptsetup open时设定的名称 rd.luks.options=timeout=90s,discard,password-echo=no,tries=3 noresume

解密时通过磁盘分区的卷名进行区分

rd.luks.uuid=要解密的分区UUID rd.luks.options=timeout=90s,discard,password-echo=no,tries=3 noresume

或者创建 /etc/crypttab.initramfs 在用户空间层面解锁的

cryptroot UUID=ROOT_UUID - password-echo=no,x-systemd.device-timeout=0,timeout=0,no-read-workqueue,no-write-workqueue,discard

创建两个文件 /etc/kernel/cmdline、 /etc/kernel/cmdline_fallback 内容一致。告诉内核解密完成后去哪里找根分区

/etc/kernel/cmdline

BTRFS文件系统用这种

root=UUID=加密分区的打开之后的UUID rootfstype=btrfs rootflags=subvol=@mypc rw modprobe.blacklist=pcspkr zswap.enabled=0

EXT4文件系统用这种

root=/dev/mapper/加密分区的打开名称 rootfstype=ext4 rw modprobe.blacklist=pcspkr zswap.enabled=0

修改.preset文件,修成如下的样子

/etc/mkinitcpio.d/linux.preset

mkinitcpio preset file for the ‘linux’ package

ALL_config=“/etc/mkinitcpio.conf”
ALL_kver=“/boot/vmlinuz-linux”

PRESETS=(‘default’ ‘fallback’)

#default_config=“/etc/mkinitcpio.conf”
#default_image=“/boot/initramfs-linux.img”
default_uki=“esp/EFI/Linux/arch-linux.efi”
default_options=“–splash=/usr/share/systemd/bootctl/splash-arch.bmp”

#fallback_config=“/etc/mkinitcpio.conf”
#fallback_image=“/boot/initramfs-linux-fallback.img”
fallback_uki=“esp/EFI/Linux/arch-linux-fallback.efi”
fallback_options=“-S autodetect”

总的来说都是阅读 Arch Linux wiki 后整理出来的结果,但在 Debian上可能会有所不同。