Eu não estou familiarizado com o Xen. Com o KVM, eu acabei de fazer a VM inicializar em um CD de resgate ou live, e chroot a partir daí. Como você faria se tivesse esse problema em sua área de trabalho real.
Se tudo que você precisa é de um offset, em geral você pode usar losetup para isso. Ou, mais especificamente, os deslocamentos para tabelas de partição, você pode usar partx ou kpartx .
Se você tiver um LV particionado, poderá obter os deslocamentos usando parted :
parted /dev/mapper/lvm-vmfoobar unit b print
e ele iria imprimir deslocamentos de partição (em bytes) como assim
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
Então, suponha que você queria acessar a partição 3 mais direta como, usando o deslocamento 3224371200 , você poderia fazê-lo com losetup assim:
# losetup -f --show -o 3224371200 --sizelimit 10737418240 /dev/mapper/lvm-foobar
/dev/loop0
(sizelimit é opcional, por segurança, então você não pode escrever após o final da partição)
e verifique se é a coisa correta
file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext2 filesystem data, UUID...
Como alternativa, se você tiver partx ou kpartx , um simples
partx -a /dev/mapper/lvm-foobar
deve funcionar e você encontraria as partições mapeadas como /dev/mapper/lvm-foobarp1 ou similar ( kpartx pode usar nomes diferentes de partx ).
E, em seguida, você pode trabalhar com esse dispositivo mapeado ( cryptsetup luksOpen , vgchange , ...) para poder montar o sistema de arquivos raiz da VM, chroot e passwd a new senha de root.