本文介绍如何使用LUKS(Linux Unified Key Setup)在启用UEFI的系统上安装Arch Linux并进行全硬盘加密。
简介 LUKS是一种磁盘加密规范,可帮助你在一个捆绑包中实现文件加密,磁盘加密和数据加密。 LUKS可以帮助保护你的驱动器免受盗窃等攻击,但是一旦解锁,它就无法保护你的数据免遭访问,它可以与其他加密软件一起使用,以实现数据安全性。 参考:使用LUKS加密你的磁盘。
设置磁盘分区 我的分区方案将/dev/sda1作为efi分区,/dev/sda2作为启动分区,/dev/sda3作为LVM物理卷,/dev/arch/root作为root分区来安装Arch Linux,/dev/arch/home作为主分区,/dev/arch/swap作为交换分区。 分区选择的工具是Parted(参考:怎样用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
配置LUKS 下一步是加载内核模块以使用luks安装Arch Linux,在使用cryptsetup之前,请务必确保已加载dm_crypt内核模块: modprobe dm-crypt modprobe dm-mod 然后继续使用cryptseup命令创建加密设备,Cryptsetup是与dm-crypt接口的命令行工具,用于创建,访问和管理加密设备。 Cryptsetup支持依赖Linux内核设备映射器和加密模块的不同加密类型。 该工具使用如下: # cryptsetup <OPTIONS> <action> <action-specific-options> <device> <dmname> 通过device-mapper访问的设备称为blockdevices。 可以使用以下方法检查可用选项: $ cryptsetup --help 现在让我们在/dev/sda3上创建一个新的LUKS设备: # cryptsetup luksFormat -v -s 512 -h sha512 /dev/sda3 使用的选项: luksFormat:格式化LUKS设备。 -v,-verbose:显示更详细的错误消息。 -s,-key-size:加密密钥的大小,本例中为512位。 -h,-hash:用于从密码短语创建加密密钥的哈希。 当你执行上面的命令时,将收到一条警告消息,只需键入YES继续,然后输入并验证要使用的密码。 现在我们已经创建了luks加密设备,我们需要打开设备作为映射<name>,语法是: # cryptsetup open <device> <name> 注解: <name>是在/dev/mapper下创建的设备。 <device>是加密设备。 所以我的看起来如下: # cryptsetup open /dev/sda3 luks_lvm
LVM配置 对于那些刚接触LVM的人来说,LVM的基本构建块是: 1、物理量(PV) 在可以拥有卷组的硬盘(甚至磁盘本身或环回文件)上进行分区。 它有一个特殊的标题,分为物理范围。 将物理卷视为用于构建硬盘的大型构建块。 2、卷组(VG) 用作存储卷的物理卷组(作为一个磁盘)。 它们包含逻辑卷。 将卷组视为硬盘驱动器。 3、逻辑音量(LV) 驻留在卷组中的“虚拟/逻辑分区”,由物理盘区组成。 将逻辑卷视为普通分区。 4、物理范围(PE) 物理卷中可以分配给逻辑卷的最小大小(默认为4MiB)。 将物理盘区视为可以分配给任何分区的磁盘部分。 下面进行配置部分。 创建物理卷: pvcreate /dev/mapper/luks_lvm 创建名为arch的卷组: vgcreate arch /dev/mapper/luks_lvm 为root、home和swap分区创建逻辑卷: 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部分,然后在filesystem之前添加行: encrypt lvm2 Hooks由其名称引用,并按配置文件中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
配置内核参数 为了启用加密的根分区,需要设置以下内核参数的子集,如果使用encrypt hook,请将选项添加到内核参数,要修改的文件是/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 增加: 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 至此,目的达成。 进一步阅读:安装及使用Arch Linux/Manjaro系统中的AUR助手yay。
相关主题 |