Search code examples
virtual-machinemountqemukvm

Changing password of a Virtual Machine


I have some virtual machines with me. I want to write a script which automates the following process...

  • It mounts the virtual machine (with linux as the os) to a location say /mnt/image
  • It modifies the /etc/passwd (or the equivalent file) to change the password of the user
  • Unmount the virtual machine

Since, I am using libvirt I am having some qcow2 images of the virtual machine. to mount the image on my ubuntu, I am using nbd module. Here are the commands that I am trying :

modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 image.qcow2
mount /dev/nbd0p1 /mnt/image

It gives me the error:

mount: special device /dev/nbd0p1 does not exist

When I replace nbd0p1 with nbdo I am getting the following error (though I am not sure what I am trying to do by this)

mount: you must specify the filesystem type

Any suggestions so as what could be the problem... ?


Solution

  • [Not a direct answer to the question, but an alternate]
    You can try to convert qcow2 image to raw and then, mount the raw image.

    convert:

    qemu-img convert -f qcow2 image.qcow2 -O raw image_raw.raw
    

    mount:

        sudo losetup /dev/loop0 image_raw.raw
        sudo kpartx -a /dev/loop0
        sudo mount /dev/mapper/loop0p3 /mnt/image
        sudo mount /dev/mapper/loop0p2 /mnt/image/boot