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 dist ribution 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 4 ISOs, and mounted them for easy access.
mount -o loop -t iso9660 RHEL4-U1-i386-WS-disc1.iso /mnt/iso
mount -o loop -t iso9660 RHEL4-U1-i386-WS-disc2.iso /mnt/iso2
mount -o loop -t iso9660 RHEL4-U1-i386-WS-disc3.iso /mnt/iso3
mount -o loop -t iso9660 RHEL4-U1-i386-WS-disc4.iso /mnt/iso4
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 developme nt 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.
We also copied in the majority of the custom built RPMs for our distribution. These consisted of other software packages not included by Red Hat that we wanted our users to have, including a movie player, Podcast aggregator, Java compiler, etc. See the RPMs and Software section from the documentation index for more info on how we did this.
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 aspell-da aspell-de aspell-en-ca aspell-en-gb aspell-es .........
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 i n /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".
Send Questions and comments to ublinux-support@buffalo.edu.
Last Modified 8/25/05