Chapter 5. Frequently Asked Questions

Q: Where are the images stored?
Q: How do I make an autoinstall diskette?
Q: How do I make an autoinstall CD?
Q: How do I make an autoinstall punch card?
Q: How do I configure my server to net boot ia64 clients?
Q: How do I set up my autoinstall clients so that the console is available via the serial port?
Q: Why do installations take so much longer when done using a serial console?
Q: How do I Configure my DHCP v3 server?
Q: Does the DHCP server have to be on the image server?
Q: How do I add a driver for a special card to the autoinstall kernel?
Q: How do I exclude files or directories during a getimage?
Q: Do I have to do anything to prepare a client from which I will get an image?
Q: Can I use the autoinstalldiskette or autoinstallcd on more than one machine?
Q: How do I push an image to a client?
Q: How do I pull an image to a client?
Q: How does an autoinstall client know which image to install?
Q: How do I upgrade to a new version of SystemImager?
Q: What if I want to assign static IPs to my clients?
Q: I want to use DHCP to assign static IPs to my clients, but I don't want to have to enter my 1000 mac addresses manually. What can I do?
Q: What kind of performance can I expect?
Q: How do I update an image on the image server?
Q: How do I update a client to match an image?
Q: What is the updateclient.local.exclude file used for?
Q: How do I build a new "front-end" server?
Q: How do I edit the scripts so only the first disk is partitioned? I must leave the other disks alone.
Q: How can I use SystemImager to update a small set of files? For instance, I apply a security patch and I want all boxes to reflect that change.
Q: Is there a log file where autoinstall client status is kept?
Q: What other software is SystemImager based on?
Q: I configured my non-software RAID image to install as a software RAID image by modifying my autoinstallscript.conf file, but the install failed. What in the world could possibly be wrong?
Q: What's an override directory?
Q: How do I expand a filesystem?
Q: How do I change the size of a partition?
Q: How do I change the filesystem(s) that my target machine(s) will use?
Q: How do I change the disk type(s) that my target machine(s) will use?
Q: Can I use a single image across machines with differing disk or partition configurations?

Q: Where are the images stored?

A: The images are stored in /var/lib/systemimager/images.

Note

NOTE: If you are short on disk space in this location, move the directory to another location:

mv /var/lib/systemimager/images /home/systemimager_images

Then create a soft link to the new directory.

ln -s /home/systemimager_images /var/lib/systemimager/images

Q: How do I make an autoinstall diskette?

A: Run the mkautoinstalldiskette command on the image server.

Q: How do I make an autoinstall CD?

A: Run the mkautoinstallcd command on the image server.

Q: How do I make an autoinstall punch card?

A: Run the mkautoinstallpunchcard command on the image server - deprecated :)

Q: How do I configure my server to net boot ia64 clients?

A:

  • Install tftp (tftp-hpa >= 0.28 is recommended) on your boot server.

  • Configure inetd or xinetd to enable tftp.

    • To configure inetd, find the tftp entry in /etc/inetd.conf and change it to:

      tftp dgram udp wait root /usr/sbin/in.tftpd -v -v -v -s /tftpboot

      Change "/usr/sbin/in.tftpd" to be the full path to your tftp server, if you installed it in a different directory.

      The -v's aren't strictly required, but will make the tftp server more verbose, and makes it easier to diagnose problems.

      Finally, send a HUP signal to inetd (this causes it to reload its configuration file). # killall -HUP inetd

    • To configure xinetd, change:

         service tftp
      {
              socket_type             = dgram
              protocol                = udp
              wait                    = yes
              user                    = root
              server                  = /usr/sbin/in.tftpd
              server_args             = -s /home/tftp
              disable                 = no
      }
               

      to:

      service tftp
      {
              socket_type             = dgram
              protocol                = udp
              wait                    = yes
              user                    = root
              server                  = /path/to/tftp-hpa/sbin/in.tftpd
              server_args             = -s /home/tftp -r blksize
              disable                 = no
      }
               

      Finally, send a USR2 signal to xinetd (this causes it to reload its configuration file).

  • Next, you must configure your DHCP server so that it provides boot information to the client. Be careful when setting up your DHCP server - if it is set to hand out dynamic addresses, and is located on a public subnet, it may give bogus information to other machines on the network - possibly destroying data on that machine. It is recommended that you use a private subnet for doing network installs. It is also recommended that you configure your DHCP server to only answer requests from known hosts, based on the MAC address.

    Add an entry for the boot client in /etc/dhcpd.conf

    host mcmuffin {
            hardware ethernet 00:30:6e:1e:0e:83;
            fixed-address 10.0.0.21;
            filename "elilo.efi";
    }
           
  • Copy elilo.conf and elilo.efi from an IA-64 machine to your tftpboot diretory and make them world readable. These files can be found in /etc, /boot/efi, or /usr/lib/elilo, or in the elilo package.

  • Editing /tftpboot/elilo.conf

    image=vmlinux-rh.img
            label=redhatinst
            initrd=rhinst.img
            read-only
            root=/dev/ram
           

    If ABCDEFGH is the client's IP address in hex, elilo.efi will use the first one of the following files that it finds as its configuration file:

    • ABCDEFGH.conf

    • ABCDEFG.conf

    • ABCDEF.conf

    • ...

    • A.conf

    • elilo.conf

    You can use the ipcalc utility, which is available in the syslinux package, to calculate the Hex representation of an IP address in dotted quad form.

  • Configure the client to support TFTP booting.

    1. Boot to EFI

    2. Enter the Boot option maintenance menu

    3. Add a boot option

    4. Press return on the line saying "Load file [Acpi/.../Mac()]"

    5. Call the entry Netboot or something similar

    6. Save and exit, Netboot is now available in the boot menu.

  • Q: How do I set up my autoinstall clients so that the console is available via the serial port?

    A: In SystemImager 2.1, mkautoinstallcd and mkautoinstalldiskette support a -append option, allowing you to specify additional options for the autoinstall kernel, including serial console options. For example: mkautoinstallcd -out-file aicd.iso -append "console=ttyS0"

    Early versions of SystemImager require additional changes, as cited below:

          Making SystemImager work with a serial console
          Michael S. Fischer, <michael@auctionwatch.com>
          Last modified: 01/04/26 19:20:27
          
          The current version of SystemImager as of this writing (1.4.1)
          does not support PXE booting of clients with serial console
          support.  This document describes how to rebuild the kernel and
          initrd such that serial console support is possible.
          
          Step 1: Download the sources
          
          Retrieve the source tarball from
          http://prdownloads.sourceforge.net/systemimager/va-systemimager-source-1.4.1.tar.bz2
          Save it and unpack it to /tmp on your boot server.
          
          # bzcat va-systemimager-source-1.4.1.tar.bz2 | tar -C /tmp -xf -
          
          
          Step 2: Prepare the kernel
          
          # cd /tmp/va-systemimager-source-1.4.1
          # bzcat other_source_and_patches_used_in_this_release.tar.bz2 | tar xf -
          # cd other_source_and_patches_used_in_this_release
          # cd linux-2.2.18+reiserfs+raid+aic7xxx+VM
          
          Now edit the .config file in this directory.  Search for a line
          that reads:
          
          # CONFIG_SERIAL is not set
          
          Change this line to read:
          
          CONFIG_SERIAL=y
          CONFIG_SERIAL_CONSOLE=y
          
          Then build the kernel:
          
          # make clean && make bzImage
          
          
          Step 3: Install the kernel
          
          Next, you'll need to place the kernel in /tftpboot and
          /tftpboot/X86PC/UNDI/linux-install:
          
          # cp arch/i386/boot/bzImage /tftpboot/kernel
          # cp arch/i386/boot/bzImage /tftpboot/X86PC/UNDI/linux-install/kernel
          
          
          Step 4: Fix the initrd
          
          The initrd, or initial RAM disk containing the root filesystem, needs
          to be unpacked, mounted, and have its contents edited as follows:
          
          # cp /tftpboot/initrd.gz /tmp
          # cd /tmp && gunzip initrd.gz
          # mkdir /mnt2
          # mount /tmp/initrd /mnt2 -o loop
          # cd /mnt2/dev
          # rm -f console
          # mknod -m 622 console c 5 1
          # mknod -m 600 ttyS0 c 4 64
          
          You should now unmount the initrd, recompress
          it, and return it to /tftpboot:
          
          # cd /tmp
          # umount /mnt2
          # gzip -9 initrd
          # cp initrd.gz /tftpboot
          # cp initrd.gz /tftpboot/X86PC/UNDI/linux-install
          
          
          Step 5: Edit syslinux.cfg
          
          The final step is to configure pxelinux to pass the "console="
          arguments to the kernel.  Following is a suitable syslinux.cfg
          file:
          
          DEFAULT kernel
          APPEND console=tty0 console=ttyS0,9600n8 vga=extended load_ramdisk=1
          prompt_ramdisk=0 initrd=initrd.gz root=/dev/ram rw
          DISPLAY message.txt
          PROMPT 1
          TIMEOUT 50
          
          Edit the contents of /tftpboot/pxelinux.cfg/syslinux.cfg to reflect
          the changes above.  Then, copy this file to
          /tftpboot/X86PC/UNDI/linux-install/pxelinux.cfg/syslinux.cfg.
         

    Q: Why do installations take so much longer when done using a serial console?

    A: The serial console itself often causes the bottleneck. By default, each filename is printed to the console as it is copied from the server. Because serial consoles typically have very low bandwidth, installations may be delayed while the system waits for the names to be printed to the console. You can edit the .master script for your image to turn off verbosity.

    Change: rsync -av --numeric-ids $IMAGESERVER::$IMAGENAME/ /a/ to: rsync -av --numeric-ids $IMAGESERVER::$IMAGENAME/ /a/ This change will cause a silent install to occur. If you would like to see activity during this stage for assurance that something is executing, you can add an ascii spinner. Replace the above rsync command with this code:

    echo -n "Silently rsyncing over image...|" { while :; do echo -n "\b/"; sleep 1; echo -n "\b-"; sleep 1; echo -n "\b\\"; sleep 1; echo -n "\b|"; sleep 1; done }& pid=$! rsync -a --numeric-ids $IMAGESERVER::$IMAGENAME/ /a/ || (kill $pid && shellout) kill $pid echo "done."

    Q: How do I Configure my DHCP v3 server?

    A: Luca Filipozzi provided details on configuring DHCP v3 servers:

    If you are using DHCP v3 from ISC, you will need to use the following configuration directives to make use of option 100:

    option systemimager-server code 100 = text; option systemimager-server "192.168.1.1";

    The first line defines 'systemimager-server' as the name for option 100 and that it shall take as an argument a text string. The second line assigns a value (an IP address) to the name.

    Q: Does the DHCP server have to be on the image server?

    A: No. If you are using DHCP, you can use "option-100" and set its value to the IP address of the image server. If you use mkdhcpstatic to configure your dhcpd.conf file, it will ask you for the IP address of your image server and add the appropriate entry for you.

    Because this is not the official use for option-100, work is being done to either get an official number assigned or use a number from the private number range.

    Q: How do I add a driver for a special card to the autoinstall kernel?

    A: If you have hardware that requires a driver that was not included in the standard flavor boot package, you can build a custom boot package. Unlike earlier (pre-2.9) releases, you will need more than a new kernel binary. However, also unlike earlier releases, you can have multiple boot packages installed simultaneously on your system.

    The following instructions describe how to create a new boot package. These steps should be used for adding a driver, whether it be a network driver, block device driver, a module, or statically linked.

    Warning

    Boot packages are tightly linked to the version of SystemImager you are using. If you make customizations to a boot package for SystemImager 3.0, you will need to forward port those changes when you move to SystemImager 3.2.0.

    Creating a custom boot package. If the driver you need to add can be built as a module, you may choose to add it directly onto the autoinstall ramdisk. You should definitely choose this method if you need to add a driver for the network interface you plan to install over, and the driver is only available as a module. This is also the suggested method for adding a module for a device when it failed to be discovered at install time. Alternatively, you can drop in a patch to be added to the kernel build tree, or make modifications to the .config file used to build the kernel.

    1. Download the source tarball for the release of SystemImager you are using from http://systemimager.org/.

    2. Extract the source tarball and cd into the top level of the source tree.

      		# tar xvfj systemimager-3.0.0.tar.bz2
      		# cd systemimager-3.0.0
      	      

    3. If you need to add a patch to the kernel, you can do so by dropping your patch file in the patches subdirectory of the toplevel build tree. You will need to follow the naming convention, which is described in the README.patches file in the patches/ subdirectory.

    4. If you need to modify the .config file for your kernel, e.g. to turn on a driver, you can find these files in the patch directory, named linux.<arch>.config. (If you added a patch that includes a new driver, you should be prompted to turn that on later, during the 'make binaries' step).

    5. If you are building a module from external source to be included in the autoinstall ramdisk, you will need a linux source tree to build against. You can generate a tree by running 'make patched_kernel-stamp'. This will create a source tree in the src/linux directory in the source tree. Follow the instructions that came with your module source to compile your module against this tree.

    6. If you have a binary module (created in the last step), you can now copy it into the initrd_source/my_modules directory. You will then need to add instructions to the INSMOD_COMMANDS file in order to have your module loaded at install time. Take a look at the comments in that file for details.

    7. Next, edit the FLAVOR file in the top level of the source tree. Choose an alphanumeric string that describes your modifications.

      		echo "mygigabitnic" > FLAVOR
      	      

    8. From the toplevel of the source tree, run 'make binaries'. See the README file for details on what your system needs to have installed for this to succeed.

    9. Run 'make binaries_install'. This will copy the binaries built in the last step into the appropriate place in /usr/share/systemimager/boot directory. You will now have an additional flavor to choose from when you create autoinstall media.

    10. File a bug asking for this driver to be added to future releases.

    Q: How do I exclude files or directories during a getimage?

    A: As of 2.0.1 there is no support for this, though it should be added soon.

    Q: Do I have to do anything to prepare a client from which I will get an image?

    A: Yes, you should install the systemimager-client package. If this package is already installed, simply run the prepareclient command prior to running getimage from the image server.

    You should also add any software, configure any files, and do any tweaking to customize the system to your specifications.

    Q: Can I use the autoinstalldiskette or autoinstallcd on more than one machine?

    A: Yes. The autoinstall media is generic and can be on any machine you want to autoinstall.

    Q: How do I push an image to a client?

    A: Starting with version 1.5, you can use the pushupdate command, which essentially logs into each client and executes the updateclient command.

    Q: How do I pull an image to a client?

    A: If you ran mkdhcpserver to configure your dhcp information, and if you answered all the questions you were asked when you did ran getimage, including the hostnames and IP addresses, then all you have to do is boot your client with any one of the following three forms of autoinstall media:

    1. autoinstalldiskette - takes longer to boot, and floppies are often quite volatile

    2. autoinstallcd - takes slightly less time to boot and is more durable, but you have to have a CD burner and clients that can read CD-R's)

    3. network boot - boot time is dramatically, but this method requires PXE capable network cards in the clients and additional server-side configuration.

    Search this document for mkautoinstallcd and mkautoinstalldiskette for more information.

    Q: How does an autoinstall client know which image to install?

    A: In order to better understand the answer, begin by reading the steps the autoinstall client goes through:

    1. Boots off the autoinstallmedia

    2. Gets an IP address from DHCP

    3. Determines the IP address of the image server via DHCP

    4. Requests a hosts file from the image server

    5. Finds its hostname in the hosts file based on its IP address

    6. Requests a script from the image server based on its hostname (for example: www237.sh)

    7. Executes this script.

    The script in question is typically a soft link pointing at the $image.master script that was dynamically created when you ran getimage. This script explicitly states which image to pull from the image server. Open it and take a look.

    These scripts and the $image.master script can be found in /var/lib/systemimager/scripts.

    Q: How do I upgrade to a new version of SystemImager?

    A: If you already have SystemImager 1.0 or later, you can simply install the new version over the older one. Using a packaged version (.rpm,.deb) is recommended to prevent cruft build-up on your system.

    If you have a pre-1.0 version then you can't simply install a new version on top of it. Depending on the version changes, the following may work for you, but it is not guaranteed. If you want to try this method, please check with the CHANGE.LOG document to find out what has changed.

    Move your images directory out of the SystemImager directory hierarchy and back up your /etc/rsyncd.conf file and any other configuration files you may have changed. Then install SystemImager as if you were installing it for the first time, after which you can move your images directory and /etc/rsyncd.conf file back.

    Q: What if I want to assign static IPs to my clients?

    A: You can. getimage will ask you if you want to assign static IPs.

    Q: I want to use DHCP to assign static IPs to my clients, but I don't want to have to enter my 1000 mac addresses manually. What can I do?

    A: SystemImager comes with the mkdhcpstatic utility. As you boot your client systems, the DHCP server will assign addresses sequentially. By initially booting your systems in the order you want them to receive their IP addresses, you can ensure that they get the IP address you want them to have.

    After booting your systems, run mkdhcpstatic. It will re-write your /etc/dhcpd.conf file, associating each client's MAC address with its host name. You should then restart your dhcpd daemon. Subsequently, each time your clients request an IP address via DHCP, they will always be assigned their appropriate static IP address.

    Note: The client's hostname is used, instead of an explicit IP address, so that you simply have to change the hosts file on the DHCP server (or DNS, NIS, etc.) to change the IP address that that client recieves.

    Note: Assigning static IP addresses by DHCP is the author's preferred method for administering IP on a large number of systems.

    Q: What kind of performance can I expect?

    A: Ole Holm Nielsen, Department of Physics, Technical University of Denmark reports:

    In our SystemImager installation, we can install 18 clients simultaneously with 1.8 GB images in 6 minutes. Please see The NIFLHEIM SystemImager Page. Our server has Gigabit network, 2 GB of RAM, dual Intel Xeon 2.4 GHz, whereas the clients have Intel P4 and 100 Mbit Ethernet.

    James Braid reports:

    From a Celeron 700/512Mb server over 100Mbit ethernet, we manage to do a ~1Gb image in about 7 - 10 min. The disks are 5x 120Gb Seagate Barracuda V in one LVM set (non striped), with a ReiserFS filesystem.

    Q: How do I update an image on the image server?

    A: There are two ways to update an image on the image server:

    1. Make the changes to one of your clients and run the getimage again.

      - You can specify the same image name, in which case the current image will be updated (only changes are pulled across).

      - Or you can specify a new image name and have a form of revision control. (This method is highly recommended)

      Note: Every time getimage is run, it recreates the $image.master script. If you have customized your $image.master script, be sure to save it before running getimage again.

    2. Modify the files directly. You can simply cd into the appropriate image directory and edit the files there, or (recommended) you can cd into the image directory and run 'chroot . sh'. This will change your working root directory to the root of the image you want to manipulate. You can then run rpm and other commands on the image and not have to worry about getting confused and damaging the image server. When you are done, simply type exit and you will be returned to your normal shell.

    Q: How do I update a client to match an image?

    A: Once you have updated an image on the image server, you can then update your clients to reflect it. (You do not need to do a complete re-autoinstall.) You will find the command, updateclient, on your clients, which takes as its parameters the name of the image server and the name of the image you want to update the client to. Run updateclient -help to get more information about this command.

    Use the revision control method recommended in the "How do I update an image on the image server?" FAQ to bring your production environment back to a known state after doing an updateclient to a test image (i.e. do an updateclient to the last working image).

    The file /etc/systemimager/updateclient.local.exclude on your clients is used to exclude files and directories from being updated by the updateclient command. You can modify it to suit your own environment.

    Q: What is the updateclient.local.exclude file used for?

    A: It is used by the updateclient command. See the "How do I update a client to match an image?," FAQ for more information.

    Q: How do I build a new "front-end" server?

    A: Another way of stating the question is as follows, "We are in the process of building a new 'front-end' server for our Linux cluster. We'd like to try using SystemImager as our node cloning software if possible.

    I've read through the SystemImager FAQ and found the following:

    All of the clients for a particular image should have an identical hardware configuration. They should at least have the same hard drive(s) and the same ethernet card(s).

    This is a problem because our front-end from which the image will be captured has a SCSI hard drive and a Gigabit ethernet card. On the other hand, our 64 compute nodes have IDE disk drives and fast ethernet cards. Is it impossible to build a new "front-end" server?

    No. But you will need to customize a bit.

    Once you have run getimage, you will need to edit the conf.modules in the image on the image server to load the appropriate module for your ethernet card.

    vi /var/lib/systemimager/images/$imagename/etc/conf.modules

    Your entry should look like this:

              alias eth0 tulip
            

    You will need to edit the following files in your image:

              /var/lib/systemimager/images/$imagename/etc/fstab
              /var/lib/systemimager/scripts/$imagename.master
              /var/lib/systemimager/images/$imagename/etc/lilo.conf
            

    Use your editor's search function to change every instance of "sda" to "hda."

    Proceed as normal.

    Q: How do I edit the scripts so only the first disk is partitioned? I must leave the other disks alone.

    A: After you run prepareclient, look in the /etc/partitionschemes directory on that client. You will find a file that has the partition information for each of that client's disks. Simply delete the files for each of the disks that you don't want partitioned. Run getimage and proceed as normal.

    After running getimage, run vi /var/lib/systemimager/images/$imagename/etc/fstab to verify the fstab file in the image has no entries for the other disks.

    Q: How can I use SystemImager to update a small set of files? For instance, I apply a security patch and I want all boxes to reflect that change.

    A: Use the updateclient command on the client.

    1. Choose one of the following methods to update the image on the server:

      1. apply the patch to the image directly

      2. apply the patch to a client and then do another getimage specifying the same imagename (won't take long and will update the image)

      3. apply the patch to a client and then do another getimage specifying a different imagename. This is preferred as it allows for revision control.

    2. Run updateclient on the clients that you want to update. Execute updateclient -help to get the syntax.

    Q: Is there a log file where autoinstall client status is kept?

    A: Yes. SystemImager logs can be found on the image server in the directory /var/log/systemimager

    Q: What other software is SystemImager based on?

    A: SystemImager is mostly written in Perl, and makes use of the following software:

    • busybox

    • bc

    • devfsd

    • ISC dhcp

    • discover

    • dosfstools

    • e2fsprogs

    • jfsutils

    • xfsprogs

    • Linux kernel

    • parted

    • pxelinux

    • rsync

    • syslinux

    • raidtools

    • reiserfsprogs

    • systemconfigurator

    • uClibc

    Also be sure to take a look at System Installation Suite (SIS), which includes SystemInstaller, SystemImager, and System Configurator. SystemInstaller is a tool that allows you to install images directly to a SystemImager image server. System Configurator, which is also used by the standard SystemImager release, performs configuration of target machine uniquenesses such as IP addresses, network cards, and initial RAM disks needed to boot clients after installation.

    Q: I configured my non-software RAID image to install as a software RAID image by modifying my autoinstallscript.conf file, but the install failed. What in the world could possibly be wrong?

    A: When you convert a non-software RAID image to a software RAID image, you must manually configure the software RAID information for your image. These modifications may be made directly to the image, or if you want to keep the image virgin, these changes may be made in an override directory.

    There are many things that you need to know in order to manually configure a computer to use software RAID on Linux. The following are key points, or tips, intended to remind or assist someone already familiar with this process. If you need more information on software RAID than the pointers provided below, please refer to The Software RAID HOWTO at http://unthought.net/Software-RAID.HOWTO/.

    • Drivers in the kernel: You must have the software RAID drivers compiled for the kernel your client will boot from when it finishes installing.

    • Device files: In order for software RAID to work, you must have the proper device files in your image. These device files have names like /dev/md0, /dev/md1, etc. If these device files do not exist, cd into the ./dev directory of your image, then copy and past the following command to create them. If the software RAID devices are already created, running this command won't hurt a thing.

                for I in 0 1 2 3 4 5 6 7 8 9; do sudo mknod -m 660 md$I b 9 $I; done
               

    • /etc/raidtab: You must create this file and/or customize it to meet your needs.

    • Other files: You will also need to modify the files used by your boot loader (lilo, grub, etc.). See your boot loaders documentation for more information on it's configuration file format. Here is one quick tip: in lilo.conf, instead of using /dev/md as for the boot= parameter, try using the software RAID device that will hold your /boot/ directory (where the kernel lives). For example, if /boot/ will be mounted on /dev/md1, then specify boot=/dev/md1.

    After you have manually configured your image to use software RAID, then make your changes to the autoinstallscript.conf file. Changes that you will need to make to this file may include the following. See "man autoinstallscript.conf" for more information.

    • In the <disk> section, add raid to the comma seperated list of flags for each partition that will participate in a RAID array.

    • In the <fsinfo> section, set real_dev to the software RAID device that will hold each filesystem.

    Now you can run mkautoinstallscript to create a new, software RAID enabled, autoinstallscript for your image!

    Q: What's an override directory?

    A: An override directory is a directory that get's copied over to your target machines after the main image is transferred. All contents in the override directory are copied over to the root of the target machine's new filesystem. All file attributes will be replicated including directories, permissions, and ownership. This allows you to "over-ride" files in the image. Override directories live in /var/lib/systemimager/overrides/.

    You don't have to use an override directory, but it can be useful in many cases. For example, you could have two different autoinstall scripts for the same image: one for SCSI machines, and one for IDE machines. You could have your /etc/fstab and /etc/lilo.conf files in override directories. Perhaps one override directory is called my_image-ide, and the other my_image-scsi.

    Simply edit the master autoinstall script, and change the overrides variable to include the appropriate override directory. For example, you could change OVERRIDES="my_image" to OVERRIDES="my_image-ide".

    If you will be using the same overrides on all of your machines, you don't have to change the autoinstall script at all. Simply put the files that you want to override in the overrides directory that has the same name as your image, and you're good to go!

    And if you want to get funky, you can use multiple override directories. They will be used in the order that you specify them -- each directory over-riding the previous directories. This methodology can be used in a highly complex environment where there may be slight variations between several classes of machines, but where they all start with the same base image. For example, OVERRIDES="my_image-ide web_app".

    Q: How do I expand a filesystem?

    A: See "How do I change the size of a partition?".

    Q: How do I change the size of a partition?

    A: Just follow the simple steps below:

    1. Open your autoinstallscript.conf file in your favourite text editor.

      NOTE: The default autoinstallscript.conf file that is created by prepareclient, lives in the ./etc/systemimager directory in your image.

    2. Find the <disk> section where dev is set to the disk that holds the partition you want to change.

    3. Find the <part> entry where num is the number of the partition in question.

    4. Change size to the new partition size. If the size you specify is not sufficient to hold the files that will live there, then your autoinstall will fail.

      NOTE: Each <disk> section can use either MB (megabytes) or % (percentages) to specify partition sizes. See "man autoinstallscript.conf" for more information.

    5. Run mkautoinstallscript to create a new autoinstall script using the new parameters.

      NOTE: By default, mkautoinstallscript will use the autoinstallscript.conf file located in the ./etc/systemimager directory in your image. See "man mkautoinstallscript" and "man autoinstallscript.conf" for more information.

    Q: How do I change the filesystem(s) that my target machine(s) will use?

    A: Follow these simple steps:

    1. Make sure that the kernel in your image will support the filesystem(s) you want to use.

    2. Open your autoinstallscript.conf file in your favourite text editor.

      NOTE: The default autoinstallscript.conf file that is created by prepareclient, lives in the ./etc/systemimager directory in your image.

    3. Find the <fsinfo> entry where mp (mount point) is set to the filesystem that you want to change.

    4. Change fs to the filesystem you want to use. See "man autoinstallscript.conf" for a list of supported filesystems.

      NOTE: It is your responsibility to know the capabilities of the filesystem you choose. Depending on the filesystem, you may also need to change the options used to mount the filesystem. These are set by the options entry. If you choose these options poorly, your autoinstall may fail.

      NOTE: In most cases (that is in all the cases we've seen so far), it is not necessary to change the fs entries in the <disk> section when changing filesystem types. The fs entries in the <disk> section don't actually determine the filesystem that will be created on those partitions, but for some reason parted, the tool SystemImager uses for creating disk partitions, requires that argument.

    5. Run mkautoinstallscript to create a new autoinstall script using the new parameters.

      NOTE: By default, mkautoinstallscript will use the autoinstallscript.conf file located in the ./etc/systemimager directory in your image. See "man mkautoinstallscript" and "man autoinstallscript.conf" for more information.

    Q: How do I change the disk type(s) that my target machine(s) will use?

    A: Follow these simple steps:

    1. Make sure that the kernel in your image has drivers for the disk types you want to use.

    2. Open your autoinstallscript.conf file in your favourite text editor.

      NOTE: The default autoinstallscript.conf file that is created by prepareclient, lives in the ./etc/systemimager directory in your image.

    3. Find the <disk> entry where dev (disk device) is set to the disk that you want to change.

    4. Change dev to the device file for the disk you want to use. For example, changing from SCSI to IDE can be as simple as changing dev="/dev/sda" to dev="/dev/hda".

    5. Change the real_dev entries in the <fsinfo> section to match the new devices.

    6. Run mkautoinstallscript to create a new autoinstall script using the new parameters.

      NOTE: By default, mkautoinstallscript will use the autoinstallscript.conf file located in the ./etc/systemimager directory in your image. See "man mkautoinstallscript" and "man autoinstallscript.conf" for more information.

    Q: Can I use a single image across machines with differing disk or partition configurations?

    A: Yes. Customize a seperate autoinstallscript.conf file for each configuration type, and use mkautoinstallscript to create a seperate master autoinstallscript for each configuration.

    If a particular configuration's boot device will be different from the boot device in the image, you will also need to put a customized copy of your boot loader's configuration file(s) in an override directory.

    See the following sections for more information:

    • How do I change the size of a partition?

    • How do I change the filesystem(s) that my target machine(s) will use?

    • How do I change the disk type(s) that my target machine(s) will use?

    • What's an override directory?