- Selecting Packages
- Creating the Distribution
- Editing the Boot Disk
- Customizing Anaconda
- Creating the Kickstart
- Making the ISOs
For UBLinux, the kickstart files are extremely important. Kickstart is simply a way of automating the Red Hat installation process. However, if you alter the RPMs (without subsequently altering the comps.xml file) you may want to consider creating a specialized kickstart for your distro. This keeps it so users don't try to install packages that you've removed from the CD. For UBLinux users, it also makes the installation process that much easier.
Two kickstart files are present on the UBLinux CD: one for ResNet/DHCP networking configuration, and one for anything other than DHCP. The only difference between the two files is the "network" line near the beginning of the kickstart file.
We won't go into every setting allowed in the kickstart (since Red Hat already did it). The header of the kickstart files is as follows:
# Generated by Kickstart Configurator # Customized by Jason Lasker, David Aquilina, Joshua Gardner, # and David Dudek for UBLinux network --bootproto=dhcp #Reboot after installation reboot #Install Red Hat Linux instead of upgrade install #Use CDROM installation media cdrom #Set Language Support langsupport zh_CN.GB2312 zh_TW.Big5 cs_CZ da_DK nl_NL fr_FR de_DE is_IS it_IT ja_JP.eucJP ko_KR.eucKR no_NO pt_PT ru_RU.k0I8r sl_SI es_ES sv_SE uk_UA --default=en_US #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #System authorization infomation auth --useshadow --enablemd5 #Network information #Firewall configuration # We'll do our own firewall config via an RPM firewall --disabled #XWindows configuration information xconfig --depth=24 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot
This specifies settings that we'd like to have default for UBLinux. Some settings were left out so that the user is prompted during installation (such as the root password).
The next section is a listing of the packages to be installed. If you read our section on "Selecting Packages", this should look pretty familiar.
#Package install information %packages --resolvedeps @ admin-tools @ authoring-and-publishing @ base-x ......... #Add ons aspell-da aspell-de aspell-en-ca aspell-en-gb aspell-es .........
The --resolvedeps argument means that kickstart will also install any packages that the list requires. Listings with @ signs are groups of packages, and if you list a package it means you install every package that is labeled as either "default" or "mandatory" in comps.xml. xml. You can also exclude particular packages in groups by using "-(package name)". We used this to not install the GCC Java package as well as a few others, as they conflicted with the newer versions we wanted to install.
-gcc-java -java-1.4.2-gcj-compat
Finally, there is a %post section where you can specify any post installation scripts you want to run. For UBLinux, we use this section to change a few settings (such as configuring UBLinux for USB hotplugging) and install UB specific packages not installed during the main setup process. In UBLinux 4, the VPNClient, IPTables rules, and the documentation package were installed using the post-install process.
# cdrom is not mounted during post
mkdir -p /mnt/postconfig
mount /tmp/cdrom /mnt/postconfig
# copy our postconfig to the installed system
cp -rf /mnt/postconfig/ub-postconfig /mnt/sysimage/tmp/
%post
# Create S99postkickstart to apply SENS config to run at run level 3
#
cat > /etc/rc3.d/S99postkickstart <<EOKICK
#!/bin/sh
#
# Warn the user about what's going to happen:
#
echo ""
echo ""
echo "Now performing post-KickStart installation tasks. The"
echo "system will reboot once this is done."
echo ""
echo "Special thanks to Jason Lasker and the SENS team for assistance"
echo "with this post-install script."
echo ""
sleep 5
ln -s /bin/tcsh /usr/local/bin/
#run through post install scripts
/bin/sh /tmp/ub-postconfig/postinstall 2>&1 | tee /var/tmp/postinstall.log > /dev/console
#Remove postconfig files from tmp
/bin/rm -rf /tmp/ub-postconfig
# Delete this script so it doesn't go again:
rm -f /etc/rc*.d/S99postkickstart
sleep 5
reboot
EOKICK
#End of S99postkickstart file
for dir in rc2.d rc5.d; do
ln /etc/rc3.d/S99postkickstart /etc/$dir/S99postkickstart
done
chmod 755 /etc/rc3.d/S99postkickstart
In UBLinux 2.0, we simply called "rpm -U *.rpm" to install these packages. However, in UBLinux 3.0 and 4, we created a series of scripts that are copied to a temporary directory, and executed these scripts as part of the runlevel. These scripts are designed to destroy themselves after running initially. Doing it this way allowed us to make sure that the postinstall is completed, and also to give the user some form of GUI to see the progress of the postconfig installation.
To see these postconfig scripts, feel free to download the UBLinux 4 Upgrade for RHEL WS 4 from our download site. (Please note: you need to be either on campus or connecting through the UBVPN client to access our download site).
All of the scripts and RPMs we wanted installed were put into a ub-postconfig directory. This directory was then copied to disc 4 of the distribution, where the postconfig install would take place.
cp -r ub-postconfig /home/ublinux/i386/disc4
Once finished, we copied dhcp.ks.cfg and ppp.ks.cfg to disc 1 of our distribution.
cp *.ks.cfg /home/ublinux/i386/disc1
The distribution is almost finished. All that is left is to take our discs and package them by "Making the ISOs".
Send Questions and comments to ublinux-support@buffalo.edu.
Last Modified 8/25/05