您尚未登录。

#1 2022-05-30 11:37:24

journey
会员
注册时间: 2022-05-30
帖子: 3

[已解决] 以LUKS加密方式安装全盘加密的Archlinux启动失败

分区方案:
/dev/sda1  /boot/efi分区
/dev/sda2  swap分区
/dev/sda3  / 分区

创建加密
cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3    # 以LUKS加密方式创建加密设备映射器设备
cryptsetup open --type luks /dev/sda3 cryptroot    # 解锁分区
fdisk -l     # 复查磁盘情况
mkfs.vfat /dev/sda1    # 格式化 EFI 分区
mkswap /dev/sda2    # 格式化 Swap 分区
mkfs.btrfs -L archroot /dev/mapper/cryptroot    # 格式化 Btrfs 分区
mount -t btrfs -o compress=zstd /dev/mapper/cryptroot /mnt    # 将 Btrfs 分区挂载到 /mnt 下
df -h    # 查看挂载情况
btrfs subvolume create /mnt/@    # 创建 / 目录子卷
btrfs subvolume create /mnt/@home    # 创建 /home 目录子卷
btrfs subvolume list -p /mnt    # 查看那子卷情况
umount /mnt    # 卸载 /mnt

# 挂载
mount -t btrfs -o subvol=/@,compress=zstd /dev/mapper/cryptroot /mnt    # 挂载 / 目录
mkdir /mnt/home    # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/mapper/cryptroot /mnt/home    # 挂载 /home 目录
mkdir -p /mnt/boot/efi    # 创建 /boot/efi 目录
mount /dev/sda1 /mnt/boot/efi    # 挂载 /boot/efi 目录
swapon /dev/sda2    # 挂载交换分区
df -h    # 查看挂载情况
free -h    # 查看 Swap 分区挂载情况

挂载完成后安装系统,以下是安装引导程序的步骤:
pacman -S grub efibootmgr    # 安装相应的包
vim /etc/mkinitcpio.conf    # 添加加密钩
HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"
mkinitcpio -p linux        # /etc/mkinitcpio.d/
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH    # 安装GRUB到EFI分区
blkid        # 得到对应加密分区的UUID
vim /etc/default/grub    # 配置GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT=“loglevel=5 nowatchdog cryptdevice=UUID=dff77774-3b18-4190-91dc-45a379df575a:cryptroot root=/dev/mapper/cryptroot”
grub-mkconfig -o /boot/grub/grub.cfg    # 生成 GRUB 所需的配置文件

根据以上方法配置,无法正常启动archlinux,开机界面显示无法识别UUID, 它加载的还是/dev/mapper/cryptroot分区, 不知道哪里缺少步骤了

最近编辑记录 journey (2022-05-31 14:26:17)

离线

#2 2022-05-30 14:23:37

Cyrus Yip
会员
所在地: 地球
注册时间: 2021-09-26
帖子: 40
个人网站

Re: [已解决] 以LUKS加密方式安装全盘加密的Archlinux启动失败

我之前弄全盘加密的时候也是将 EFI 挂载到 `/boot/efi`,这样就会失败。把 EFI(sda1)挂载到 `/boot` 并且不加密就能成功。你可以看看是不是这个原因。我写过一篇加密安装 Arch Linux 的文章,你可以参考一下:Arch Linux 备份、加密、还原教程 - 叶寻的博客

离线

#3 2022-05-30 15:28:05

journey
会员
注册时间: 2022-05-30
帖子: 3

Re: [已解决] 以LUKS加密方式安装全盘加密的Archlinux启动失败

我不加密,挂载到 `/boot/efi` 安装是成功的,主要就是加密的问题

离线

#4 2022-05-30 15:52:20

Watermelon.Rei
会员
注册时间: 2021-12-29
帖子: 114

Re: [已解决] 以LUKS加密方式安装全盘加密的Archlinux启动失败


https://wiki.archlinux.org/title/Dm-cry … ion_(GRUB)

Warning: GRUB's support for LUKS2 is limited; see GRUB#Encrypted /boot for details. Use LUKS1 (cryptsetup luksFormat --type luks1) for partitions that GRUB will need to unlock.

cryptsetup  默认使用lusk2(https://wiki.archlinux.org/title/Dm-cry … _LUKS_mode),grub 2.06对luks2的支持有限,尝试一下使用luks1 (cryptsetup luksFormat --type luks1)
看起来luks1后续还需要手动生成引导用的grubx64.efi镜像,按照楼主目前的情况我推荐使用下面的方案(改动最少)

我用虚拟机按照上文的说明并结合你给出的分区表与命令做了一遍,并参考了
https://wiki.archlinux.org/title/GRUB#Encrypted_/boot
中的提示

Tip: You can use grub-improved-luks2-gitAUR that has been patched for LUKS2 support.

使用补丁后的grub,可以自动识别luks2

无论使用luks1/2,都需要修改/etc/default/grub中的
GRUB_ENABLE_CRYPTODISK=y

最后调用
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH --recheck

grub-mkconfig -o /boot/grub/grub.cfg
重新安装grub引导程序与配置文件后可以正常引导系统


当然,我还是推荐把未加密ESP分区挂载到/boot,这样会省事一些

附演示效果,这里看到在grub和initramfs两处均需要输入密码
ca27876b287896bd.png
1c920dedb814778c.png
a6ce2aa362feb630.png

最近编辑记录 Watermelon.Rei (2022-05-30 16:57:50)

离线

#5 2022-05-31 14:25:03

journey
会员
注册时间: 2022-05-30
帖子: 3

Re: [已解决] 以LUKS加密方式安装全盘加密的Archlinux启动失败

已经安装成功了,感谢大佬指点 cool

离线

页脚