Creating UBLinux

  1. Selecting Packages
  2. Creating the Distribution
  3. Editing the Boot Disk
  4. Customizing Anaconda
  5. Creating the Kickstart
  6. Making the ISOs


Our goal in creating UBLinux was to create a distribution of Linux that was created specifically with the needs of UB students, staff, and faculty in mind.

We had a few goals in mind for this project. First, we wanted to make the installation as simple as possible. We also wanted to maintain support of the software through automatic updates. For these reasons (among others), we decided to base our distribution off of Red Hat Enterprise Linux. RHEL provides our ease of installation through the use of kickstart and provides constant updates through the Red Hat Network.

In creating this documentation, we hope to streamline the process for future versions of UBLinux, and also to give back to the community which helped us, bit by bit, create our distro.

For our initial setup we created a directory called /home/ublinux/. This directory would serve as our build directory for the distribution.

mkdir /home/ublinux

We also obtained the RHEL WS 3 ISOs, and mounted them for easy access.

mount -o loop -t iso9660 rhel-3-U2-i386-ws-disc1.iso /mnt/iso
mount -o loop -t iso9660 rhel-3-U2-i386-ws-disc2.iso /mnt/iso2
mount -o loop -t iso9660 rhel-3-U2-i386-ws-disc3.iso /mnt/iso3
mount -o loop -t iso9660 rhel-3-U2-i386-ws-disc4.iso /mnt/iso4

Selecting Packages

For UBLinux, we wanted to include only those packages which would be needed by members of UB. We also wanted to make our distro simple and secure enough so a novice user could use it effectively. For this reason, we opted to exclude several development and server packages. Since we were leaving out packages, there was no reason to include them on the CD.

First, we gathered all of the packages included in the RHEL WS 3 distribution, and put them into a folder called RPMS in our build directory.

mkdir /home/ublinux/RPMS
cp -rf /mnt/iso/RedHat/RPMS/* /home/ublinux/RPMS
cp -rf /mnt/iso2/RedHat/RPMS/* /home/ublinux/RPMS
cp -rf /mnt/iso3/RedHat/RPMS/* /home/ublinux/RPMS
cp -rf /mnt/iso4/RedHat/RPMS/* /home/ublinux/RPMS

At this point, we downloaded the latest RPMS from the Red Hat Network, and replaced them in our RPM pool accordingly. This would ensure that the user would not have to download a large number of updates after installation.

Now comes the difficult part, which is selecting which packages to use. For our purposes, we based the package list off of the RPM list being used in the Public Sites. Taking a look at the kickstart for the pubsites, we can see our list of packages:

#Package install information
%packages --resolvedeps
@ admin-tools
@ authoring-and-publishing
@ base-x
#Add ons

The example above is obviously shortened, but will suffice for this documentation. Entries with a "@" sign before them signify groups, and those without show individual package names. The groups are specified in the comps.xml file, which is located in /RedHat/base of RHEL WS 3 CD1. This file not only lists the groups but also the RPMs associated with it. It is used by the installer during manual package selection (ie Office/Productivity, which contains the Open Office packages). We could edit this file, but since we're using Red Hat's kickstart to specify which packages are installed, it is not necessary.

Using both comps.xml and our package listing from the pubsite kickstart file, we removed all of the extraneous packages from the RPM directory. If you do not have a kickstart to base package selection off of, you could run through the installer up to the point where you select your own packages, then keep track of which packages you select to have installed. There is unfortunately no simple way to do this, and it will be one of the most time consuming steps in this process.

Of course, you also need to worry about dependency issues when selecting packages. One way to resolve this, as suggested in Brett Schwarz's excellent document "Hacking Red Hat Kickstart", is to create a temporary RPM database and then do a test install of all the RPMs, resolving dependency errors as they arise (and they will).

mkdir /tmp/testdb
rpm --initdb --dbpath /tmp/testdb
rpm --test --dbpath /tmp/testdb -Uvh /home/ublinux/RPMS/*.rpm

Once we've selected all the packages we want in our distro, we can move on to "Creating the Distribution".

Back to Technical Documentation index

Send Questions and comments to

Last Modified 9/02/04 12:58pm