我有一个带有 4 个分区的 SSD(EFI 分区、第一个用户的操作系统、第二个用户的操作系统、交换分区)并systemd-boot
安装为引导加载程序(个人偏好)。由于systemd-boot
只能从同一文件系统启动内核,因此我将/etc/fstab
FAT32 分区挂载到 FAT32 分区/boot
,/boot/efi
以便包管理器将内核安装在所在分区上systemd-boot
。我在该分区上有许多类似的文件(几个 vmlinuz,但版本不同,与其他文件相同),如下所示:
ls -> EFI/ loader/ vmlinuz-1 vmlinuz-2 config-1 config-2 ...
所以我把它们分成不同的文件夹,现在看起来像这样:
ls -> EFI/ loader/ user1/ user2/
唯一的问题是,当apt
尝试升级系统时,它会严重失败,因为它无法对文件进行符号链接,因为它们位于 FAT32 分区上,即使它们能够进行符号链接,它们仍然会在主/boot
文件夹中,而我不这样做。我不希望他们这样。使用相同的内核不是一个选择。
所以我的问题是:是否可以指定下载新内核文件的位置,或者每次内核更新时我都必须手动移动它?
答案1
按照这篇文章解决:https://kernel-team.pages.debian.net/kernel-handbook/ch-update-hooks.html
我创建的/etc/kernel/postinst.d/zz-update-efi
脚本只是将编译后的内核和 init 移动到用户目录。
USER_NAME="mint"
mv "/boot/vmlinuz-$1" "/boot/$USER_NAME/vmlinuz-linux"
mv "/boot/initrd.img-$1" "/boot/$USER_NAME/initramfs-linux.img"