Skapa en RedHat-CD - mini-HOWTO Morten Kjeldgaard, mok@imsb.au.dk och Peter von der AhÚ, pahe+rhcd@daimi.au.dk Svensk översättning: Bo Serrander bserrander@atr.se v.00, 9 september 1998, svensk översättning: april 1999 I det här dokumentet beskrivs hur du gör egna CD-skivor av Linux-ver­ sionen av Red Hat. De är jämförbara med de CD-skivor som säljs av Red hat. Du får en beskrivning av distributionsstrukturen och av hur du infogar uppdaterad RPMS i distributionen. Du behöver en bra nätverk­ sanslutning och en CD-brännare. ______________________________________________________________________ Innehållsförteckning 1. Inledning 2. Red Hats FTP-plats 2.1 Den översta katalogen 2.2 Katalogen "RedHat" -- kärnan i distributionen 3. RPM-paket 4. Hämta en lokal kopia av distributionen 5. Infoga uppdateringar 5.1 Korrigera alternativen för filskydd 5.2 Byta ut uppdaterade RPMS-filer 5.3 Generera en ny hdlist-fil 6. Till sist: bränn din CD-skiva 7. Installera från CD-skivan 8. FRISKRIVNING ______________________________________________________________________ 1. Inledning Det kan finnas många anledningar att bränna egna CD-skivor. Om du är snål vill du förstås spara de futtiga ören det kostar att gå in påRed Hat distribution . Eller också kanske du vill ha en distributions-CD som har den senaste distributionen med alla aktuella uppdateringar. Det är en högst befogad önskning, för efter varje större utgåva av Red Hat-distributionen har det tillkommit massor av uppdateringar, varav många är säkerhetsrelaterade. Du kan exempelvis titta på filen updates/00README.errata . Det finns också ett särskilt ark med rättelser för varje plattform. Exempel: the Intel errata sheet 2. Red Hats FTP-plats Enligt Linux-andan erbjuder Red Hat Software sina Linux-distributioner för många olika plattformar på sin FTP-plats. Allihop är tillgängliga från den översta distributionskatalogen. 2.1. Den översta katalogen Den översta katalogen för RedHat Linux version 5.1 (pub/redhat/redhat-5.1 ) innehåller distributioner för olika plattformar och en katalog med uppdateringar och rättelser som har tillkommit efter det att programpaketet släpptes. SRPMS/ alpha/ i386/ sparc/ updates/ I det här dokumentet använder vi i386-distributionen som exempel. Det tillvägagångssätt som anges i dokumentet bör fungera på alla plattformar som kan användas med Red Hat (Alpha, SPARC, ppc o.s.v.), men vi har bara testat det på i386-plattformen (vi tar gärna emot ytterligare information). Roten för i386-katalogen ser ut på följande sätt: -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/ Katalogen doc innehåller en stor mängd information. Framför allt innehåller den installationshandboken för RedHat i HTML-format. doc/rhmanual/manual/ . Det finns också ett antal vanliga frågor och dessutom en fullständig samling av HOWTO och mini-HOWTO. Katalogen images innehåller avbildningar av startdisketter som du måste kopiera till en diskett. I den senaste distributionen (5.1) finns det två diskettavbilder tillgängliga. Den startbara diskettavbildningen heter boot.img och kan hämtas när installationen utförs direkt från en CD. Om du måste installera från en lokal hårddisk, en NFS-ansluten disk eller en FTP kanske du också behöver den kompletterande diskavbildningen. supp.img. I avsnittet ``Installing from the CD'' finns det mer information och ytterligare hänvisningar. Katalogen misc innehåller källfiler och körbara filer för ett antal program som krävs för installationen. 2.2. Katalogen "RedHat" -- kärnan i distributionen Den viktigaste delen i katalogträdet utgör roten i katalogen RedHat: 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/ Katalogen RPMS innehåller huvuddelen av Red Hat-distributionen som består av en uppsättning RPM-filer (Redhat Package Manager). Ett RPM- paket innehåller vanligtvis binära körbara filer samt relevanta konfigureringsfiler och dokumentation. Mer information finns i avsnittet ``RPM packages'' . Katalogen base innehåller olika administrationskataloger som behövs under installationen, t.ex. filen comps, som definierar components, (grupper med RPM-paket) som används under fasen "Choose packages to install". En annan viktig fil i katalogen base är filen hdlist som innehåller de flesta rubrikfilerna från alla RPM-filer i katalogen RPMS. Det innebär att du kan avgöra vilka åtgärder som behövs i RPM-paketen genom att bara läsa hdlist. Du behöver inte läsa alla RPM-filer, vilket är mycket praktiskt, särskilt under FTP-installationer. Du kan också använda hdlist till att avbilda paketnamn till filnamn, t.ex. perl till perl-5.004-6.i386.rpm. Det innebär att om du vill lägga till uppdateringar från RedHat (se avsnitt ``Incorporating the updates'') eller lägga till ett eget paket i katalogen RPMS måste du uppdatera hdlist. Proceduren beskrivs i avsnittet ``Generating a new hdlist file''. Katalogen instimage innehåller ett enkelt katalogträd med ett antal program och delade bibliotek som behövs under installationen. 3. RPM-paket Huvuddelen av RedHat-distributionen består av en uppsättning RedHat- filer (Redhat Package Manager). Ett RPM-paket innehåller vanligtvis binära körbara filer samt relevanta konfigureringsfiler och dokumentation. Programmet rpm är en kraftfull programhanterare som kan användas till att installera, anropa, verifiera, uppdatera, radera och bygga programpaket i RPM-format. Med Rpm underhåller du en databas med alla programvarupaket som har installerats så att informationen i den installerade programvaran alltid är tillgänglig. De binära RPM-filerna i distributionen har skapats på ett system som själva distributionen körs på. Det är viktigt, eftersom de flesta programmen i paketet är beroende av delade bibliotek. Från och med RedHat version 5.0 används den nya version 2 av GNU Standard C-biblioteket (som är anpassad för 64-bitar). Den här versionen av biblioteket kallas vanligen glibc eller, i Linux: libc 6. Alla körbara filer i distributionen har länkats med det biblioteket. Om du försöker installera binära filer från en annan distribution finns det en risk att de inte fungerar om du inte installerar paketet libc5 som är bakåtkompatibelt. Namnen i RPM-paketet innehåller suffixet .arch.rpm, där arch anger arkitekturen och har värdet i386 för binärfiler på Intel-plattformen. Det paket du installerar måste överensstämma med de versioner av de delade bibliotek som finns i datorn. Programmet rpm brukar fungera bra när du vill säkerställa överensstämmelsen, men det finns olika sätt att utföra kontrollen, så det är viktigt att du vet vad du gör om du installerar paket på det här sättet. Om du däremot använder startdisken för RedHat-installation kan vi garantera att rätt uppsättning av RPM-paketen installeras i datorn. Om du upptäcker ett RPM-paket som inte har installerats i systemet under installationsprocessen behöver du inte oroa dig. Du kan när du vill installera RPM-paket (som root). Exempel: rpm --install WindowMaker-0.18-1b.i386.rpm Du kan till och med installera direkt från Internet om du känner till URL-adressen till ett RPM-paket: rpm --install ftp://rufus.w3.org/redhat-contrib/noarch/mirror-2.9-2.noarch.rpm I en annan version av RPM-paketen finns de originalkällkoder som används föratt bygga binärfilerna. Paketen har suffixet .src.rpm och finns ikatalogen SRPMS. De här paketen behövs inte på installations- CD:n, och för övrigt ryms de inte på en 74-minuters brännbar CD. Du kan förstås göra en separat CD med SRPMS-filerna. 4. Hämta en lokal kopia av distributionen Du behöver en kopia av distributionen på en skrivbar disk som du kan öppna på den dator där CD-skrivaren är ansluten. Om du vill infoga de senaste uppdateringarna, bör katalogen (också) kunna öppnas från en Linux-dator, antingen från en lokal disk, en NFS-ansluten disk på en annan dator eller från en JAZ-disk. Du kan kopiera distributionen från en RedHat-CD eller hämta den från FTP. Om du väljer att använda FTP är det bästa sättet att få en korrekt kopia av distributionen att använda paketet mirror. Mirror är ett avancerat perl-skript där innehållet i en katalog på en fjärransluten dator jämförs med en lokal katalog. FTP används för att hämta filerna från den fjärranslutna datorn men inte från den lokala katalogen. Filer i den lokala katalogen som inte finns i den fjärranslutna datorn tas bort. Mirror- programmet konfigureras med en konfigureringsfil. Mirror-paketet kan hämtas som en RPM-fil på adressen rufus.w3.org . Skapa en lokal kopia mirror.redhat av konfigureringsfilen för Mirror och redigera relevanta fält överst i filen. Efter standardalternativen anger du följande paket: 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 Med följande kommando hämtar du en kopia av hela RedHat-trädet till din lokala disk. *Tänk efter* innan du börjar, för du kommer att överföra ca 350 MB. mirror -pdist mirror.redhat Nu avbildar du FTP-platsen för RedHat på din lokala disk. Innehållet i en RedHat-distribution ändras inte mellan upplagorna så du behöver bara hämta det här paketet. EN GÅNG. Alla ändringar i distributionen finns i katalogen updates. Det innebär att du bara behöver hålla katalogen updates aktuell för att alltid ha en uppdaterad avbildning av RedHat-distributionen. Använd kommandot mirror -pupdates mirror.redhat Kör kommandot regelbundet, t.ex. en gång i veckan, med hjälp av ett cron-skript. RedHat-distributionen finns på ett stort antal FTP- servrar över hela världen. Servrarna uppdateras dagligen från huvudwebbplatsen . Välj en FTP-plats i närheten. Mer information: RedHat FAQ 5. Infoga uppdateringar När du infogar uppdateringar måste du ha skrivbehörighet till distributionskatalogen från en Linux-dator med en fungerande version av rpm . Utför följande tre steg: 1. Korrigera alternativen för filskydd. 2. Byta ut uppdaterade RPM-filer. 3. Generera hdlist-filen. Om du alltid har en aktuell avbild av katalogen updates kan du när som helst skapa en CD med aktuella uppdateringar genom att utföra de tre stegen. 5.1. Korrigera alternativen för filskydd Under installationsprocessen körs vissa program direkt från CD-skivan. Tyvärr bevaras inte alltid skyddet för de filer och kataloger som kopieras. Därför måste du se till att programmen, shell-skripten och de delade biblioteken har körningstillstånd innan du bränner in katalogen på CD-skivan. Det kan du göra genom att köra skriptet updatePerm på din lokala kopia av distributionen: ______________________________________________________________________ #!/bin/bash LIST=/tmp/er3hd3w25 CDDIR=/jaz/redhat-${RHVERSION} # Söka efter alla kataloger och kontrollera att de har tillståndet +x find $CDDIR -type d -exec chmod -c 755 {} \; # Söka efter alla filer som är körbara eller som är shell- eller perl-skript find $CDDIR -type f | file -f - | grep -v RPM \ | egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST # Söka efter delade bibliotek find $CDDIR -name \*.so >> $LIST # Göra dem körbara medan du läser filen do -x $file ] ; then chmod -c 755 $file fi done < $LIST /bin/rm $LIST exit 0 ______________________________________________________________________ 5.2. Byta ut uppdaterade RPMS-filer Med skriptet updateCD kopierar du alla filer från uppdateringskatalogen till RPMS-katalogen. I skriptet ingår några tjusiga rpm-trick som avgör vilka paket i uppdateringskatalogen som är nyast. Äldre paket flyttas till katalogen ${OLD}. ______________________________________________________________________ #! /bin/bash # Med det här skriptet uppdateras de rpm-filer i en RedHat-distribution som hittas i $RPMDIR. # Gamla rpm-filer placeras i $OLDDIR. # De nya rpm-filerna bör placeras i $UPDDIR. # Arkitekturen är $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 är nytt cp -pv $rpm $RPMDIR else if [ `basename $rpm` != `basename $OLDNAME` ]; then mv $OLDNAME $OLDDIR cp -pv $rpm $RPMDIR fi fi done # Kopiera nya startbildfiler till rätt plats... 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. Generera en ny hdlist-fil När du installerar från CD-skivan kommer installationsprogrammet på CD-skivan, misc/src/install/genhdlist att vara beroende av filen RedHat/base/hdlist , som beskriver vilka RPM-paket som finns på CD- skivan. Programmet måste köras med rotnamnet för distributionen som enda argument. Så här ser updateHdlist-skriptet ut: ______________________________________________________________________ #!/bin/bash echo skapar hdlist... CDDIR=/jaz/redhat-${RHVERSION} ARCH=i386 GENHDDIR=${CDDIR}/${ARCH}/misc/src/install chmod u+x ${GENHDDIR}/genhdlist chmod 644 ${CDDIR}/${ARCH}/RedHat/base/hdlist ${GENHDDIR}/genhdlist ${CDDIR}/${ARCH} exit 0 ______________________________________________________________________ Obs! När du har infogat uppdateringarna i huvudkatalogen RedHat/RPMS är din kopia av distributionen inte längre en avbild av RedHats distributionsplats. Den är i själva verket ännu mer aktuell! Om du tänker avbilda distributionen kommer därför äldre versioner av uppdaterade RPM-filer att hämtas en gång till och uppdateringarna tas bort. 6. Till sist: bränn din CD-skiva Eftersom vi förutsätter att du har en fungerande CD-brännare i systemet och vet hur du ska använda den går vi inte närmare in på den delen. Om du bränner CD-skivan på ett Linux-system kan du installera det utmärkta programpaketet XCDroast . I XCDRoast aktiverar du Rock Ridge- tilläggen och skapar en TRANS.TBL-fil. Kontrollera att den översta katalogen på CD-skivan innehåller åtminstone följande filer och kataloger: COPYING RPM-PGP-KEY README RedHat/ Följande kataloger kan också vara bra att ha: doc/ gnome/ misc/ dosutils/ images/ 7. Installera från CD-skivan När du installerar från den nya CD-skivan måste du först skapa en startbar installationsdiskett. VIKTIGT: Använd en NY, MS-DOS- formaterad diskett! Om du använder gamla utslitna disketter kan du få många problem vid installationen. På ett Linux-system kan du skapa disketten med hjälp av kommandot dd: dd if=/mnt/cdrom/images/boot.img of=/dev/fd0 bs=1440k På ett DOS- eller Windows-9x-system måste du använda programmet RAWRITE.EXE, som finns i katalogen dosutils på CD-skivan. Stäng av den dator som du ska installera (eller uppgradera systemet) på, sätt in startdisketten och den nybrända CD-skivan och starta datorn från disketten. Mer information om installationsprocessen finns i dokumenten och i filerna Installations-HOWTO och Startdisk-HOWTO som finn i katalogen doc/HOWTO på CD-skivan. 8. FRISKRIVNING Informationen i det här dokumentet antas vara korrekt, men författarna tar inte på sig något som helst ansvar för skador på maskinvara eller programvara eller på förlust av data som har orsakats av de procedurer som beskrivs i dokumentet.