遇到相同的问题,这是我在ubuntu 12.04.1和12.10上的处理方式,
-在开始之前,请确保已备份,并且还可以使用ubuntu cd或usb引导系统;好像您犯了一个错误,您的系统可能无法再启动,或者您可能会丢失数据。我假设您有一个带有LUKS的加密ubuntu系统,在LUKS内您有3个分区,即SYSTEM-BOOT(未加密),SYSTEM-SWAP(已加密)和SYSTEM-OS(已加密)-
您需要将UUID,SYSTEM-SWAP_crypt,SYSTEM-OS_crypt,SYSTEM-SWAP,SYSTEM-OS调整为系统上使用的版本,请参见我的解决方案下方的参考链接以获取更多信息
获取UUID:
blkid
准备>
swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt
告诉cryptsetup从包含根文件系统的卷的解密密钥计算交换分区的密码>
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt
告诉系统有关交换分区的信息,编辑crypttab>
nano /etc/crypttab
=?确保两行匹配
SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
告诉系统有关交换分区的信息,编辑fstab>
nano /etc/fstab
=?确保你有这条线
/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0
告诉系统有关交换分区的信息,编辑简历>
nano /etc/initramfs-tools/conf.d/resume
=?确保你有这条线
RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt
在启动分区上更新initramfs>
update-initramfs -u -k all
参考
设置加密Debian系统(归档链接)的启发得到了答案:
如果您使用的是加密的Debian系统,则可能需要满足一些安全要求。在这种情况下,还必须使用加密的交换分区。
交换分区可以通过两种方式加密:
- 可以使用随机密码在每次启动时重新创建它,或者
- 可以像其他加密卷一样使用永久密码来创建它
如果要使用磁盘暂挂,则不能使用第一种方法,因为它将覆盖存储在交换分区中的内存占用量。此外,您不能像其他分区一样使用密钥文件,因为在恢复过程开始时尚未(并且一定不能)挂载根文件系统,并且需要读取解密的交换分区。
我解决这个问题的方法是,告诉cryptsetup从保存根文件系统的卷的解密密钥中计算交换分区的密码。cryptsetup软件包使用来实现/lib/cryptsetup/scripts/decrypt_derived
。因此,要设置交换分区,请执行以下操作,假设hda2
该分区包含加密的交换,并且根文件系统位于hda5_crypt
:
swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
| cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
| cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt
要告诉系统有关此交换分区的信息,我们需要将其添加到
/etc/crypttab
和/etc/fstab
;中。确保这些文件包含类似以下内容的行:
/etc/crypttab:
hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
/etc/fstab:
/dev/mapper/hda2_crypt swap swap sw 0 0
有了此功能后,一旦您为挂起至磁盘配置了系统,交换分区将在启动顺序的早期就自动与根文件系统一起建立。找出哪些交换分区以使可在该点,cryptsetup检查以下内容:asfasfafs -一行像RESUME=/dev/mapper/hda2_crypt
在/etc/initramfs-tools/conf.d/resume
-简历设备设置在/etc/uswsusp.conf
(见uswsusp.conf(5)
) -中的条目/etc/suspend.conf
一个- resume=/dev/mapper/hda2_crypt
在内核命令行
您可以检查/usr/share/initramfs-tools/hooks/cryptroot
是否要了解更多信息。