使用 luks 加密安装带有全硬盘加密的 Arch Linux使用 luks 加密安装带有全硬盘加密的 Arch Linux使用 luks 加密安装带有全硬盘加密的 Arch Linux使用 luks 加密安装带有全硬盘加密的 Arch Linux
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

使用 luks 加密安装带有全硬盘加密的 Arch Linux

发表 admin at 2025年2月28日
类别
  • 未分类
标签

这是关于如何使用 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>

是在 /dev/mapper 下创建的设备
是加密设备

所以我的看起来像下面这样:

# 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 助手

©2015-2025 Norria support@norria.com