我正在尝试在笔记本电脑上安装 Kali,这通常应该很简单。然而,在此特定设备上,由于某种原因,Kali 安装程序在将分区更改写入磁盘时出错。我之前可以通过手动对驱动器进行分区来解决这个问题fdisk
。卡利跑得很好。但是,我缺乏磁盘加密。因此,我擦除了驱动器并开始使用 LUKS 加密手动分区和配置 Kali。
我找到了一篇关于此的文章,我能够遵循它,只有一些偏差
https://devconnected.com/how-to-encrypt-root-filesystem-on-linux/
我最终得到的分区方案如下
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WDC WD5000LPVX-7
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: C6EB1185-05CF-4E8D-ABAC-1376C75628F8
Device Start End Sectors Size Type
/dev/sda1 2048 1953791 1951744 953M Linux filesystem
/dev/sda2 1953792 3907583 1953792 954M EFI System
/dev/sda3 3907584 976773119 972865536 463.9G Linux filesystem
使用sda1
as /boot
(由于 BIOS 旧版引导而需要),sda2
as/boot/efi
和sda3
as 我的根加密文件系统。该方案适用于未加密的 Kali 安装,因此我所需要做的就是设置 LUKS。
cryptsetup
按照文章中的详细说明使用我有以下内容sda
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 953M 0 part
├─sda2 8:2 0 954M 0 part
└─sda3 8:3 0 463.9G 0 part
└─crypto 254:0 0 463.9G 0 crypt
├─cryptVG-swap 254:1 0 2G 0 lvm
└─cryptVG-root 254:2 0 461.9G 0 lvm
我在实时 USB 上运行 Kali 来设置我的笔记本电脑硬盘驱动器,本文详细介绍了将现有操作系统安装转移到加密安装。我无法rsync
实时媒体文件并使操作系统像实际(非实时)安装一样工作,因此我只是使用 Kali 的安装程序将安装写入 USB,就像它是硬盘驱动器一样(不确定为什么安装程序可以很好地写入分区)到 USB,但不是我的磁盘,而是 w/e)。然后,我能够挂载这两个文件并将 USB 的根文件系统同步到我的加密磁盘。这似乎有魔力。
在对该部分进行小更改后,我还能够按照详细信息重新安装 grub,而不会出现重大问题。基本上我在 chroot 之前--rbind
挂载时使用/dev
以避免 sudo 错误,并且我还需要在 chroot 之前挂载/绑定 proc。成功 chroot 后,我仍然收到一条错误,指出每次运行 sudo 时都无法解析主机名“kali”,但它似乎并没有影响我正在运行的命令,因此我忽略了它。
我的 grub 设置最终如下:
UUID
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
│ vfat FAT32 9080-831D
├─sda2
│ vfat FAT32 345D-5BB8
└─sda3
crypto 2 f0b2bee7-9566-4178-9a3a-6ffee87482df
└─crypto
LVM2_m LVM2 6t1L5r-GdTD-Fda4-A3D7-OjMI-DiI9-mKM76J
├─cryptVG-swap
│ swap 1 9d7471b5-cd00-477b-a599-48517194122c
└─cryptVG-root
ext4 1.0 740ca216-99a9-46ee-a2c2-fa2dbde2ccb7 417.1G 3% /mnt
/etc/fstab
$ cat /mnt/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
# root
UUID=740ca216-99a9-46ee-a2c2-fa2dbde2ccb7 / ext4 errors=remount-ro 0 1
# efi
UUID=345D-5BB8 /boot/efi vfat umask=0077 0 1
# swap
UUID=9d7471b5-cd00-477b-a599-48517194122c none swap sw 0 0
/etc/crypttab
$ cat /mnt/etc/crypttab
# <target name> <source device> <key file> <options>
crypt UUID=f0b2bee7-9566-4178-9a3a-6ffee87482df none luks
基于这些配置似乎就像我应该能够正常启动进入操作系统一样。据我所知,我的 UUID 是正确的,并且 grub stage 1 安装得很好,因为它会提示我输入密码来解锁设备。但是,虽然我可以/dev/sda3
使用密码解锁cryptsetup luksOpen /dev/sda3 crypto
,但在启动屏幕上使用相同的密码会出现密码错误的错误。
启动后sda
我看到
Enter passphrase for hd0,gpt3 (f0b2bee7-9566-4178-9a3a-6ffee87482df):
输入正确的密码后,它会立即打印
error: Invalid passphrase
error: no such cryptodisk found
error: disk `lvmid/kJKtcZ-eQPE-zpEE-r5hz-MWlz-WdzV-hg2lMF/GAVDs1-caOS-pBlM-bQsb-MDyN-2LdM-nyQveG' not found
grub rescue>
为什么 grub 无法解锁我的 LUKS 驱动器,而 cryptsetup 可以?我怎样才能修复 grub 以便它可以呢?
我知道这在技术上是一个 XY 问题,但我尝试解决 X(Kali 安装程序失败)但没有成功,因为似乎没有其他人遇到我的问题,而且我现在非常接近解决 Y,我认为这并不重要。另外我想了解更多关于 grub 的知识。
编辑:luks转储信息
$ sudo cryptsetup luksDump /dev/sda3
LUKS header information
Version: 2
Epoch: 3
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: f0b2bee7-9566-4178-9a3a-6ffee87482df
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 4096 [bytes]
Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 4
Memory: 1048576
Threads: 4
Salt: 73 ... 12
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha256
Iterations: 77101
Salt: c2 ... 80
Digest: c7 ... 43