19.10: 与 crypttab 和更新相关的交换问题

19.10: 与 crypttab 和更新相关的交换问题

我昨晚进行了更新,如我的日志中所示。

Start-Date: 2020-03-16  13:56:51
Commandline: apt upgrade
Requested-By: logan (1001)
Install: linux-image-5.3.0-42-generic:amd64 (5.3.0-42.34, automatic), linux-tools-5.3.0-42:amd64 (5.3.0-42.34, automatic), linux-headers-5.3.0-42-gener
ic:amd64 (5.3.0-42.34, automatic), linux-modules-extra-5.3.0-42-generic:amd64 (5.3.0-42.34, automatic), linux-headers-5.3.0-42:amd64 (5.3.0-42.34, auto
matic), linux-tools-5.3.0-42-generic:amd64 (5.3.0-42.34, automatic), linux-modules-5.3.0-42-generic:amd64 (5.3.0-42.34, automatic)
Upgrade: linux-tools-generic:amd64 (5.3.0.40.34, 5.3.0.42.36), linux-headers-generic:amd64 (5.3.0.40.34, 5.3.0.42.36), linux-libc-dev:amd64 (5.3.0-40.32, 5.3.0-42.34), linux-image-generic:amd64 (5.3.0.40.34, 5.3.0.42.36), linux-tools-common:amd64 (5.3.0-40.32, 5.3.0-42.34), linux-generic:amd64 (5.3.0.40.34, 5.3.0.42.36)
End-Date: 2020-03-16  13:57:26

今天早上我进入了 initramfs 并出现了以下消息。

WARNING: Option 'size' missing in crypttab for plain dm-crypt
mapping cryptswap1. Please read
/usr/shar/doc.cryptsetup-initramfs/README.initramfs.gs and add the correct 
'size' option to your crypttab(5).
crypt
cryptsetup: waiting for encrypted source device /swapfile......
Alert! encrypted device /swapfile does not exist! can't unlock.
Check cryptopt=source= bootarg: cat /proc/cmdline
or missing modules, devices: cat /proc/modules; ls /dev
Dropping to shell.

我不认为我有交换驱动器(上个月工作中的 IT 部门设置了这台笔记本电脑,所以我不确定)。删除 crypttab 文件后,我发现有一个 1gb 交换驱动器在运行,然后我使用 sudo swapoff -a 删除了该文件并注释掉 crypttab 文件。我找不到任何 fstab 条目。启动错误仍然存​​在,尽管现在我的交换驱动器在启动后显示大小为 0。

启动过程真的很麻烦,因为网上所有类似的案例都建议编辑 /etc/fstab 和 /etc/crypttab。fstab 是空的,crypttab 位于 ash shell 中的 cryptroot/cryptab,这让我很困惑。我只是删除了 crypttab 文件并运行 exit 来启动。

由于在工作中使用 Ubuntu 19.10 的每个人都有相同的设置,我想知道这是否是由我昨晚的更新引起的,是否有人可以帮助我找出哪个更新导致了这个问题,或者我是否应该做任何其他清理。我相信我应该删除 crypttab 文件和 fstab 中提到的任何交换,或者添加一个有效的大小。否则下次启动时我会遇到这个问题。我的 crypttab 看起来像这样

# <target name> <source device>     <key file>  <options>
cryptswap1 /swapfile /dev/urandom swap,offset=1024,cipher=aes-xts-plain64

加分项是帮助我了解我所进入的 shell 在哪里运行,或者一旦进入 ash,我应该如何进入具有更好编辑选项的 shell(即 nano、vi 或 vim)。我将 crypttab 保存到 /crypttab.old,但现在我登录后找不到它了。

此外,我删除了 fstab 注释,所以我的 fstab 只包含 /swapfile/none,并运行 sudo cryptsetup remove cryptswap1 并删除了 /etc/crypttab,但启动时仍然失败,出现同样的问题。我还尝试了相反的方法,我取消了 fstab 和 cryptab 的注释,并在 crypt 选项卡中添加了 size=512。重启时,文件中没有显示大小,同样失败了。

更新:按照以下步骤修复此问题这里事实证明我需要更新 initramfs 才能使任何更改生效。

答案1

我也在运行带有加密交换的 Ubuntu 19.10,我也遇到了同样的问题。我不知道如何完全解决这个问题,但目前我已禁用加密交换挂载,如下所示(注意 - 这些步骤对我有用,但可能对您不起作用;根据需要进行调整!):

  1. 在 Grub 中,通过 启动Advanced options,选择以前的 kernel/initramfs 版本。在我的情况下是5.3.0-40-generic(新的损坏版本是5.3.0-42-generic
  2. /etc/crypttab从和中删除交换安装线/etc/fstab
  3. 运行cryptsetup remove /dev/mapper/cryptswap1以禁用加密交换
  4. /boot目录中,备份旧initrd.img文件。
  5. 使用创建新文件update-initramfs -c -k 5.3.0-42-generic
  6. 更新GRUB配置update-grub并重启

另一个选择是使用之前的 kernel/initramfs 软件包(如果它们对你有用的话),就像我Advanced options在 GRUB 菜单中所做的那样。这将需要在启动时手动选择,但如果你不经常重启,这可能是一个足够好的选择。

希望这可以帮助。

相关内容