Pour faire suite à mon dernier billet, il semble que kpartx soit capable “d’ouvrir” certains vmdk directement.

Par exemple avec la machine virtuelle fournit par Nuxeo:

sudo kpartx -va nuxeovm-flat.vmdk
  add map loop2p1 (254:0): 0 7997984 linear /dev/loop2 63
  add map loop2p2 (254:1): 0 1998848 linear /dev/loop2 7999488

kpartx détecte deux partions et fourni l’information au kernel. Ce dernier monte automatiquement la première partition qui contient l’installation d’Ubuntu :) (La seconde partition est une partition de swap, elle n’est donc pas montée)

mount
  [...]
  /dev/mapper/loop2p1 on /media/72899e2b-936a-4f40-a169-cf5a157f2b19 type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks)

Comble du bonheur la partition est montée en lecture-écriture.

VMDKDIR=/media/72899e2b-936a-4f40-a169-cf5a157f2b19
sudo mount --bind /dev/ $VMDKDIR/dev
sudo mount -t proc /proc/ $VMDKDIR/proc/
sudo mount -t sysfs /sys/ $VMDKDIR/sys/
sudo cp /etc/resolv.conf $VMDKDIR/etc/resolv.conf
sudo chroot $VMDKDIR
apt-get update
apt-get dist-upgrade

Pim pam poum, la vm est à jour.

Mettre à jour une vm de cette façon a peu d’intérêt. Par contre ça permet de réparer une vm cassée ! (oui ça arrive)