[Libguestfs]  use guestfish to mount live virtual machines

Richard W.M. Jones rjones at redhat.com
Fri May 30 18:50:12 UTC 2014


On Sat, May 31, 2014 at 12:38:15AM +0800, sjy wrote:
> 
> Hello, I've tried to use guestfish to lively mount virtual machine image. Here are some problems I met.

> 1. The name parameter in below command must be
> org.libguestfs.channel.0. or else the guest would produce error
> 'failed to connect to virtio-serial' and
> '/dev/virtio-ports/org.libguestfs.channel.0: No such file or
> directory' even though there did exists a file 'com.test.my' in
> 'dev/virtio-ports' directory.

> sudo kvm -drive file=ubuntu-1204-vm.img -m 512 -vga std -k en-us
> -vnc :1 -net nic -net
> tap,ifname=tap1,script=./qemu-ifup,downscript=no -daemonize -device
> virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -chardev
> socket,id=charchannel0,path=/var/lib/libvirt/qemu/test.agent,server,nowait
> -device
> virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.test.my

The daemon (running inside the virtual machine) expects that the
virtio-serial port has the exact name "org.libguestfs.channel.0".  If
you give the virtio-serial port any other name then it just won't
work.

> 2. I leaved the first problem by altering the device name to default
> org.libguestfs.channel.0, now I can visit the live guest by
> guestfish. However, any write or edit operation like vi or write
> don't work even I set --rw option with guestfish. It seems like
> guestfish just write the results to a tmp file in /tmp/guestfish**/
> directory rather than the guest image file. I don't know if it needs
> a writeback operation to make the changes happen. Besides, read
> operation like cat can only read files produced before the mount
>  operation, any real time modification by the guest can't be found
> with guestfish --live.

That's pretty odd.  What exact guestfish command are you running?

Note that guestfish --live will only work correctly when the guest is
managed by libvirt.  So if you're starting the guest using qemu
commands directly, I don't see how it can work.  You can see the API
calls that guestfish makes by adding the '-x' option.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list