答案1
这假设默认的 Fedora 安装具有以下基于 Btrfs 的分区:
- 根分区(Btrfs 子卷“root”[安装在
/
] 和“home”[安装在/home
]) - 引导分区(安装在
/boot
) - EFI 分区(仅限 UEFI 系统,安装在
/boot/efi
)
要求
- 全盘备份
- 密码设置(应包含在内,否则使用 进行安装
dnf install cryptsetup
) - 至少 100 MiB 可用空间
- 一个可以卸载根文件系统(例如。Fedora 实时 USB)
- 笔记:
/etc/vconsole.conf
加密屏幕将使用(使用)中定义的键盘布局localectl
。布局在启动时无法更改。
指示
- 使用 标识根文件系统
lsblk -f
。存储 UUID(格式XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
)以供以后使用。 - 使用 标识您当前的内核版本
uname -r
,并保存该值以供以后使用。 - 重新启动进入救援系统。使用 找到根文件系统
blkid --uuid <UUID>
,然后使用 对文件系统运行检查btrfs check <device>
- 挂载文件系统
mount /dev/<device> /mnt
- 缩小文件系统以为 LUKS 标头腾出空间。建议至少 32 MiB,使用
btrfs filesystem resize -32M /mnt
- 卸载文件系统:
umount /mnt
- 使用 加密分区
cryptsetup reencrypt --encrypt --reduce-device-size 32M /dev/<device>
,并在出现提示时提供密码。 - 识别加密的 LUKS 分区
lsblk -f
(注意 UUID 已更改)。保存此 LUKS 分区 UUID 以供以后使用。 - 打开分区,在出现提示时提供您的密码:
cryptsetup open /dev/<device> system
- 挂载映射的文件系统
mount /dev/mapper/system /mnt
- 调整文件系统大小以使用所有空间:
btrfs filesystem resize max /mnt
,然后使用卸载文件系统umount /mnt
- 安装根子卷(Linux 文件系统根)
mount -t btrfs -o "noatime,subvol=root,compress=zstd:1" /dev/mapper/system /mnt
- 使用 标识引导和 EFI 分区的设备
lsblk
。挂载引导文件系统 (mount /dev/<boot device> /mnt/boot
),然后挂载 UEFI 系统的 EFI 文件系统 (mount /dev/<EFI device> /mnt/boot/efi
)。 - 绑定挂载伪文件系统
/dev
,/dev/pts
,/proc
,/run
, 和/sys
, 格式为mount --bind /sys /mnt/sys
- 在文件系统中打开 shell:
chroot /mnt /bin/bash
- 用文本编辑器打开
/etc/default/grub
,修改内核参数以识别LUKS分区,并暂时禁用SELinux强制。添加这些参数,然后保存更改并关闭文件:
GRUB_CMDLINE_LINUX="[other params] rd.luks.uuid=<LUKS partition UUID> enforcing=0"
- 配置 SELinux 的重新标记
touch /.autorelabel
- 重新生成 GRUB 配置:(
grub2-mkconfig -o /boot/grub2/grub.cfg
也为/etc/grub2.cfg
、 和 UEFI 系统生成/etc/grub2-efi.cfg
) - 重新生成 initramfs 以确保启用 cryptsetup:
dracut --kver <kernel version> --force
- 退出 chroot
- 按相反顺序卸载所有文件系统。 (对于使用 挂载的文件系统
--bind
,可以使用该选项-l
。)使用 关闭 LUKS 分区cryptsetup close system
- 重新启动并登录常规系统。在启动过程中,系统会要求您输入密码来解密系统。
/etc/default/grub
在文本编辑器中打开,然后通过enforcing=0
从中删除来重新启用 SELinux 强制执行GRUB_CMDLINE_LINUX
。保存并退出。- 再次使用 重新标记 SELinux
touch /.autorelabel
。 - 重复步骤18重新生成 GRUB 配置。
- 重新启动并登录系统。
这个答案很大程度上来源于麦克斯赫尔普齐格的回答和Arch 维基。它也来自塞雷姆塞姆的 回答。 2023 年 3 月 16 日,更正了--reduce-device-size
错误包含空格的拼写错误。