nob*_*bar 35 umount luks 13.10
当我离开我的电脑时,我的加密 USB 驱动器不知何故被意外卸载(尽管当时它仍然是物理连接的)。我一直无法恢复(还没有尝试重新启动)。我现在已经完全断开了设备的连接,但是当我尝试删除 /dev/mapper 中的悬空条目时,我仍然收到“设备或资源繁忙”的消息。我可以在不重新启动的情况下重新连接和安装驱动器吗?
这是我尝试过的(长名称更改为“xxxxx”)...
$ sudo dmsetup ls
luks-xxxxx (252:1)
luks-yyyyy (252:0)
$ sudo umount /dev/mapper/luks-xxxxx
umount: /dev/mapper/luks-xxxxx: not mounted
$ sudo fuser --kill /dev/mapper/luks-xxxxx
$ echo $?
1
$ sudo dmsetup info -c luks-xxxxx
Name Maj Min Stat Open Targ Event UUID
luks-xxxxx 252 1 L--w 1 1 0 CRYPT-LUKS1-xxxxx-luks-xxxxx
$ sudo dmsetup remove luks-xxxxx
device-mapper: remove ioctl on luks-xxxx failed: Device or resource busy
Command failed
Run Code Online (Sandbox Code Playgroud)
重新连接设备后...
$ sudo cryptsetup luksOpen "/dev/sde1" "luks-xxxxx"
Device luks-xxxxx already exists.
Run Code Online (Sandbox Code Playgroud)
[编辑] 这一次,我通过关闭没有打开文件但已从相关设备上的文件夹启动的 GUI 文本编辑器解决了该问题。所以问题变得更加具体:您如何确定哪个应用程序使设备保持打开状态?
请记住,这lsof似乎不是一个简单的解决方案,因为一旦设备断开连接,提供的关联名称lsof不再包括断开连接的设备的名称。
nob*_*bar 35
经过两年的斗争,我想我终于完全破解了它!
dmsetup ls 为您提供所需的数据:
$ sudo dmsetup ls
luks-xxxxx (252:1)
Run Code Online (Sandbox Code Playgroud)
然后
sudo lsof |grep 252,1
Run Code Online (Sandbox Code Playgroud)
这似乎sudo在这里很关键——至少在某些情况下是这样。
这应该为您提供关闭设备上所有打开文件所需的信息——包括打开文件的名称和违规应用程序的进程 ID。您可以简单地转到这些应用程序并关闭它们,但蛮力方法可能类似于:
kill -9 (process ID)
Run Code Online (Sandbox Code Playgroud)
关闭所有文件后,问题中显示的一些命令行工具可能是必要的,以便在可以正常重新打开之前关闭现有安装。
小智 14
尝试在停止密码之前停止 LVM 组:
lvchange -a n [LVM_Group_name]
然后
cryptsetup -v luksClose [LUKS_name]
样本:
lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56314 次 |
| 最近记录: |