页次: 1
分区方案:
/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)
离线
我之前弄全盘加密的时候也是将 EFI 挂载到 `/boot/efi`,这样就会失败。把 EFI(sda1)挂载到 `/boot` 并且不加密就能成功。你可以看看是不是这个原因。我写过一篇加密安装 Arch Linux 的文章,你可以参考一下:Arch Linux 备份、加密、还原教程 - 叶寻的博客
离线
我不加密,挂载到 `/boot/efi` 安装是成功的,主要就是加密的问题
离线
见
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两处均需要输入密码
最近编辑记录 Watermelon.Rei (2022-05-30 16:57:50)
离线
已经安装成功了,感谢大佬指点
离线
页次: 1