[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libguestfs] Test fails in arch linux

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 24 February 2012 10:25, Richard W.M. Jones <rjones redhat com> wrote:
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

/dev/vport0p1 exists:

> crw------- 1 root root 252,   1 Feb 23 18:17 vport0p1

but udev doesn't make the corresponding /dev/virtio-ports symlink:

> /dev/virtio-ports/org.libguestfs.channel.0: No such file or directory

The symlink is supposed to be created by this udev rule:

/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/

In an old Ubuntu that has udev that predates having this rule, we add
the following patch:



Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.

--- a/appliance/init
+++ b/appliance/init
@@ -32,13 +32,13 @@ elif [ -x /sbin/start_udev ] && /sbin/start_udev; then
 elif [ -x /sbin/udevd ]; then
   echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
   /sbin/udevd --daemon
-  /sbin/udevadm trigger
-  /sbin/udevadm settle
+  udevadm trigger
+  udevadm settle
 elif [ -x /lib/udev/udevd ]; then
   echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
   /lib/udev/udevd --daemon
-  /sbin/udevadm trigger
-  /sbin/udevadm settle
+  udevadm trigger
+  udevadm settle
   echo No udev, creating /dev manually
   mount -t tmpfs none /dev
@@ -147,4 +147,4 @@ else
-/sbin/reboot -f
+reboot -f

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]