Udevadm 解决不工作

Jam*_*ean 5 encryption lvm mount 18.04

我刚刚在我的 NAS 上升级到 18.04。我有一个脚本,提示我的用户输入 luks 密码,然后在解密后安装驱动器。这曾经有效:

cryptsetup luksOpen /dev/md0 md0_crypt
udevadm settle --exit-if-exists=/dev/mapper/files--vg-main
mount /dev/mapper/files--vg-main /main
Run Code Online (Sandbox Code Playgroud)

但是,更新到 18.04 后,它停止工作,我得到: mount: /main: special device /dev/mapper/files--vg-main does not exist.

我还没有找到只是谷歌搜索的解决方案。我的 LUKS 容器是我的 pv。我把它放在一个叫做 files-vg 的 Vol 组中。然后我有一个路径为 /dev/files-vg/main 的逻辑卷。因此,为什么我要寻找 /dev/mapper/files--vg-main

编辑:澄清一下,该udevadm settle行没有等待足够长的 LV 可用,因此挂载失败。我可以手动调用,mount然后它会工作。

Eld*_*eek 0

这是一个丑陋的解决方法,我没有 LUKS 容器来测试:

udevadm info /dev/mapper/files--vg-main

/dev/mapper/files--vg-main您要检查的设备在哪里。如果 [ $? -eq 0 ] 那么命令成功,意味着设备存在并且您可以挂载它。

否则你必须循环并再次检查。

作为旁注,您可以在此页面上找到一些有用的 udev 调试想法。