为什么我的加密 LVM 卷(LUKS 设备)在启动时无法挂载?

pgp*_*lla 24 lvm cryptsetup

我正在尝试按照本指南设置加密卷

一切都已设置,但安装加密卷在启动时失败并显示错误:

fsck.ext4:尝试打开 /dev/mapper/safe_vault 时没有这样的文件或目录 可能不存在的设备?

这是我的设置:

密码表

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks
Run Code Online (Sandbox Code Playgroud)

笔记:

将uuid来自:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 
Run Code Online (Sandbox Code Playgroud)

表

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2
Run Code Online (Sandbox Code Playgroud)

我所做的...

所以我去了开发者的网站,在常见问题常见问题解答中他们说:

检查您的内核中是否有设备映射器和 crypt 目标。“dmsetup targets”的输出应该列出一个“crypt”目标。如果它不存在或命令失败,请将设备映射器和 crypt-target 添加到内核。

所以我做了,结果我没有crypt目标:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何添加这样的目标。

我认为这(没有crypt目标)可能会导致crypttab配置在启动时被忽略,因此尝试安装条目fstab失败,因为cryptsetup我的加密卷没有映射到/dev/mapper/safe_vault.

笔记:

可以成功手动映射、挂载和写入加密卷:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault
Run Code Online (Sandbox Code Playgroud)

这是映射和安装后的样子:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
??sda1                                28920b00-58d3-4941-889f-6249357c56ee   
??sda2                                                                       
??sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ??<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ??<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ??<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ??<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  ??<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    ??safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  
Run Code Online (Sandbox Code Playgroud)

更新

  • 事实证明,我确实有crypt目标,但要让它出现,dmsetup targets我必须先cryptsetup luksOpen <my-device>
  • UUID根据@Mikhail Morfikov 的回答,我尝试使用s 代替,但它在启动时仍然失败。

我仍然认为问题在于加密卷cryptsetup luksOpen在启动时没有被映射(打开),因此不/dev/mapper/<safe_vault or UUID>存在,然后尝试挂载它(fstab)失败。

更新 2

事实证明,我没有在启动时挂载所需的脚本。请参阅@MikhailMorfikov 的回答中的注释。

Mik*_*kov 20

你必须注意 UUIDs 。例如,这是我的配置:

# lsblk -o name,uuid,mountpoint
??sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
? ??sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
?   ??debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
?   ??debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
?   ??debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
?   ??debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /
Run Code Online (Sandbox Code Playgroud)

我有一个带有 4 个卷 (LVM) 的加密分区 (sda2)。我需要的是在正确的文件中设置两个 UUID。sda2 UUID/etc/crypttab和卷 UUID(例如 debian_crypt-root)去/etc/fstab。

所以,它会是:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1
Run Code Online (Sandbox Code Playgroud)

更改/etc/crypttab文件后,您必须重建initramfs:

# update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)

笔记

cryptsetup必须安装该软件包,因为它具有启动脚本,支持在启动时自动挂载加密卷。

为什么要提这个?好吧,如果安装Debian的喘息期间,您设置LVM安装软件包cryptsetup斌,libcryptsetup4和lvm2而不是cryptsetup,因此你可以使用工具来设置LVM和陆氏设备,但没有脚本需要在引导时挂载LUKS设备。那些来自包cryptsetup。