On Thu, Aug 11, 2011 at 07:10:21PM +0100, Richard W.M. Jones wrote:
On Wed, Aug 10, 2011 at 05:16:13PM -0700, David Konerding wrote:
> Hi,
> Still trying to get libguestfs appliance test to work on Ubuntu Lucid. I
> figured out my umask was causing problems and fixed that. now I'm on to a
> new problem. libguestfs-test-tool reports the following:
>
> febootstrap: mounting new root on /root
> febootstrap: chroot
> /proc/uptime: No such file or directory
> execl: /init: No such file or directory
> febootstrap: debug: listing directory /
> 2 d . 040755 4096 88619:5000
> 2 d .. 040755 4096 88619:5000
> 11 d lost+found 040700 16384 0:0
> 12 d bin 040755 4096 23083:5000
> 13 d boot 040755 4096 23083:5000
> 14 d etc 040755 4096 23083:5000
> 109 d lib 040755 4096 23083:5000
> 156 d sbin 040755 4096 23083:5000
> 157 d usr 040755 4096 23083:5000
> 534 d var 040755 4096 23083:5000
> 3701 - init 100750 3264 23083:5000
>
> Note, init is indeed a file (a shell script). I checked the root and initrd
> images, and they both have init (the initrd has an init binary, the root has
> a shell script that starts udev etc).
The problem is that the kernel gives the same error "execl: /init: No
such file or directory" for a whole variety of reasons. These
include:
- /init missing (obviously not the case here)
- /bin/sh missing
- any library that /bin/sh needs is missing
- ld-linux missing
So you need to make sure /bin/sh is there. If it's a symlink (eg. to
dash) then the destination file is there. Then do 'ldd /bin/sh' and
make sure all of the required libraries and ld-linux are there.
Additionally, these files are pulled at runtime from the host.
So say that /bin/sh needs /lib/libc.so.6 which is a symlink to
/lib/libc-2.14.90.so, then you would need to check:
- /lib/libc.so.6 listed in appliance/supermin.d/hostfiles
- /lib/libc-*.so listed in appliance/supermin.d/hostfiles
- /lib/libc.so.6 exists on the host filesystem and is readable
by non-root.
- File(s) matching /lib/libc-*.so exist on the host filesystem and
are readable by non-root.
You may need to force the cached appliance to be rebuilt between tests
by doing:
rm -rf {/tmp,/var/tmp}/.guestfs-*
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/