解锁 LUKS 分区时出错(激活设备失败:文件存在)

解锁 LUKS 分区时出错(激活设备失败:文件存在)

我在使用 Manjaro 的系统中使用 KDE dolphin 解锁 luks 加密磁盘时遇到问题。

这个问题并不重要。可以通过重新启动来解决,但有时这样做并不方便,我发现了解一下可能会有用为什么这个问题首先出现。

因此,重新启动后我第一次解锁设备时一切都很好。如果我卸载系统,下次也可以。问题是,有时,我连接设备,输入密码后出现以下错误:

访问“Home”时发生错误,系统响应:请求的操作失败:解锁 /dev/sdxy 时出错:无法激活设备:文件存在

但是这个文件不能用 看到df -h,并且它不是通过 挂载的/etc/fstab,它总是在连接时挂载并解锁。该命令fuser不会显示任何相关内容,lsof仅返回:

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1000/doc
      Output information may be incomplete.

事实上,我看到一些进程使用这个文件夹(ps aux | grep 1000),但不知道这是否真的有助于解决问题。

1779 ?        Sl     0:03 /usr/lib/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1847 ?        S      0:03 file.so [kdeinit5] file local:/run/user/1000/klaunchermRxLKs.1.slave-socket local:/run/user/1000/kded5IKggHu.1.slave-socket
23434 ?        S      0:00 file.so [kdeinit5] file local:/run/user/1000/klauncherDwiyfV.1.slave-socket local:/run/user/1000/dolphinaVwzoi.58.slave-socket

我怀疑终止这些进程可能会有所帮助,但不知道它是否安全(不能冒险这样做,因为知道,而不是不知道)。有任何想法吗?

编辑dmsetup info:和的输出dmsetup table

DM设置信息

Name:              luks-92bde790-5ca6-441b-bad3-5c3163292c8b
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      254, 1
Number of targets: 1
UUID: CRYPT-LUKS1-92bde7905ca6441bbad35c3163292c8b-luks-92bde790-5ca6-441b-bad3-5c3163292c8b

Name:              luks-1f919383-2d4a-44e2-b28e-21bffd11dd6c
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      254, 0
Number of targets: 1
UUID: CRYPT-LUKS1-1f9193832d4a44e2b28e21bffd11dd6c-luks-1f919383-2d4a-44e2-b28e-21bffd11dd6c

dm设置表

luks-92bde790-5ca6-441b-bad3-5c3163292c8b: 0 4294963200 crypt aes-xts-plain64 0000000000000000000000000000000000000000000000000000000000000000 0 8:33 4096
luks-1f919383-2d4a-44e2-b28e-21bffd11dd6c: 0 3906401473 crypt aes-xts-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 8:2 4096

答案1

如果在查看输出后dmsetup ls发现您有陈旧的设备,您可以将其删除dmsetup remove- 最好是在仔细验证该设备确实未在使用后。

我遇到了同样的问题,这样做后我能够再次解锁并挂载我的加密 USB 硬盘:

# dmsetup ls --tree
luks-f53274db-3ede-4a27-9aa6-2525d9305f94 (254:5)
 `- (8:34)

# ls -l /dev/mapper/
total 0
crw------- 1 root root 10, 236 Nov 24 15:22 control
lrwxrwxrwx 1 root root       7 Nov 27 09:42 luks-f53274db-3ede-4a27-9aa6-2525d9305f94 -> ../dm-5

# dmsetup remove /dev/dm-5

答案2

我遇到了同样的错误(也在 Manjaro 上使用 KDE)。我的 USB 设备上有一个 LUKS 卷,但该卷未从计算机上完全删除。当我重新插入 USB 设备时,LUKS 卷拒绝解锁:

# udisksctl unlock -b /dev/sdg1
Passphrase:
Error unlocking /dev/sdg1: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Error unlocking /dev/sdg1: Failed to activate device: File exists

由于我试图解锁设备/dev/sdg1,所以我不明白如何解锁@马丁R已识别出有问题的卷 UUID(而不是其他一些没有问题的 LUKS 卷)他们的答案特别是因为 中的条目/etc/fstab具有与 中列出的不同的 UUID /dev/mapper

# grep /mount/point /etc/fstab
UUID=33333333-3333-3333-3333-333333333333 /mount/point ext4 defaults 0 0
# ls -lah /dev/mapper
total 0
crw------- 1 root root 10, 236 Oct 10 06:08 control
lrwxrwxrwx 1 root root       7 Oct 10 06:08 luks-11111111-1111-1111-1111-111111111111 -> ../dm-1
lrwxrwxrwx 1 root root       7 Oct 10 17:41 luks-22222222-2222-2222-2222-222222222222 -> ../dm-2
lrwxrwxrwx 1 root root       7 Oct 10 06:08 luks-00000000-0000-0000-0000-000000000000 -> ../dm-0

我能够验证哪个 LUKS 卷 UUID 在udisksctl与设备分区一起使用时遇到问题。

# udisksctl info -b /dev/sdg1 | grep 'IdUUID'
IdUUID:                     22222222-2222-2222-2222-222222222222

此时,哪个 dm 对象需要清理就很清楚了。

# dmsetup ls
luks-00000000-0000-0000-0000-000000000000       (254:0)
luks-11111111-1111-1111-1111-111111111111       (254:1)
luks-22222222-2222-2222-2222-222222222222       (254:2)
# dmsetup remove /dev/dm-2

然后,解锁并安装成功。

# udisksctl unlock -b /dev/sdg1
Passphrase:
Unlocked /dev/sdg1 as /dev/dm-2.
# mount /mount/point

答案3

就我而言,存在问题/etc/crypttab

我遵循了一些教程但没有真正理解它,所以我创建了一个如下文件:

secret UUID=AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA /root/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA.lukskey
secret UUID=BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB /root/BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB.lukskey

并收到错误,因为由于上述配置,系统尝试/dev/mapper/secret为每一行创建,但第二行失败。

改成下面就ok了:

luks-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA UUID=AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA /root/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA.lukskey
luks-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB UUID=BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB /root/BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB.lukskey

/dev/mapper/luks-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA这导致了和的创建/dev/mapper/luks-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB

相关内容