使用 LUKS 设置加密卷

来自 Alpine Linux

LUKS 允许加密分区并将其映射为虚拟块设备,然后可以像普通分区一样使用。其他 Linux 发行版的指南可以作为在 LUKS 加密磁盘上安装 Alpine 的一般参考。

安装程序内置了对加密的支持。默认安装程序不会加密交换分区和启动分区。要设置带有加密交换分区的 Alpine Linux,请参阅 LVM on LUKS。GRUB 引导加载程序支持 BIOS 和 EFI 启动以及加密的启动分区。

在启动时解密非根卷

与其他 Linux 发行版不同,Alpine 不使用文件 /etc/crypttab。相反,要让加密卷在通过 /etc/fstab 自动挂载到某处之前被解密,您必须在 /etc/conf.d/dmcrypt 中配置 dmcrypt。该文件内部的注释应该会指导您,但作为一个简单的示例,以下是您应该在该文件中包含的内容,以解密并将分区映射到名为“myvolume”的卷,给定其 UUID(此处使用一系列 X 表示),使用密码短语

target=myvolume
source=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX

然后在 /etc/fstab 中,您将包含以下行

/dev/mapper/myvolume	<path>	<fstype>	<options>

代入正确的参数。

mkinitfs 和 LUKS

对于那些熟悉在其他 Linux 发行版上设置 FDE 的人来说,本节仅包含理解 mkinitfs 所需的 Alpine 特定知识。

首先,需要将 cryptsetup 功能添加到 /etc/mkinitfs/mkinitfs.conf。此外,还需要以下内核参数

  • cryptroot 内核参数应指向加密的块设备。
  • cryptdm:将赋予设备的名称。
  • root 内核参数应指向映射的块设备:/dev/mapper/<name used in cryptdm>
  • rootfstype:根分区的文件系统类型(例如:btrfs)。


例如,如果您将 grub 与 GPT 分区表、无 LVM 和 ext4 结合使用,您将在 /etc/default/grub 中拥有

GRUB_TIMEOUT=2
GRUB_DISABLE_SUBMENU=y
GRUB_DISABLE_RECOVERY=true
GRUB_CMDLINE_LINUX_DEFAULT="modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4 cryptroot=UUID=a7dc90c4-6746-417e-b25b-cb8769ee6334 cryptdm=alpine-rootfs  root=/dev/mapper/alpine-rootfs"
GRUB_PRELOAD_MODULES="luks cryptodisk part_gpt"
GRUB_ENABLE_CRYPTODISK=y

参见