![如何使加密卷在未提供密码时不会启动失败](https://linux22.com/image/1464813/%E5%A6%82%E4%BD%95%E4%BD%BF%E5%8A%A0%E5%AF%86%E5%8D%B7%E5%9C%A8%E6%9C%AA%E6%8F%90%E4%BE%9B%E5%AF%86%E7%A0%81%E6%97%B6%E4%B8%8D%E4%BC%9A%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5.png)
当我在我的 debian squeeze 机器上设置一些加密分区时,一切都非常简单。我按照一些操作指南并使用 cryptsetup 创建了现在包含 /home 和 /srv 的加密分区。系统本身(根安装点和引导)尚未加密。
启动时的行为是:
- 系统要求输入加密分区的密码。
- 如果输入正确,系统将启动,并且分区将按照 fstab 中所述安装。
- 如果省略或输入 false 三次,系统无论如何都会以多用户模式启动,并且可以稍后手动解锁和安装分区。
在进行了一些更新和升级后(现在是 Jessie),行为发生了变化。如果省略密码或密码不正确,系统将启动到“紧急模式”,要求输入 root 密码。
我尝试用谷歌搜索,但无论我找到什么,都没有改变这一点。您必须正确输入密码,否则启动会失败。由于机器通常在偏远的地方运行,周围没有人对非 Windows 环境有足够的了解,所以这不是理想的情况。
:# uname -a
Linux cypher 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) i686 GNU/Linux
:# cat /etc/fstab
UUID=3c3fb5a8-ec8c-49d4-a36c-d3a39d321f49 / ext3 user_xattr,errors=remount-ro 0 1
/dev/mapper/sda3_crypt /home ext4 usrquota,grpquota,user_xattr 0 2
/dev/mapper/sda4_crypt /srv ext4 usrquota,grpquota,user_xattr 0 2
/dev/sda2 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
:# cat /etc/crypttab
sda3_crypt UUID=a89934ba-d90c-415d-b021-05be84995e8b none nofail
sda4_crypt UUID=4134177b-5622-4cef-9844-c83efad8d029 none nofail
在尝试使用 crypttab 中的不同选项时,我总是
update-initramfs -u -k all
在尝试下一次启动之前。我甚至不知道这是否有必要。
我不知道我必须做些什么才能实现“旧”行为,如果有人能告诉我我在寻找什么,我会很高兴。
回应 StackAbstraction 的评论:未加密的交换分区是最近错误的结果。起初它是加密的。由于某种未知原因,它突然拒绝解锁,导致启动失败。重新格式化并设置加密后,一切都应该没问题 - 但事实并非如此。在任何启动时,我都会收到一条关于“缺少 LVM”的消息,我必须从救援启动才能再次进入系统。
我无法解决这个问题,而且由于加密的目的更多是为了保护存储的数据,如果物理设备从服务器机房被盗,风险似乎并不高。这也是不保护根分区的原因。要保护的数据仅存储在加密分区上。
但是,评论并没有指出给定的问题。我目前意识到未加密交换和根分区的潜在风险。如果没有提供密码,我看不出切换到卷组如何解决启动失败的问题,除非在启动时不要求输入卷组的密码(这不是理想的行为)——我不知道这是否属实。
答案1
尝试添加nobootwait
旗帜fstab
加密分区的条目。
答案2
其实还有一个nofail
选择,fstab
所以应该这样做两个都让 cryptab 在解密时失败,然后让 fstab 在挂载时失败。
/dev/mapper/sda3_crypt /home ext4 usrquota,grpquota,user_xattr,nofail 0 2
/dev/mapper/sda4_crypt /srv ext4 usrquota,grpquota,user_xattr,nofail 0 2