cryptsetup:等待加密源设备/swapfile,fstab为空

Thi*_*ser 6 encryption boot fstab cryptsetup 20.04

在引导屏幕上,我收到消息:

cryptsetup: waiting for encrypted source device /swapfile...
Run Code Online (Sandbox Code Playgroud)

然后让我挂了大约 2 分钟,然后是

Initramfs unpacking failed: Decoding failed.
Run Code Online (Sandbox Code Playgroud)

然后我被丢弃到 Initramfs。

这是在带有加密主文件夹的 Ubuntu 20.04 上。切换回 nouveau 驱动程序以安装 cuda-10 后出现错误(它抱怨 nvidia 驱动程序已在使用中)

其他建议涉及使用 做一些事情/etc/crypttab,但该文件在我的系统上不存在。cat /etc/fstab还显示一个空文件。一些阅读表明,在这种情况下它将使用默认设置,但如果是这样,它如何知道应该将哪个磁盘用作交换空间?或者我可以用实时 USB 做什么?

mount 的输出是

none on / type rootfs (rw)
sysfs on /sys type sysfs (rw,nosuid, nodev, noexec, relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid, noexec,relatime,size=32840428k,nr_inodes=8210107,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on/run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=6583428k,mode=755)
Run Code Online (Sandbox Code Playgroud)

lsblk 返回一个未找到的错误(这是在 inframs 中,因此可能不起作用)

在生活 USB 上的 /mnt 上安装 sdc1 时,我可以获得以下结果: cat /mnt/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/sdc1 during installation
UUID=5df229c0-be7c-43d7-b616-67ec15e2a6d3 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=D23D-B0F6  /boot/efi       vfat    umask=0077      0       1
#/swapfile none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)

. 猫 /mnt/etc/crypttab

好像

# <target name> <source device>     <key file>  <options>
cryptswap1 /swapfile /dev/urandom swap,offset=1024,cipher=aes-xts-plain64
Run Code Online (Sandbox Code Playgroud)

lsblk -o name, type, uuid, label看起来像

NAME        TYPE UUID                                 LABEL
loop0       loop                                      
loop1       loop                                      
loop2       loop                                      
loop3       loop                                      
loop4       loop                                      
loop5       loop                                      
sda         disk                                      
??sda1      part 8C45-E3AC                            UBUNTU 20_0
sdb         disk                                      
??sdb1      part                                      
??sdb2      part                                      
sdc         disk                                      
??sdc1      part 5df229c0-be7c-43d7-b616-67ec15e2a6d3 
nvme0n1     disk                                      
??nvme0n1p1 part 60FC3C5FFC3C3220                     Recovery
??nvme0n1p2 part D23D-B0F6                            
??nvme0n1p3 part                                      
??nvme0n1p4 part                                      
Run Code Online (Sandbox Code Playgroud)

Rav*_*ina 3

如果我没有错过任何事情,那么您的配置似乎一切都很好。但是,在禁用文件加密的同时重新生成initramfs可能会有所帮助/swap

使用实时 Ubuntu 磁盘启动系统。挂载这两个分区:

$ sudo mount /dev/sdc1 /mnt
$ sudo mount /dev/nvme0n1p2 /mnt/boot/efi
Run Code Online (Sandbox Code Playgroud)

打开/mnt/etc/fstab并注释掉这一行(在开头添加#):

/dev/mapper/cryptswap1 none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)

打开/mnt/etc/crypttab并注释掉这一行(在开头添加#):

cryptswap1 /swapfile /dev/urandom swap,offset=1024,cipher=aes-xts-plain64
Run Code Online (Sandbox Code Playgroud)

现在我们必须chroot进入系统并重新生成initramfs

$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt
# mount --type proc none /proc
# mount --type sysfs none /sys
# update-initramfs -k all -c
Run Code Online (Sandbox Code Playgroud)

一切都完成了。退出 chroot 环境:

# exit
Run Code Online (Sandbox Code Playgroud)

卸载已挂载的分区并重新启动:

$ sudo umount -R /mnt
$ sudo reboot
Run Code Online (Sandbox Code Playgroud)

现在您丢失了 上的加密/swap。但我认为你一开始就不想要它。您可以在不编辑/etc/fstab和 的情况下尝试这些说明/etc/crypttab。这也可能有效。