Automated Installation of Large-Scale Linux Networks

Need to load Linux on 100 workstations? Learn some tricks and techniques that could save you days of tedious work.
Preparing the Tools

Before we could embark on setting up super-Kickstart, we needed to obtain and set up some software packages. The first was the etherboot package (see Resources). To serve our purpose, the package had to be modified a little as follows.

In the directory etherboot/netboot/mknbi-linux, edit the file mknbi.h as shown in Listing 1.

Listing 1

Now, edit the configuration file for etherboot, etherboot/src/Config.32, as follows. Locate the line:


and change it to:

If the target machine has a BIOS that does not configure the network card properly, you may also need to append this line with -DCONFIG_PCI_DIRECT before compiling the packages.

Next, we moved to the top etherboot directory and did a make all to compile all the binaries.

Then, we created a directory to hold all the necessary executables for this setup. We copied the file etherboot/src/floppyload.bin and the appropriate ROM images, .rom and .lzrom, from the etherboot/src-32/ directory to this location. The file mknbi was also copied from the etherboot/netboot/mknbi-linux/ to this directory.

The second required tool was the streplace utility (see Resources). This useful package was utilized for replacing strings in files while configuring host-specific parameters that change with each workstation, e.g., host name and IP address. After compiling the binary, it was also copied to the working directory mentioned above. With these tools in hand, we happily moved on to the next step.

No More Installation Disk

A closer look at the Red Hat installation disk reveals that it contains a Linux kernel, an initial ramdisk image and some configuration files. For our purposes, we utilized only the kernel and the initial ramdisk image. To have a look at the contents of the disk image, mount it as a loop device using these commands:

mount -o loop
cd mount_point

We then copied the kernel image (vmlinuz) and the initial ramdisk (initrd.img) to the directory we created earlier. In addition, the file syslinux.cfg provided the kernel options necessary for initiating a Kickstart install. They were noted. We had no further use for the installation disk beyond this point.

Setting up a Kickstart Option File

The Kickstart HOWTO discusses the syntax of the ks.cfg file in detail. Although very informative, it takes too long to generate this file. Therefore, the method we devised was to first install Red Hat Linux 6.1 on a machine using the “normal” CD-ROM method. All packages, options and settings for our to-be-target-machine were manually specified. Once the system was up and running, it was tested for optimum performance and then used as prototype for the rest of the installations.

A special package called mkkickstart also had to be installed. The mkkickstart utility can extract information from an installation and print it on the standard output. We used it to do exactly that:

mkkickstart >ks.cfg

Any Kickstart installation that is now run with ks.cfg as the configuration file will create a replica of our prototype workstation. We did some minor editing of this file to implement some changes. Listing 2 is a sample from the start of the file.

Listing 2

Post-Install and Customization

The Kickstart technique offers provisions for executing any necessary post-install procedures needed once the installation is complete. This feature, besides allowing individual customization, is particularly useful when packages other than those included with the standard Red Hat distribution are to be installed. In our case, these included JDK (Java Development Kit) for Linux, among many others. We added the following lines to the post-install section and created a separate script and Perl program (see Listings 3 and 4) that would execute when the Red Hat installation had finished:

cd /root
tar -xvzf install:/kickstart/install.tar.gz
cd installfiles
cd /root
rm -rf installfiles

The tar file (install.tar.gz) was placed on the Installation Server (install), from where it could be retrieved and executed to customize the system. Our special customization included un-tarring JDK from our ftp server, setting up linuxconf for web access, specifying the DNS server and allowing root remote shell access of workstation from the servers.

Listing 3

Listing 4



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Good Job

Ishtiaq Ahmed's picture

Dear Brothers:

I hope you have done the above mentioned task very well. I work in an organization which is looking forward for the same kind of deployment at its network. Network consist of 500+ Computers & all of them are to be installed with RED HAT LINUX 9. I hope you will provide me some online help on all this.


assgin hostname to client

Sukhwinder Singh's picture

hello sir,
i want to ask somethig about remote installation. i want to assgin hostname to client host during the installation not directly but from server . how can i do this. plz suggest me.

I think you will need to use

anonymous's picture

I think you will need to use DHCP + DNS inorder to configure hostnames