Custom Linux bootable CD
From WBITT's Cooker!
(→comps.xml) |
(→First, the setup) |
||
Line 27: | Line 27: | ||
</pre> | </pre> | ||
- | The directory /data/cdimages/CentOS-5.4-x86_64-core (which is empty at the moment), will be the custom install tree, and referred to as $RHROOT in this document. | + | The directory <b>/data/cdimages/CentOS-5.4-x86_64-core</b> (which is empty at the moment), will be the custom install tree, and referred to as $RHROOT in this document. Once again: |
+ | |||
+ | <b> | ||
+ | * BuildHost: kworkhorse | ||
+ | * BuildDirectory ( $RHROOT): /data/cdimages/CentOS-5.4-x86_64-core | ||
+ | </b> | ||
===Required Packages on the build host=== | ===Required Packages on the build host=== |
Revision as of 15:43, 1 July 2010
This article is in relation to the article CENTOS Server CD project , and is "heavily" based on http://people.redhat.com/rkeech/custom-distro.txt . So here it goes.
Contents |
First, the setup
My machine, on which I am doing all these steps / building the Custom CENTOS CD, is named kworkhorse, but will be referred to as the role buildhost in this text. It runs Fedora 11 64 bit.
I have a directory /data/cdimages, which contains full install tree of original CENTOS 5.4 64 bit CD in CENTOS-5.4-x86_64 subdirectory, and an empty CENTOS-5.4-x86_64-core (build) directory. The directory layout looks like the following:
[root@kworkhorse cdimages]# pwd /data/cdimages [root@kworkhorse cdimages]# tree -d . ├── CentOS-5.4-x86_64 │ ├── CentOS │ ├── images │ │ ├── pxeboot │ │ └── xen │ ├── isolinux │ ├── NOTES │ └── repodata └── CentOS-5.4-x86_64-core [root@kworkhorse cdimages]#
The directory /data/cdimages/CentOS-5.4-x86_64-core (which is empty at the moment), will be the custom install tree, and referred to as $RHROOT in this document. Once again:
- BuildHost: kworkhorse
- BuildDirectory ( $RHROOT): /data/cdimages/CentOS-5.4-x86_64-core
Required Packages on the build host
Before you continue, you must install the following packages on your base OS.
yum -y install anaconda anaconda-runtime mkisofs cdrecord
Note: anaconda-runtime is RHEL/CENTOS specific package, and is part of the RHEL/CENTOS distribution. As evident below:
[kamran@kworkhorse CentOS]$ ls /data/cdimages/CentOS-5.4-x86_64/CentOS/anaconda-* -1 anaconda-11.1.2.195-1.el5.centos.x86_64.rpm anaconda-runtime-11.1.2.195-1.el5.centos.x86_64.rpm [kamran@kworkhorse CentOS]$
This package "anaconda-runtime" provides the following packages:
[kamran@kworkhorse CentOS]$ rpm -qpl anaconda-runtime-11.1.2.195-1.el5.centos.x86_64.rpm . . . /usr/lib/anaconda-runtime /usr/lib/anaconda-runtime/boot /usr/lib/anaconda-runtime/boot/boot.msg /usr/lib/anaconda-runtime/boot/general.msg /usr/lib/anaconda-runtime/boot/options.msg /usr/lib/anaconda-runtime/boot/param.msg /usr/lib/anaconda-runtime/boot/rescue.msg /usr/lib/anaconda-runtime/boot/syslinux.cfg /usr/lib/anaconda-runtime/buildinstall . . . . . . /usr/lib/anaconda-runtime/pyrc.pyo /usr/lib/anaconda-runtime/readmap /usr/lib/anaconda-runtime/screenfont-x86_64.gz /usr/lib/anaconda-runtime/scrubtree /usr/lib/anaconda-runtime/splittree.py /usr/lib/anaconda-runtime/splittree.pyc /usr/lib/anaconda-runtime/splittree.pyo /usr/lib/anaconda-runtime/trimmodalias /usr/lib/anaconda-runtime/trimpciids /usr/lib/anaconda-runtime/upd-instroot /usr/lib/anaconda-runtime/yumcache . . . [kamran@kworkhorse CentOS]$
If you are using Fedora, you may not find anaconda-runtime. Instead anaconda and anaconda-runtime are merged into single package, which provides the same functionality :
[root@kworkhorse cdimages]# rpm -ql anaconda | grep runtime . . . /usr/lib/anaconda-runtime /usr/lib/anaconda-runtime/boot /usr/lib/anaconda-runtime/boot/boot.msg /usr/lib/anaconda-runtime/boot/grub.conf /usr/lib/anaconda-runtime/boot/syslinux.cfg /usr/lib/anaconda-runtime/buildinstall /usr/lib/anaconda-runtime/buildinstall.functions /usr/lib/anaconda-runtime/genmodinfo /usr/lib/anaconda-runtime/getkeymaps /usr/lib/anaconda-runtime/keymaps-override-x86_64 /usr/lib/anaconda-runtime/loader /usr/lib/anaconda-runtime/loader/init /usr/lib/anaconda-runtime/loader/loader . . . . . . /usr/lib/anaconda-runtime/pyrc.pyc /usr/lib/anaconda-runtime/pyrc.pyo /usr/lib/anaconda-runtime/readmap /usr/lib/anaconda-runtime/screenfont-x86_64.gz /usr/lib/anaconda-runtime/scrubtree /usr/lib/anaconda-runtime/trimpciids /usr/lib/anaconda-runtime/upd-instroot /usr/lib/anaconda-runtime/upd-updates . . . [root@kworkhorse cdimages]#
The environment variables
Quote from the original Howto: Many of the scripts provided in these packages are Python scripts. For them to work properly the PYTHONPATH variable must be set to /usr/lib/anaconda and be exported in the shell environment in which the commands are run. Many of the scripts are from the directory /usr/lib/anaconda-runtime, so either put this in the PATH or provide an absolute path to commands.
So, you should setup the necessary environment variables. I would advise you to add the following two lines to your ~/.bash_profile, so each time you open a terminal, these values are set.
export RHROOT=/data/cdimages/CentOS-5.4-x86_64-core export PYTHONPATH=/usr/lib/anaconda export PATH=$PATH:/usr/lib/anaconda-runtime
Note: It is important to note, that even on a 64 bit system (as I have), these two paths are /usr/lib/anaconda and /usr/lib/anacoda-runtime. i.e. These two directories does not exist in /usr/lib64.
comps.xml
From the original howot: Comps file. The file $RHROOT/RedHat/base/comps.xml defines the set of packages known to the installer. The set of packages described in comps.xml must be reduced to only those required. It is not necessary to remove the unused package files from $RHROOT/RedHat/RPMS/. Some packages from $RHROOT/RedHat/RPMS/ are necessary in the process of building the install CD even though they might be excluded from the custom build. Here is an example comps.xml file from the original howto (RHEL3 based).