当初始 live-USB 不存在时,在 LUKS 系统上卸载 LVM 时出现问题

当初始 live-USB 不存在时,在 LUKS 系统上卸载 LVM 时出现问题

我的系统的 Ubuntu 部分出现了一个相当奇怪的问题。简而言之,我的 Ubuntu 14.04 使用 LUKS 设置上的 LVM。/boot 位于未加密分区 (/sda3) 上,而 swap 和 root 位于 LUKS 分区 (/sda4) 内的 LVM 上。我从 live-USB 进行了设置,系统基本可以正常工作。但是,系统的行为取决于原始 live-USB 是否存在。

如果 USB 存在,系统将在大约 3 秒内启动并正常关机。如果 USB 不存在,加密系统将挂载,但登录过程需要大约 60 秒。关机时,系统会声称 root 正忙,因此不会正常关机。

我不确定问题到底是什么,或者我该如何修复它。我怀疑这个问题是由于我在安装过程中从 live-USB chroot 到新安装时做错了什么而导致的。任何帮助都将不胜感激。

我会提供尽可能多的信息,如果这篇文章的剩余部分太长,我深表歉意。

关机期间的输出:

如果 live-USB 存在,则关机正常进行:

wait-for-state stop/waiting
 * Stopping rsync daemon rsync [OK]
 * speech-dispatcher disabled: edit /etc/default/speech-dispatcher
 * Asking all remaining processes to terminate... [OK]
 * Killing all remaining processes... [OK]
ModemManager[971]: <info> Caught signal, shutting down...

ModemManager[971]: <info> ModemManager is shut down

nm-dispatcher.action: Caught signal 15, shutting down...
 * Deactivating swap... [OK]
 * Unmounting local filesystems... [OK]
 * sda4_crypt (busy)...
 * Stopping early crypto disks... [fail]
 * Stopping early crypto disks... [OK]
 * Will now halt
[ 155.0007241 reboot: Power down

系统干净关闭,我们没有遇到任何问题。

如果 live-USB 不存在,关机将按如下方式进行:

wait-for-state stop/waiting
 * Stopping rsync daemon rsync [OK]
 * speech-dispatcher disabled: edit /etc/default/speech-dispatcher
 * Asking all remaining processes to terminate... [OK]
 * Killing all remaining processes... [fail]
ModemManager[971]: <info> Caught signal, shutting down...

ModemManager[971]: <info> ModemManager is shut down

nm-dispatcher.action: Caught signal 15, shutting down...
 * Deactivating swap... [OK]
 * Unmounting local filesystems... [OK]
 * sda4_crypt (busy)...
 * Stopping early crypto disks... [fail]
 * Stopping early crypto disks... [OK]
mount: / is busy
 * Will now halt
[240.184072] INFO: task kworker/6:1:124 blocked for more than 120 seconds.
[240.184132]       Not tainted 3.19.0-47-generic #53~14.04.1-Ubuntu
[240.184176] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[240.184418] INFO: task alsa-sink-USB A:2037 blocked for more than 120 seconds.
[240.184469]       Not tainted 3.19.0-47-generic #53~14.04.1-Ubuntu
[240.184512] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[240.184710] INFO: task pulseaudio:2563 blocked for more than 120 seconds.
[240.184758]       Not tainted 3.19.0-47-generic #53~14.04.1-Ubuntu
[240.184802] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

此时,系统只会继续定期发出上述错误,并且无法正常关闭。解决此问题的唯一方法是手动关闭机器。

设置:

我在台式机上双启动 Windows 10 和 Ubuntu 14.04。在安装 Ubuntu 之前,我安装了 Windows 10 并使用 VeraCrypt 对其进行了加密。这两个使用 /sda1 和 /sda2。然后,我尝试按照以下两个指南从 live-USB 安装 Ubuntu:

[1]https://thesimplecomputer.info/full-disk-encryption-with-ubuntu

[2]http://techblog.mastbroek.com/all-articles/dualboot-encrypted-windows-and-ubuntu/5/

我主要遵循 [1],基本上只参考了 [2] 来设置 LVM。/boot 位于未加密分区 /sda3 上,而 swap 和 root 位于 LUKS 分区 /sda4 内的 LVM 上。一切都使用 UUID 完成。当一切都完成后,我的系统如下所示:

$ sudo lsblk -o name,uuid,mountpoint
NAME                          UUID                                   MOUNTPOINT
sda                                                                  
├─sda1                        16808C90808C784F                       
├─sda2                                                               
├─sda3                        41589165-270f-4be5-bbfd-7fe66112f485   /boot
└─sda4                        dd217bb3-30f3-496a-8dc9-12abc62e0b0f   
  └─sda4_crypt (dm-0)         BJA0uf-k4EW-SpaJ-GfTN-5orX-K5AM-IGuKcD 
    ├─MyVolume-swapvol (dm-1) 71149c9e-22b7-4349-8045-a632f2ff63c6   [SWAP]
    └─MyVolume-rootvol (dm-2) 1c5cf473-72a5-4066-b65e-2fdbe78fa231   /
sdb                                                                  
├─sdb1                        8EBC75B8BC759C01                       
└─sdb2                        D20877650877478D                       
sdc                                                                  
└─sdc1                        68463BC6463B9432                       
sdd                                                                  
└─sdd1                        B88407A8840767E8                       
sr0                                                                  

fstab 的内容:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=1c5cf473-72a5-4066-b65e-2fdbe78fa231 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda3 during installation
UUID=41589165-270f-4be5-bbfd-7fe66112f485 /boot           ext2    defaults        0       2
UUID=71149c9e-22b7-4349-8045-a632f2ff63c6 none            swap    sw              0       0

crypttab 的内容:

sda4_crypt UUID=dd217bb3-30f3-496a-8dc9-12abc62e0b0f none luks,discard,lvm=MyVolume

据我所知,上面的一切看起来都是正确的。我怀疑问题不在于安装/卸载加密系统,而在于 live-USB 上的文件存在一些奇怪的依赖关系。这似乎意味着当我从 live-USB chroot 到加密文件系统时,指南 [1] 的第 6 步出了问题。从 live-USB 内部开始的相关命令(直接来自 [1])是:

cd /mnt
mkdir root
mount /dev/mapper/root root
mount /dev/mapper/sda1 root/boot
chroot root
mount -t proc proc /proc
mount -t sysfs sys /sys

实际执行此操作时,我根据系统需要更改了 /sda1 和 /dev/mapper/...。

如果确实出了问题,我根本不知道如何诊断问题,更不用说修复它了。

相关内容