我知道有人问过这个问题,但我还是问了这个问题,因为我找到的修复方法不起作用。我遇到了和这个人一样的问题:Ubuntu 19.04“等待加密源设备/swapfile”,然后在启动时提示 initramfs:linuxquestions
但我尝试了解决方法,即在 /etc/crypttab 中添加“size=256”。我这样做了,但它仍然警告我,我没有在 crypttab 中指定大小,并且仍然需要时间才能启动。(如果我在提示符下输入 exit,我的电脑仍然会启动到正常工作的 GUI)
以下是 /etc/fstab 的内容:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=694b4858-ead8-400d-9406-f9fc45dc71f1 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=CA5F-286C /boot/efi vfat umask=0077 0 1
#/swapfile none swap sw 0 0
#/dev/mapper/cryptswap1 none swap sw 0 0
#/swapfile swap swap defaults 0 0
/dev/mapper/cryptswap1 none swap sw,pri=100 0 0
这是 /etc/crypttab:
# <target name> <source device> <key file> <options>
cryptswap1 /swapfile /dev/urandom swap,offset=1024,cipher=aes-xts-plain64,size=256
它以前一直有效但现在不行了,这有帮助吗?而且我在编辑 /etc/crypttab 之前必须使用 Ubuntu 恢复模式 DPKG?
任何帮助都将不胜感激。提前谢谢!
编辑:如果我可以保留交换空间就好了,因为我只有 5.7gb 内存(2.3gb 内存是系统保留的)
答案1
上述解决方法有效的根本原因和解释是,当您在 中有 cryptswap 时,initramfs cryptroot hook ( /usr/share/initramfs-tools/hooks/cryptroot
) 正在尝试转换/swapfile
为块设备/etc/crypttab
。这显然会失败,因为/swapfile
不是设备,并且在 initramfs 运行时不可用。
由于您没有使用加密的 rootfs(否则/swapfile
将作为其中的一部分进行加密),最简单的方法是禁用此 cryptroot 钩子。不幸的是,没有好的方法可以做到这一点。我发现最好的方法是插入,exit 0
因为/etc/cryptsetup-initramfs/conf-hook
此脚本来自 cryptroot 钩子。
答案2
我找到了解决这个问题的方法。
/etc/fstab
在和中注释与 cryptswap 相关的行/etc/crypttab
- 执行
sudo swapoff -a && sudo update-initramfs -u
- 如果你想交换回来,取消注释你刚刚注释的行
- 重启
但是,尽管这有效,但我认为每次内核更新都会破坏它。