一旦/boot
分区半满且只有一个内核,您就无法升级,
当其他分区被加密时,调整大小是痛苦的,
解决方案:移动/boot
到加密分区。
背景故事:Linux Mint 17升级到20将不允许安装最新内核;这就是我的困境。关于调整分区大小的文章有很多——加密分区会引发恐怖!幸运的是还有一个替代方案。
在使我的系统“无法启动”之后,我决定提供一些指导(我的答案出现在下面),希望其他人也能插话。
答案1
信用很大程度上属于吉扬红磨坊,我只是简单化。将重复要求超级用户,您可能更愿意su
为 root shell 运行命令(或者,在sudo
必要时继续执行命令)。
加密分区:/dev/sda5
运行fdisk -l
列表分区,例如,
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 500117503 499615746 238.2G 5 Extended
/dev/sda5 501760 500117503 499615744 238.2G 83 Linux
我的加密分区是/dev/sda5
,您的可能有所不同(并且您需要/dev/sda5
相应地进行替换)。
先决条件:LUKS1
cryptsetup luksDump /dev/sda5
通过检查命令输出来检查您正在使用 LUKS1
Version: 1
对于版本 2,请先降级,然后再继续(请参阅原始文章)。
先决条件:GRUB2
grub-install --version
通过检查命令输出版本 2 或更高版本来检查您正在使用 GRUB2 。
先决条件:键盘布局
当您切换到美国键盘布局时,请检查您的密码是否保持不变。考虑更改您的密码(保持不变),或使用美国布局设置密码(不推荐),或参阅原始文章以获取进一步的解决方法。
移动/boot
重新挂载/boot
为只读以避免移动过程中数据修改:
mount -oremount,ro /boot
递归复制到临时目录(在加密分区上):
cp -axT /boot /boot.tmp
卸载/boot
并删除(空)目录:
umount /boot
rmdir /boot
重新定位临时目录:
mv -T /boot.tmp /boot
更新/etc/fstab
命令cat /etc/fstab
将输出类似于:
UUID=38e... /boot ext2 defaults
您需要注释掉该行(我赞成vim
)。
在 GRUB2 中启用加密挂载
添加GRUB_ENABLE_CRYPTODISK=y
到/etc/default/grub
,生成您的 GRUB 配置文件,
update-grub
并安装,
grub-install /dev/sda
可能是测试的好时机
现在可能是测试一切是否顺利的好时机:重新启动。系统应该提示您输入密码并(在令人不安的长时间延迟之后)进入 initramfs 提示符。输入以下命令:
cryptsetup luksOpen /dev/sda5 sda5_crypt
替换sda5_crypt
为第一个参数输出cat /etc/crypttab
(如果您已经走到这一步而没有运行该命令,只需使用sda5_crypt
,我们可以稍后修复它)。下一个发出命令:
exit
您的系统现在应该正在启动,如果没有启动,恢复应该相对容易 - 从 Live USB 启动并取消注释 中的行/etc/fstab
。 (随时可用的 Live USB 非常有用。)
启动性能下降
GRUB 并未针对与加密相关的 CPU 指令进行优化 - 解锁加密分区将比以前花费更长的时间。
选修的:您可以通过牺牲对暴力攻击的抵抗力来调整性能。 PBKDF 比 Argon2 更容易 — PBKDF 通过需要多次迭代来减缓暴力攻击,而 Argon2 通过进一步的变量来减缓攻击,因此,调整 PBKDF 更容易。检查命令当前使用了多少次迭代cryptsetup luksDump /dev/sda5
,例如,
Key Slot 0: ENABLED
Iterations: 1208036
为了将性能提高大约两倍(同时将暴力抵抗力减少一半),我们可以使用命令将迭代次数减少一半多一点cryptsetup luksChangeKey --pbkdf-force-iterations 500000 /dev/sda5
Enter passphrase to be changed:
Enter new passphrase:
Verify passphrase:
您现有的密码可以重复使用。据我所知,添加了一个新键:除了上述内容之外,命令cryptsetup luksDump /dev/sda5
现在还输出
Key Slot 1: ENABLED
Iterations: 500000
PBKDF 将按顺序尝试所有密钥插槽,为了加快速度,请运行命令cryptsetup luksOpen --test-passphrase --verbose /dev/sda5
Enter passphrase for /dev/sda5:
Key slot 1 unlocked.
Command successful.
使用命令cat /etc/crypttab
你会看到类似的东西
sda5_crypt UUID=66f... none luks,discard
添加,key-slot=1
到最后(更改1
以匹配您在上面找到的任何内容)。如果您测试一切正常并使用了第一个参数以外的其他参数sda5_crypt
,请重新启动并输入,cryptsetup luksOpen /dev/sda5 sda5_crypt
然后输入exit
, ,然后再进行下一步。运行命令
update-initramfs -u -k all
生成并更新您的 initramfs 映像。 (严格来说,-k all
这不是必需的,假设您遵循这些说明,因为您有一个内核。)
更新/etc/fstab
命令lsblk -o name,uuid
输出
NAME UUID
sda
├─sda1 38e...
├─sda2
└─sda5 66f...
└─sda5_crypt B6U...
├─mint--vg-root 54f...
└─mint--vg-swap_1 fe3...
要使系统可启动,请将以下行添加到/etc/fstab
UUID=54f... / ext4 defaults 0 1
运行命令,update-grub
然后grub-install /dev/sda
重新启动。
希望您现在拥有一个可启动的系统。
您需要输入两次密码,这很不幸。显然有一个解决方法(请参阅原始文章)。我一口气看完了整篇文章,遇到了麻烦,无法启动(在发现之前cryptsetup luksOpen /dev/sda5 sda5_crypt
)。通过上述说明,我希望疼痛的可能性会减少。祝你好运。