在 Ubuntu 中,我已将原始磁盘 .img 文件安装为循环设备,其中包含安装了 Ubuntu 的 LUKS 加密 LVM。
它的安装方式如下:(输出来自lsblk -o NAME,PKNAME,KNAME,FSTYPE,SIZE /dev/loop0
NAME PKNAME KNAME FSTYPE SIZE
loop0 loop0 240G
├─loop0p1 loop0 dm-11 ext4 487M
├─loop0p2 loop0 dm-12 1K
└─loop0p5 loop0 dm-13 crypto_LUKS 239.5G
└─cloneluks dm-13 dm-14 LVM2_member 239.5G
├─ubuntuclone-lv_swap dm-14 dm-15 8G
└─ubuntuclone-lv_root dm-14 dm-16 ext4 231.5G
当我给出已安装的 LV 名称时,是否有任何命令可以在脚本中用于返回根“块设备”(我不确定这是否是正确的术语)?
我希望它能lsblk -no pkname /dev/ubuntuclone/lv_root
起作用,但它什么也没输出——使用kname
会给我dm-16
。
我想去loop0
。
我也看到了这个答案,暗示我可以使用"$(basename "$(readlink -f /dev/VG/LV)")"
,但我不知道如何使用它:
dev=/dev/ubuntuclone/lv_root ; echo "$(basename "$(readlink -f $dev)")"
输出dm-16
。
我不知道如何“超越” crypto_LUKS 容器。
这就是我所寻找的:
输入:
/dev/ubuntuclone/lv_root
或者ubuntuclone-lv_root
我希望获得输出:
/dev/loop0
谢谢。
编辑:我认为使用lsblk --json | jq
可能正是我想要的,但我在制定正确的咒语时遇到了很多麻烦jq
......