____________________________________________________________
Table of Contents
1. Introduktie
2. Anatomie van de Red Hat FTP site
2.1 De top level directory
2.2 De "RedHat" directory -- het hart van de distributie
3. RPM packages
4. Je eigen kopie van de distributie bekomen
5. Toevoegen van updates
5.1 Pas de file permissies aan
5.2 Vervang de updated RPMS
5.3 Genereer een nieuwe hdlist file
5.3.1 Belangrijke opmerking voor Red Hat 5.2
6. Uiteindelijk: de CD branden
6.1 Het maken van een bootable CD
6.1.1 Maak de disk image
6.1.2 Test de image
6.1.3 Brand de CD
7. Dit dokument...
7.1 Verwante dokumentatie
7.2 Acknowledgements
8. DISCLAIMER
______________________________________________________________________
1. Introduktie Er kunnen verschillende redenen zijn om je eigen CD te
maken. Misschien betaal je liever geen $50 voor een echte
Red Hat distributie . Of misschien heb je
liever een Red Hat distributie met je eigen programma's en eigen
updates.
2. Anatomie van de Red Hat FTP site In dezelfde 'sfeer' van de Linux
gemeenschap maakt Red Hat zijn distributie beschikbaar voor verschil
lende platformen op hun FTP site.
2.1. De top level directory De top level directory voor Red Hat Linux
release 5.1 (
pub/redhat/redhat-5.1 )
bevat distributies voor de verschillende platformen en een directory
die de updates van verschillende packages bevat die verspreid werden
nadat de CD op de markt kwam.
SRPMS/ alpha/ i386/ sparc/ updates/
In dit dokument gebruiken we de i386 distributie als voorbeeld. De
procedure die in dit dokument staan werkt ongeveer ook zo voor alle
andere platformen die Red Hat support (Alpha, Sparc, ppc, etc.), maar
is enkel getest voor het i386-platform (de auteurs zijn erg ge-
interesseerd in bijkomende informatie voor andere platformen). De root
van de i386 directory ziet er zo uit:
-rw-r--r-- 8 ftpuser ftpusers 19686 May 27 1997 COPYING
-rw-r--r-- 1 ftpuser ftpusers 3023 May 7 09:58 README
-rw-r--r-- 10 ftpuser ftpusers 2751 Sep 18 1997 RPM-PGP-KEY
drwxr-xr-x 5 ftpuser ftpusers 96 Jul 15 08:34 RedHat/
drwxr-xr-x 5 ftpuser ftpusers 8192 Jul 15 08:35 doc/
drwxr-xr-x 5 ftpuser ftpusers 8192 Jul 15 08:35 dosutils/
drwxr-xr-x 5 ftpuser ftpusers 8192 Jul 15 08:33 gnome/
drwxr-xr-x 2 ftpuser ftpusers 96 Jun 7 02:47 images/
drwxr-xr-x 4 ftpuser ftpusers 96 Jun 5 12:24 misc/
De doc directory bevat een groot deel van informatie. Heel belangrijk
is de Red Hat installatie handleiding (in het Engels) in HTML-formaat
in de directory doc/rhmanual/manual/
.
Vervolgens staan er een aantal FAQs en tenslotte de hele HOWTO en
mini-HOWTO verzameling.
De images directory bevat boot floppy images die gekopieerd worden
naar diskette. In de recentste distributie (5.1), zijn er 2 disk
images beschikbaar. De boot-image noemt boot.img, die is nodig als de
installatie gebeurd rechtstreeks van CDROM. Als je installeert van
local hard disk, NFS gemounted disks or FTP dan is de bijkomende disk
image supp.img waarschijlijk nodig. Zie sektie ``Installeren van CD''.
De misc directory bevat broncode en programma's die nodig zijn voor de
installatie.
2.2. De "RedHat" directory -- het hart van de distributie Het belan
grijkste deel van de directory tree is de
RedHat directory:
drwxr-xr-x 2 ftpuser ftpusers 24576 Jul 15 08:35 RPMS/
drwxr-xr-x 2 ftpuser ftpusers 8192 Jul 15 08:32 base/
-rw-rw-rw- 59 ftpuser ftpusers 0 Aug 15 14:21 i386
drwxr-xr-x 4 ftpuser ftpusers 96 Jun 5 12:24 instimage/
De RPMS directory bevat the grote deel van de Red Hat distributie
bestaande uit RPM (Red Hat Package Manager) files. Een RPM package
bestaat uit binaries (gecompileerde programma's) samen met alle
relevante configuratiefiles en documentatie. Zie de sektie ``RPM
packages'' voor meer informatie.
De base directory bevat verschillende registratie-files die nodig zijn
tijdens het installatie-proces, bv. de comps file, die definieert de
components (groep van packages) dat gebruikt wordt tijdens het "Choose
packages to install" fase. Een andere belangrijke file in de base
directory is de hdlist file die het meeste van de header-fields van de
RPMs in de RPMS directory bevat.
Dit betekent dat al de 'dependencies' tussen packages achterhaald kan
worden door gewoon de hdlist te lezen zonder dat elk package
afzonderlijk gelezen moet worden. Wat interessant is voor oa. FTP-
installaties.
hdlist wordt ook gebruikt voor de 'mapping' van packages tot file-
names. (bv perl naar perl-5.004-6.i386.rpm. Dit betekent dat als je
updates wil toevoegen aan je eigen CD (zie sektie ``Updates
toevoegen'') je de hdlist zal moeten wijzigen. Dit proces wordt
beschreven in sektie ``Een nieuwe hdlist-file genereren''.
De instimage directory bevat een 'life filesystem' met een reeks
programma's en gesharede libraries die nodig zijn tijdens het
installatie-proces.
3. RPM packages Het grootste deel van de Red Hat distributie bestaat
uit een reeks RPM (Red Hat Package Manager) bestanden. Een RPM package
bevat voornamelijk binaries (gecompileerd programma's) samen met rele
vante configuratie-bestanden en documentatie. Het
rpm programma is een krachtige package manager,
die kan gebruikt worden om packages te installeren, query'n,
verifieren, updaten, verwijderen en zelf bouwen in het RPM-formaat.
Rpm houdt een database bij van alle geinstalleerde software packages
zodat informatie over deze geinstalleerde software ten alle tijde
beschikbaar is.
De binary RPM bestanden in de distributie zijn gebouwd op een systeem
dat de distributie zelf gebruikte. Dit is belangrijk, want de meeste
programma's in deze packages hangen af van gesharede libraries. Sinds
Red Hat versie 5.0 werd de nieuwe versie 2 van de GNU standaard C
library (die 64-bit clean is, dus werkt op 64bit systemen) gebruikt.
Deze versie van de library wordt meestal glibc of libc6 genoemd. Alle
executables in de distributie zijn gelinked aan deze library. Als je
probeert binaries te installeren van andere distributies dan is de
kans groot dat het niet zal werken, tenzij je het libc5-package
installeert voor backward compatibility.
De namen van de RPM packages bevatten de suffix .arch.rpm, waarbij
arch de architectuur (of het platform) is. Dit kan i386 zijn voor
Intel systemen. De packages die je wil installeren moeten
overeenkomen met jouw systeem, en dus meer bepaald jouw versie van
shared libraries die op je systeem geinstalleerd zijn. Het rpm
programma is meestal vrij goed om te voorkomen
dat je fouten begaat, maar let op. Er zijn manier om toch dingen te
doen die je beter niet doet en je moet zeker weten wat je doen als je
bepaalde packages forceert bij installatie. Zolang je gebruik maakt
van je eigen distributie (en files die op je CD staan) mag je er zeker
van zijn dat je weinig fouten maakt.
Als je RPM packages ontdekt die niet geinstalleerd werden tijdens het
installatie-proces dan is dat geen enkel probleem. Je kan op elk
moment (als root) RPM-packages installeren op volgende manier:
rpm --install WindowMaker-0.18-1b.i386.rpm
Je kan zelfs rechtstreeks van Internet installeren, als jet het URL
kent van het package tenminste:
rpm --install ftp://rufus.w3.org/redhat-contrib/noarch/mirror-2.9-2.noarch.rpm
Een andere versie van een RPM package bevat de originele source-code
die nodig is om een package zelf te bouwen. Deze packages hebben de
extentie .src.rpm en bevinden zich in de SRPMS directory. Deze
packages zijn niet nodig op de installatie CD, en er is eigenlijk niet
eens genoeg plaats op een 74 minuten CD ervoor. Natuurlijk kan je een
eigen CD maken met enkel source-packages.
4. Je eigen kopie van de distributie bekomen Je hebt een kopie nodig
van de distributie op een beschrijfbare schijf die toegankelijk is
vanaf de komputer met de CD writer (duh!). Als je de laatste updates,
dan zal die directory ook toegankelijk moeten zijn vanaf diezelfde
machine, ofwel een lokale schijf, ofwel een NFS-gemounte partitie op
een andere komputer of een JAZ-disk. Je kan de distributie kopieren
van een Red Hat CD, of je kan hem afhalen via FTP. Als je voor FTP
kiest, dan is de beste manier om een korrekte kopie van de distributie
te verkijgen, gebruik te maken van het
mirror package. Mirror is een gesofistikeerde perl-script dat de
inhoud van een directory vergelijkt met een server op afstand. Het
gebruikt FTP om de files van de remote site af te halen die niet
lokaal staan, en verwijdert files die lokaal wel staan maar niet
remote. Het mirror-programma is geconfigureerd dmv. een configuratie-
file. Het mirror package is verkrijgbaar als een RPM van rufus.w3.org
. Maak je lokale kopie
mirror.redhat van de mirror configuratie file en verander de relevante
informatie vanboven in de file. Na het default gedeelte, definieer
deze packages:
package=updates
site=ftp.sunsite.auc.dk
exclude_patt=(alpha
remote_dir=/disk1/ftp.redhat.com/pub/redhat/redhat-5.1/updates
local_dir=/jaz/redhat-5.1/updates
package=dist site=ftp.sunsite.auc.dk exclude_patt=(alpha/|sparc/)
remote_dir=/disk1/ftp.redhat.com/pub/redhat/redhat-5.1/i386
local_dir=/jaz/redhat-5.1/i386
Het volgende commando zal een kopie van de gehele Red Hat tree afhalen
en plaatsen op je lokale schijf. *Denk na* voordat je dit doet, je
staat op het punt ongeveer 350Mb data af te halen.
mirror -pdist mirror.redhat
Dit zal de Red Hat FTP site mirroren naar je lokale schijf. De inhoud
van een Red Hat distributie verandert niet tussen releases, so you
only need to download this package ONCE. Al de wijzigingen aan de
distributie vind je in de updates directory. Dus, als je een up-to-
date mirror van de Red Hat distributie wil hebben, moet je enkel de
updates directory vernieuwen. Dat doe je met het volgende commando:
mirror -pupdates mirror.redhat
Je kan dit regelmatig starten, bijvoorbeeld eenmaal per week, via een
cron scriptje. De Red Hat distributie is beschikbaar op een groot
aantal FTP-servers verspreid over de hele wereld, die dagelijks ge-
update worden van de hoofdsite op . Je neemt
best een FTP-site dicht bij jou, zie ook de Red Hat FAQ
.
5. Toevoegen van updates Om updates toe te voegen, heb je write-
access nodig op dedistributie-directory, met een werkende versie van
rpm . Er zijn 3 stappen die je moet volgen:
1. Pas de file permissies aan.
2. Vervang de updated RPMs.
3. Genereer een nieuwe hdlist file.
Als je een mirror onderhoudt van de updates directory, dan kan je op
ieder moment een CD produceren met de nieuwe updates door deze drie
stappen te herhalen.
5.1. Pas de file permissies aan Tijdens het installatie process wor
den sommige programma's rechtstreeks van CD gestart. Spijtig genoeg
behoudt een FTP programma niet altijd de file permissies van de files
en directories die hij afhaalt. Daarom is het belangrijk dat je ervoor
zorgt dat de execute-permissie wordt gegeven aan programma's,
shellscripts en shared libraries, voordat het geheel op CD wordt
gezet. Dit wordt gedaan door het runnen van het
updatePerm script op je lokale kopier van de distributie:
______________________________________________________________________
#!/bin/bash
RHVERSION=5.1
LIST=/tmp/er3hd3w25
CDDIR=/jaz/redhat-${RHVERSION}
# Find all directories, and make sure they have +x permission
find $CDDIR -type d -exec chmod -c 755 {} \;
# Find all files that are executables, shell or perl scripts
find $CDDIR -type f | file -f - | grep -v RPM \
| egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST
# Find shared libraries
find $CDDIR -name \*.so >> $LIST
# Make them executable
while read file
do
if [ ! -x $file ] ; then
chmod -c 755 $file
fi
done < $LIST
/bin/rm $LIST
exit 0
______________________________________________________________________
5.2. Vervang de updated RPMS Het volgende scriptje met de naam
updateDC kopieert alle files van de update directory naar de RPMS-
directory. Het script gebruikt rpm om te achterhalen welk package
nieuwer is in de update directory. Oudere packages worden verplaatst
naar ${OLD} directory.
______________________________________________________________________
#! /bin/bash
# This script updates rpms in a RedHat distribution found in $RPMDIR.
# The old rpms will be placed in $OLDDIR.
# The new rpms should be located in $UPDDIR.
# The architechture is $ARCH.
RHVERSION=5.1
ARCH=i386
CDDIR=/jaz/redhat-${RHVERSION}
RPMDIR=${CDDIR}/${ARCH}/RedHat/RPMS
UPDDIR=${CDDIR}/updates/${ARCH}
OLDDIR=${CDDIR}/old
if [ ! -d $OLDDIR ] ; then
echo making directory $OLDDIR
mkdir $OLDDIR
fi
allow_null_glob_expansion=1
for rpm in ${UPDDIR}/*.rpm ; do
NAME=`rpm --queryformat "%{NAME}" -qp $rpm`
unset OLDNAME
for oldrpm in ${RPMDIR}/${NAME}*.rpm ; do
if [ `rpm --queryformat "%{NAME}" -qp $oldrpm` = "$NAME" ]; then
OLDNAME=$oldrpm;
break
fi
done
if [ -z "$OLDNAME" ]; then
echo $NAME is new
cp -pv $rpm $RPMDIR
else
if [ `basename $rpm` != `basename $OLDNAME` ]; then
mv $OLDNAME $OLDDIR
cp -pv $rpm $RPMDIR
fi
fi
done
# Copy new boot image files to the right place...
for newfile in ${UPDDIR}/images/* ; do
file=${CDDIR}$/${ARCH}/images/$(basename ${newfile})
if [ $newfile -nt $file ] ; then
cp -pv $newfile $file
fi
done
exit 0
______________________________________________________________________
5.3. Genereer een nieuwe hdlist file Als je installeert van CD dan
heeft het installatie programma op CD de file
RedHat/base/hdlist nodig. Deze file beschrijft welke RPM packages
beschikbaar zijn op de CD. De hdlist file kan gegenereerd worden door
het programma misc/src/install/genhdlist. Het programma moet worden
gestart met de 'root name' van de distributie als het enige argument.
Hier is de updateHdlist script die dat programma aanroept:
______________________________________________________________________
#!/bin/bash
RHVERSION=5.1
ARCH=i386
echo generating hdlist...
CDDIR=/jaz/redhat-${RHVERSION}
GENHDDIR=${CDDIR}/${ARCH}/misc/src/install
chmod u+x ${GENHDDIR}/genhdlist
chmod 644 ${CDDIR}/${ARCH}/RedHat/base/hdlist
${GENHDDIR}/genhdlist ${CDDIR}/${ARCH} || echo "*** GENHDLIST FAILED ***"
exit 0
______________________________________________________________________
OPMERKING: Nadat je de updates hebt toegevoegd in de RedHat/RPMS
directory, is je kopie van de distributie niet langer een mirror van
de Red Hat distributie site. Eigenlijk is het meer up-to-date! Daarom
zal je, als je opnieuw de distributie gaat mirroren, weer de oude
versie van de updates afhalen, en zullen de updates verwijderd worden.
5.3.1. Belangrijke opmerking voor Red Hat 5.2 Zoals bij Red Hat 5.2
en vroeger meegeleverd was, CRASHTE
genhdlist als er files in de RedHat/RPMS directory stonden die niet
RPM files waren! Dit zorgt voor problemen, want in de 5.2 distributie
zijn er een paar non-RPM files die ls-lR en ls-lR.gz heten. Daarom
veeg je best all non-RPM files weg uit die directory.
6. Uiteindelijk: de CD branden Als we veronderstellen dat je een
werken CD-write op je systeem hebt, en als je weet hoe die te
gebruiken, slaan we meteen de details over mbt. het branden van CD's.
Als je je CD's brandt op een Linux-systeem, kan je het excellente
XCDroast package installeren.
In XCDRoast, zet de Rock Ridge extentie aan, en de kreatie van
TRANS.TBL files.
Kijk even na of de top directory van de CD op zijn minst de volgende
files en directories bevat:
COPYING RPM-PGP-KEY README RedHat/
De volgende directories zijn handig:;
doc/ gnome/ misc/ dosutils/ images/
6.1. Het maken van een bootable CD (Dit gedeelte is dankzij Dawn
Endico dawn@math.wayne.edu). Aangezien XCDRoast geen ondersteuning
heeft voor bootable disks, heb je een andere tool nodig, bv.
mkisofs en cdrecord
.
Haal de laatste RPMs voor deze packages van
.
Je zal een image file moeten maken die naar CD wordt geschreven. Deze
file is ongeveer 500Mb groot, dus best zoek je een partitie met genoeg
vrije plaats en verander het path voor redhat.img in het volgende
commando indien nodig. Je zal root moeten zijn om mount en cdrecord te
gebruiken.
6.1.1. Maak de disk image Verander de directory naar de plaats in je
mirror dat de root zal zijn van je CD. bijvoorbeeld redhat-5.2/i386.
mkisofs -v -r -T -J -V "Red Hat 5.2" -b images/boot.img -c misc/boot/boot.cat -o /tmp/redhat.img .
6.1.2. Test de image Als je paranoide bent, test je best je nieuwe
disk image door het te mounten. Als je vergat de file permissies te
veranderen of vergat de Rock Ridge extentie aan te zetten dan zal de
fout wel duidelijk worden, aangezien de filenames en directory struc
ture fout zullen zijn.
mount -t iso9660 -o ro,loop /tmp/redhat.img /mnt/cdrom
Als je klaar bent, vergeet niet te unmounten.
umount /mnt/cdrom
6.1.3. Brand de CD Kijk na of je wel de juiste snelheid van je CD-
writer instelt. Dit commando is voor een 4x CDR. Jij hebt misschien
een 1x, 2x of 6x.
cdrecord -v speed=4 dev=0,0 /tmp/redhat.img
7. Dit dokument... De SGML code van de meest recente versie van dit
dokument kan je vinden op
.
7.1. Verwante dokumentatie Ed Schlunder heeft een
programma gschreven, genaamd
fix-rhcd dat je toelaat je Red Hat Linux distributie mirror te
vergelijken naar filesize, names, permissies en symlinks tov. een 'ls
-lNr' listing van een officiele Red Hat ftp site. Iedere permissie die
verkeerd is wordt veranderd in dat van de ls listing. Zie ook de fix-
rhcd homepage .
7.2. Acknowledgements Dank aan de volgende personen voor hun waarde
volle bijdrage:
· Lars Christensen
· Thomas Duffy
· Dawn Endico
· Seva
8. DISCLAIMER
While the given information in this document is believed to be
correct, the authors assume no responsibility whatsoever for any
damage to hardware and/or software, or any loss of data resulting from
the procedures outlined in this document. De Burning a Red Hat CD
mini-HOWTO
Morten Kjeldgaard,
mok@imsb.au.dk and Peter von der Ahé, pahe+rhcd@daimi.au.dk / Vertaald
door Dag Wieërs, dag@wieers.com
v1.18, 27 December 1998
Dit dokument beschrijft hoe je je eigen Red Hat CD's kan schrijven,
net zoals de commerciele CD's zoals Red Hat ze verkoopt. De struktuur
van de distributie wordt beschreven, net zoals de procedure om nieuwe
RPM's eraan toe te voegen.