Ubuntu

從包含另一個 LVM 的虛擬 DomU LVM 磁碟打開 luks 加密分區

  • July 1, 2013

在這裡,我讓自己陷入了困境。

前段時間我在 Xen 下搭建了一個加密的 Unbuntu 13.04。它的虛擬磁碟是一個 LVM LV。

這個 LV 在安裝過程中作為(整個)物理磁碟呈現給 DomU,我讓 Ubuntu 的安裝程序設置加密的根目錄和交換(使用 LVM)。

但是,我忘了寫下根密碼。或者我寫錯了。前幾天電源故障後,我無法以 root 身份重新進入機器。

我有 DomU:s LVM 分區的密碼,所以 DomU 上升了。我只是無法登錄。引導init=/bin/bash不起作用,因為init需要解鎖加密分區。

我也不知道如何從 Dom0 打開包含 LVM 的分區 LVM LV,因為“cryptsetup luksOpen”不接受 LVM LV 中的偏移量。

有誰知道如何進入 LV - Partition - (LVM) - LV 並重置 root 密碼?

我對Xen不熟悉。使用 KVM,我只需讓 VM 在救援或 live CD 中啟動,然後從那裡 chroot。如果您在真實桌面上遇到此問題,您會這樣做。

如果您只需要一個偏移量,通常您可以使用losetup它。或者更具體地說,分區表的偏移量,您可以使用partxkpartx

如果你有一個分區的 LV,你可以使用以下方法獲取偏移量parted

parted /dev/mapper/lvm-vmfoobar unit b print

它會像這樣列印分區偏移量(以字節為單位)

Number  Start         End           Size          Type      File system  Flags
1      1048576B      2148532223B   2147483648B   primary   fat32        lba
2      2149580800B   3223322623B   1073741824B   primary   ext2         boot
3      3224371200B   13961789439B  10737418240B  primary   ext2

因此,假設您想更直接地訪問分區 3,例如使用 offset 3224371200,您可以這樣做losetup

# losetup -f --show -o 3224371200 --sizelimit 10737418240 /dev/mapper/lvm-foobar
/dev/loop0

(sizelimit 是可選的,為了安全起見,您不能寫超出分區末尾)

並驗證它是正確的

file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext2 filesystem data, UUID...

或者,如果你有partxor kpartx,一個簡單的

partx -a /dev/mapper/lvm-foobar

應該可以工作,您會發現映射的分區類似/dev/mapper/lvm-foobarp1或類似(kpartx可能使用不同的名稱partx)。

然後您可以使用該映射設備 ( cryptsetup luksOpen, vgchange, …),因此您最終應該能夠掛載 VM 的根文件系統chroot,以及passwd新的根密碼。

引用自:https://unix.stackexchange.com/questions/81389