從包含另一個 LVM 的虛擬 DomU LVM 磁碟打開 luks 加密分區
在這裡,我讓自己陷入了困境。
前段時間我在 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
它。或者更具體地說,分區表的偏移量,您可以使用partx
或kpartx
。如果你有一個分區的 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...
或者,如果你有
partx
orkpartx
,一個簡單的partx -a /dev/mapper/lvm-foobar
應該可以工作,您會發現映射的分區類似
/dev/mapper/lvm-foobarp1
或類似(kpartx
可能使用不同的名稱partx
)。然後您可以使用該映射設備 (
cryptsetup luksOpen
,vgchange
, …),因此您最終應該能夠掛載 VM 的根文件系統chroot
,以及passwd
新的根密碼。