De Burning a Red Hat CD mini-HOWTO Morten Kjeldgaard, Vertaald door Dag Wieërs, 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. Introduktie

Er kunnen verschillende redenen zijn om je eigen CD te maken. Misschien betaal je liever geen $50 voor een echte . Of misschien heb je liever een Red Hat distributie met je eigen programma's en eigen updates.

Anatomie van de Red Hat FTP site

In dezelfde 'sfeer' van de Linux gemeenschap maakt Red Hat zijn distributie beschikbaar voor verschillende platformen op hun FTP site.

De top level directory

De top level directory voor Red Hat Linux release 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 . Vervolgens staan er een aantal FAQs en tenslotte de hele HOWTO en mini-HOWTO verzameling.

De . --> De De "RedHat" directory -- het hart van de distributie

Het belangrijkste deel van de directory tree is de 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 voor meer informatie.

De

Dit betekent dat al de 'dependencies' tussen packages achterhaald kunnen worden door gewoon de

) je de .

De 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 relevante configuratie-bestanden en documentatie. Het 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.

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

De namen van de RPM packages bevatten de suffix .arch. 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 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 . Maak je lokale kopie package=updates site=ftp.sunsite.auc.dk exclude_patt=(alpha/|sparc/) 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. 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 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 .

Toevoegen van updates

Om updates toe te voegen, heb je write-access nodig op dedistributie-directory, met een werkende versie van . Er zijn 3 stappen die je moet volgen: Pas de file permissies aan. Vervang de updated RPMs. Genereer een nieuwe hdlist file. Als je een mirror onderhoudt van de Pas de file permissies aan

Tijdens het installatie process worden sommige programma's rechtstreeks van CD gestart. Spijtig genoeg behoudt een FTP programma niet altijd de file permissies van de files en directory's 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 #!/bin/bash RHVERSION=5.1 LIST=/tmp/er3hd3w25 CDDIR=/jaz/redhat-${RHVERSION} # Zoek naar alle directory's en zorg dat ze allen de +x permissie hebben find $CDDIR -type d -exec chmod -c 755 {} \; # Zoek naar alle bestanden die uitvoerbaar, shell- of perlscripts zijn find $CDDIR -type f | file -f - | grep -v RPM \ | egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST # Zoek naar gedeelde library's find $CDDIR -name \*.so >> $LIST # Maak ze uitvoerbaar while read file do if [ ! -x $file ] ; then chmod -c 755 $file fi done < $LIST /bin/rm $LIST exit 0

Vervang de updated RPMS

Het volgende scriptje met de naam #! /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 # Kopieer de nieuwe boot image bestanden naar de juiste plek... 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

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 #!/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.

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 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 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 directory's bevat: COPYING RPM-PGP-KEY README RedHat/ De volgende directory's zijn handig:; doc/ gnome/ misc/ dosutils/ images/

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. en . 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 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 .

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 structure 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

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

Dit dokument...

De SGML code van de meest recente versie van dit dokument kan je vinden op .

Verwante dokumentatie

Ed Schlunder <zilym@asu.edu> heeft een programma gschreven, genaamd .

Acknowledgements

Dank aan de volgende personen voor hun waardevolle bijdrage: Lars Christensen <larsch@cs.auc.dk> Thomas Duffy <tbd@cs.brown.edu> Dawn Endico <dawn@math.wayne.edu> Seva <seva@null.cc.uic.edu>

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.