启动分区已满:移至加密分区

启动分区已满:移至加密分区

一旦/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)。通过上述说明,我希望疼痛的可能性会减少。祝你好运。

相关内容