使用 luks 加密安装带有全硬盘加密的 Arch Linux
这是关于如何使用 LUKS(Linux 统一密钥设置)在支持 UEFI 的系统上安装 Arch Linux 并进行全硬盘加密的简短教程。 LUKS 是一种磁盘加密规范,可帮助您在一个捆绑包中实现文件加密、磁盘加密和数据加密。
LUKS 可以帮助您保护您的硬盘,防止被盗等情况发生,但它不能保护您的数据在解锁后免遭访问。它可以与其他加密软件配合使用,实现无懈可击的数据安全。
之前我写过一篇关于如何在 LVM 上安装 Arch Linux 的文章,但它缺少 luks 加密功能。链接如下:
在 UEFI 系统上使用 LVM 安装 Arch Linux
这篇博文旨在填补磁盘加密的空白,所以绝对不要期望太多的理论。
不应在 vp、vps 托管、vps 服务器、云 vps、vps 服务器托管等上执行此操作。无论如何,所有这些缩写词都具有相同的含义。
设置磁盘分区:
我的分区方案将 /dev/sda1 作为 efi 分区,/dev/sda2 作为引导分区,/dev/sda3 作为 LVM 物理卷, /dev/arch/root 作为安装 Arch Linux 的根分区, /dev/arch/home 作为主分区, /dev/arch/swap作为交换分区。
选择的分区工具是 Parted,您也可以使用 gdisk 进行 efi 或使用 fdisk 进行 MBR。不过,两人的工作都分开了。请将 gpt 标签替换为 mbr 以获取正确的磁盘标签类型。
parted /dev/sda
mklabel gpt
mkpart ESP fat32 1MiB 200MiB
set 1 boot on
name 1 efi
mkpart primary 200MiB 800MiB
name 2 boot
mkpart primary 800MiB 100%
set 3 lvm on
name 3 lvm
print
配置LUKS
下一步是加载内核模块以使用 luks 安装 Arch Linux。在使用 cryptsetup 之前,请务必确保已加载 dm_crypt 内核模块。
modprobe dm-crypt
modprobe dm-mod
然后继续使用cryptseup命令创建加密设备。 Cryptsetup 是与 dm-crypt 交互的命令行工具,用于创建、访问和管理加密设备。
Cryptsetup 支持依赖于 Linux 内核 device-mapper 和 cryptgraphic 模块的不同加密类型。
该工具的使用方法如下:
# cryptsetup <OPTIONS> <action> <action-specific-options> <device> <dmname>
通过设备映射器访问的设备称为“块设备”。
您可以使用以下方法检查可用选项:
$ cryptsetup --help
现在让我们在 /dev/sda3 上创建一个新的 LUKS 设备
# cryptsetup luksFormat -v -s 512 -h sha512 /dev/sda3
使用的选项:
luksFormat:格式化 LUKS 设备
-v, –verbose:显示更详细的错误消息
-s, –key-size :加密密钥的大小,在本例中为 512 位。
-h, –hash:用于根据密码创建加密密钥的哈希值
当您执行上面的命令时,您将收到一条警告消息。只需输入是即可继续,然后输入并验证密码以供使用。
现在我们已经创建了 luks 加密设备,我们需要以映射
# cryptsetup open <device> <name>
所以我的看起来像下面这样:
# cryptsetup open /dev/sda3 luks_lvm
LVM配置
对于 LVM 新手来说,LVM 的基本构建块是:
物理卷 (PV)
– 硬盘上的分区(甚至磁盘本身或环回文件),您可以在其上拥有卷组。
– 它有一个特殊的标头并被划分进入物理范围。
- 将物理卷视为用于构建硬盘驱动器的大型构建块。
卷组 (VG)
– 用作存储卷的物理卷组(作为一个磁盘)。
– 它们包含逻辑卷。
– 将卷组视为硬卷驱动器。
逻辑卷 (LV)
– 驻留在卷组中并由物理范围组成的“虚拟/逻辑分区”。
– 将逻辑卷视为普通分区。
物理盘区 (PE)
– 物理卷中可分配给逻辑卷的最小大小(默认 4MiB)。
– 将物理盘区视为可以分配给逻辑卷的磁盘的一部分。分配给任意分区。
配置部分:
创建物理卷:
pvcreate /dev/mapper/luks_lvm
创建名为 arch 的卷组:
vgcreate arch /dev/mapper/luks_lvm
为根分区、主分区和交换分区创建逻辑卷:
lvcreate -n home -L 70G arch
lvcreate -n root -L 120G arch
lvcreate -n swap -L 1G -C y arch
格式化分区:
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.btrfs -L root /dev/mapper/arch-root
mkfs.btrfs -L home /dev/mapper/arch-home
mkswap /dev/mapper/arch-swap
挂载分区:
swapon /dev/mapper/arch-swap
swapon -a ; swapon -s
mount /dev/mapper/arch-root /mnt
mkdir -p /mnt/{home,boot}
mount /dev/sda2 /mnt/boot
mount /dev/mapper/arch-home /mnt/home
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
确认是否全部安装正确:
lsblk -f
安装 Arch Linux:
安装基础系统:
pacstrap /mnt base base-devel efibootmgr vim dialog \
xterm btrfs-progs grub --noconfirm
生成fstab文件:
genfstav -U -p /mnt > /mnt/etc/fstab
切换到chroot环境:
arch-chroot /mnt /bin/bash
配置 mkinitcpio
vim /etc/mkinitcpio.conf
向下滚动直到找到 HOOKS 部分。然后在文件系统之前添加这些行:
encrypt lvm2
钩子通过它们的名称来引用,并按照它们在配置文件中的 HOOKS 设置中存在的顺序执行。 HOOKS 行看起来像这样:
HOOKS="base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck"
生成新的 initramfs 映像:
mkinitcpio -v -p linux
安装grub并生成grub.cnf文件:
pacman -s grub --noconfirm
grub-install --efi-directory=/boot/efi
配置内核参数
为了能够引导加密的根分区,需要设置以下内核参数的子集。如果使用加密挂钩,请将选项添加到内核参数。要修改的文件是/etc/default/grub。
cryptdevice=/dev/<partition>:devicemapper_name cryptkey=<path>
device 是支持加密设备的设备的路径。
devicemapper_name 是解密后为设备指定的设备映射器名称,可作为 >/dev/mapper/devicemapper_name。
例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/mapper/swap \
cryptdevice=/dev/sda3:luks_lvm"
注意,在生成引导配置之前,最好将相关参数添加到/etc/default/grub中。
在启动时解锁根分区(可选)
要在启动时使用密钥文件解锁根文件系统,您必须生成密钥文件,为其提供适当的权限并将其添加为 LUKS 密钥:
dd if=/dev/urandom of=/crypto_keyfile.bin bs=512 count=10
chmod 000 /crypto_keyfile.bin
chmod 600 /boot/initramfs-linux*
cryptsetup luksAddKey /dev/sda3 /crypto_keyfile.bin
现在,在 mkinicpio.conf 文件中的 FILES 指令下包含 /crypto_keyfile.bin 文件。
# vim /etc/mkinitcpio.conf
Add:
FILES=/crypto_keyfile.bin
重新生成 ramdisk 文件。
mkinitcpio -p linux
重新生成 grub.cfg 文件:
grub-mkconfig -o /boot/grub/grub.cfg
grub-mkconfig -o /boot/efi/EFI/arch/grub.cfg
安装后配置。
剩下的部分是安装必要的软件包,例如 Xorg 服务器、pulseaudio、alsa 实用程序、synaptics 触摸板驱动程序、设置 root 密码、添加标准用户帐户、设置时区、添加 aur 和 multilib 存储库。
我编写了一个简单的 bash 脚本来自动执行此过程。以下是有关如何使用该脚本的过程。
pacman -S git --noconfirm
git clone https://github.com/jmutai/dotfiles.git
cp dotfiles/setup/pacman.conf /etc/pacman.conf
cp dotfiles/setup/live-setup.sh .
chmod +x live-setup.sh
./live-setup.sh
您可以修改实时设置脚本来更改时区设置和系统主机名。 i3 的安装可以替换为您选择的桌面环境。设置成功后,退出 chroot 环境,卸载分区并重新启动系统。
exit
umount -R /mnt
reboot
进一步阅读:如何使用 yay 从 AUR 安装软件包 – Arch Linux/Manjaro 的最佳 AUR 助手