Hello Richard,
I found what the problem was and the udev symlinks where not created. The init script in the appliance uses a full paths for udevadm (/sbin/udevadm) which in my case was wrong. In Arch Linux udevadm is hosted under /usr/bin, not /sbin. When I fixed this, libguestfs was able to communicate with the appliance VM.
Since PATH variable is defined and exported in init, there is no need in using full paths for external programs. As far as I've seen this affects all the git branches in libguestfs's repository. Please find attached a patch for the master branch.
Nikos Skalkotos,
Athens, Greece
On Thu, Feb 23, 2012 at 08:50:12PM +0200, Nikos Skalkotos wrote:
[...]
I don't know specifically why it fails with ArchLinux, but the problem
is caused by the /dev/virtio-ports/* symlinks not getting created by
udev.
/dev/vport0p1 exists:
but udev doesn't make the corresponding /dev/virtio-ports symlink:
> crw------- 1 root root 252, 1 Feb 23 18:17 vport0p1
The symlink is supposed to be created by this udev rule:
> /dev/virtio-ports/org.libguestfs.channel.0: No such file or directory
/lib/udev/rules.d/50-udev-default.rules:KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
So I'd start by looking to see if that rule exists in the udev rules
that Arch is using. Secondly if it does exist, is the corresponding
*.rules being copied into the appliance? (Check appliance/supermin.d/
hostfiles)
In an old Ubuntu that has udev that predates having this rule, we add
the following patch:
http://libguestfs.org/download/binaries/ubuntu1004-packages/0002-ubuntu-10.04-Use-dev-vport0p1.patch
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v