我在官方看了几天文档,不管用什么办法都不能做出统一内核镜像UKI,相关资料非常少,有没有会做的?
这是我找到的一个资料(不过是 Arch Linux的),你可以参考一下:
另外,这是我自己和上述资料不同的部分:
写入内核参数,在早期用户空间解锁。告诉内核要解密的分区是哪个,所有参数必须写在同一行上。
/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上可能会有所不同。