At 2016-07-21 17:45:13, "Richard W.M. Jones" <rjones(a)redhat.com> wrote:
On Thu, Jul 21, 2016 at 04:54:46PM +0800, Chen Hanxiao wrote:
>
> Hi, Rich:
>
> I met a supermin issue on CentOS 7.1:
>
> supermin: version: 5.1.10
> supermin: rpm: detected RPM version 4.11
> supermin: package handler: fedora/rpm
> supermin: acquiring lock on /root/test/aaa/lock
> supermin: build: /usr/lib64/guestfs/supermin.d
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/base.tar.gz type gzip base
image (tar)
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/daemon.tar.gz type gzip base
image (tar)
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/excludefiles type
uncompressed excludefiles
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/hostfiles type uncompressed
hostfiles
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/init.tar.gz type gzip base
image (tar)
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/packages type uncompressed
packages
> supermin: build: visiting /usr/lib64/guestfs/supermin.d/udev-rules.tar.gz type gzip
base image (tar)
> supermin: build: 185 packages, including dependencies
> supermin: build: 30676 files
> supermin: build: 17495 files, after removing unreadable files
> supermin: build: 8834 files, after matching excludefiles
> supermin: build: 8840 files, after adding hostfiles
> supermin: build: 8870 files, after munging
> supermin: kernel: picked kernel vmlinuz-3.10.0-229.el7.x86_64
> supermin: kernel: picked modules path /lib/modules/3.10.0-229.el7.x86_64
> supermin: kernel: kernel_version 3.10.0-229.el7.x86_64
> supermin: kernel: modules /lib/modules/3.10.0-229.el7.x86_64
> supermin: ext2: creating empty ext2 filesystem
'/root/test/aaa.8v6mujxm/root'
> supermin: ext2: populating from base image
> supermin: ext2: copying files from host filesystem
> supermin: ext2: copying kernel modules
> supermin: ext2: creating minimal initrd '/root/test/aaa.8v6mujxm/initrd'
> supermin: ext2: wrote 0 modules to minimal initrd
> ^
> |
>
> It seam that supermin failed to write modules into initrd.
That doesn't look good!
What is supposed to happen here is that the modules path
(/lib/modules/3.10.0-229.el7.x86_64) is searched in order to find any
modules matching one of these patterns:
https://github.com/libguestfs/supermin/blob/master/src/ext2_initrd.ml#L33...
You could try doing for example:
find /lib/modules/3.10.0-229.el7.x86_64/ -name 'ext4.ko*'
BTW this isn't always a problem. It could be that you are using a
self-compiled CentOS kernel which doesn't have any modules
(eg. everything is compiled into the kernel). If libguestfs still
works, then there's nothing to worry about. However I am not aware of
any CentOS distributed kernels which are configured like that.
Hi, Rich.
Thanks for your quick reply.
the virtio modules in kmods did existed in this machine.
with -v -v -v, I got:
...
supermin: build: excluding
/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/scsi/virtio_scsi.ko
...
supermin: ext2: copy_file
/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/scsi/virtio_scsi.ko ->
/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/scsi/virtio_scsi.ko
...
Then I got:
supermin: ext2: copy_file /lib/modules/3.supermin: ext2: creating minimal initrd
'/root/test/aaa.lopr92ap/initrd'
supermin: ext2: wrote 0 modules to minimal initrd
But did not got this kind of log:
supermin: ext2: initrd: visiting module kernel/drivers/scsi/virtio_scsi.ko
Which found on the machine supermin works fine.
It looks strange.
Regards,
- Chen
You can also try choosing a different kernel, by setting:
export SUPERMIN_KERNEL_VERSION=3.10.0-123.el7.x86_64
export SUPERMIN_KERNEL=/boot/vmlinuz-$SUPERMIN_KERNEL_VERSION
export SUPERMIN_MODULES=/lib/modules/$SUPERMIN_KERNEL_VERSION
> But it works fine on another centos 7.1 machine.
>
> Could you please give me some hints on how to debug this kind of issue?
You can get more debugging by adding more -v options, eg:
supermin5 --build -f ext2 -v -v -v /usr/lib64/guestfs/supermin.d -o /tmp/appliance.d
The effect of using -v multiple times is to increase the "debug"
setting in the code, so more messages may be printed, for example:
https://github.com/libguestfs/supermin/blob/master/src/ext2_initrd.ml#L62
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v