[Libguestfs] Which ISO format/layout does virt-builder expect?

Scott Gorton scott.gorton at ineoquest.com
Thu Dec 10 19:53:55 UTC 2015


I'm running into a bit of trouble using virt-builder and I'm hoping that someone might be able to point in the right direction.

My build process creates a custom ISO image which is subsequently used to kickstart an Oracle X4-2 server using PXE.  The ISO is a minimal install and contains a suite of packages and customization scripts to properly configure our box during first boot.  The process works great for kickstarting baremetal machines as well as VMs created with virt-manager or vsphere.

I'd like to be able to use virt-builder to build virtual images automatically (i.e., take our .ISO and generate a qcow2 of a properly installed system).  Unfortunately, virt-builder doesn't seem to like the format of my ISO image.  The tool dies during the "Setting passwords" step because it's attempting to create a temp file in /etc and my ISO doesn't have an /etc directory at this point.

Here's a snippet that shows the error message:

[  16.0] Setting passwords
libguestfs: trace: mktemp "/etc/shadow.guestfsXXXXXX"
libguestfs: trace: mktemp = NULL (error)
virt-builder: error: libguestfs error: mktemp: /etc/shadow.guestfsyU5Zwo:
No such file or directory

Is there a particular ISO format that virt-builder expects?

As a test, I used virt-builder to successfully create a centos-6 image.  I looked in my .cache/virt-builder directory, unxz'd the image and then mounted the partitions.  It appears that the sanitized centos-6 image is fully complete (i.e., contains a typical filesystem, has an /etc, an /etc/passwd...etc.) whereas mine seems more like a linux image that is in a ready-to-be-installed state.

virt-inspector on my ISO shows:

<?xml version="1.0"?>
<operatingsystems>
  <operatingsystem>
    <root>/dev/sda</root>
    <name>linux</name>
    <arch>x86_64</arch>
    <distro>oraclelinux</distro>
    <major_version>6</major_version>
    <minor_version>0</minor_version>
    <package_format>rpm</package_format>
    <package_management>yum</package_management>
    <format>installer</format>
    <mountpoints>
      <mountpoint dev="/dev/sda">/</mountpoint>
    </mountpoints>
    <filesystems>
      <filesystem dev="/dev/sda">
        <type>iso9660</type>
        <label>iDVA 4.95.0 x86_64</label>
        <uuid>2015-11-20-19-50-52-00</uuid>
      </filesystem>
    </filesystems>
    <applications/>
  </operatingsystem>
</operatingsystems>

Likewise, if I mount my ISO I have a filesystem that looks like:

drwxrwxr-x  3 test test      4096 Nov 19 18:03 images
drwxrwxr-x 11 test test      4096 Nov 19 18:05 iqcustom
-rw-rw-r--  1 test test 966785078 Nov 19 18:08 iqcustom.tar.gz
drwxrwxr-x  2 test test      4096 Nov 19 18:03 isolinux
-rw-rw-r--  1 test test      2368 Nov 19 18:03 ks-dell.cfg
-rw-rw-r--  1 test test     15158 Nov 19 18:03 ks-oracle.cfg
-rw-rw-r--  1 test test     15985 Nov 19 18:03 ks-pxe.cfg
-rw-rw-r--  1 test test      3061 Nov 19 18:03 ks-pxe-oracle-vm.cfg
-rw-rw-r--  1 test test      2176 Nov 19 18:03 ks-vm.cfg
drwxrwxr-x  2 test test     36864 Nov 19 18:04 Packages
drwxrwxr-x  2 test test      4096 Nov 19 18:04 repodata
-r--r--r--  1 test test      3106 Nov 19 18:05 TRANS.TBL
drwxrwxr-x  3 test test      4096 Nov 19 18:05

In contrast, mounting one of the partitions in the centos-6 image shows:

dr-xr-xr-x.  2 root root  4096 Oct 31  2014 bin
drwxr-xr-x.  2 root root  4096 Oct 31  2014 boot
drwxr-xr-x.  2 root root  4096 Oct 31  2014 dev
drwxr-xr-x. 73 root root  4096 Dec  9 16:26 etc
drwxr-xr-x.  2 root root  4096 Sep 23  2011 home
dr-xr-xr-x. 10 root root  4096 Oct 31  2014 lib
dr-xr-xr-x.  9 root root 12288 Oct 31  2014 lib64
drwx------.  2 root root 16384 Oct 31  2014 lost+found
drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.  3 root root  4096 Oct 31  2014 opt
drwxr-xr-x.  2 root root  4096 Oct 31  2014 proc
dr-xr-x---.  2 root root  4096 Oct 31  2014 root
dr-xr-xr-x.  2 root root 12288 Oct 31  2014 sbin
drwxr-xr-x.  2 root root  4096 Oct 31  2014 selinux
drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
drwxr-xr-x.  2 root root  4096 Oct 31  2014 sys
drwxrwxrwt.  2 root root  4096 Oct 31  2014 tmp
drwxr-xr-x. 13 root root  4096 Oct 31  2014 usr
drwxr-xr-x. 19 root root  4096 Oct 31  2014 var


Note: we build our ISO using mkisofs.  Is there some other tool/process that we should use to generate ISOs that satisfy virt-builder?  Should I be starting from a Live CD format?

Cheers!


________________________________

NOTICE: This communication and any attachments may contain confidential and/or privileged information of IneoQuest Technologies, Inc. ("IneoQuest"). This communication is intended solely for the use of the individual or entity to which it is addressed. If you are not the intended recipient of this communication, you are hereby notified that any dissemination, distribution, copying or other use of this communication or the information it contains is strictly prohibited and may be unlawful. If you have received this communication in error, please notify the sender immediately by reply e-mail and destroy all copies of this communication (including attachments), electronic or otherwise. If you are a party to a written Non-Disclosure Agreement ("NDA") with IneoQuest, you should maintain the contents of this communication (including attachments) in confidence to the full extent specified in the NDA.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20151210/dbd5ca99/attachment.htm>


More information about the Libguestfs mailing list