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-versionen 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ätverksanslutning och en CD-brännare.

Innehåll

1 Inledning 1

2 Red Hats FTP-plats 2

2.1 Den översta katalogen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.2 Katalogen RedHat" – kärnan i distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 RPM-paket 3

4 Hämta en lokal kopia av distributionen 4

5 Infoga uppdateringar 4

5.1 Korrigera alternativen för filskydd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5.2 Byta ut uppdaterade RPMS-filer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5.3 Generera en ny hdlist-fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6 Till sist: bränn din CD-skiva 7

7 Installera från CD-skivan 7

8 FRISKRIVNING 8

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 <http://www.redhat.com/>. 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 <ftp:

//ftp.redhat.com/pub/redhat/redhat-5.1/updates/00README.errata> . Det finns också ett särskilt ark

med rättelser för varje plattform. Exempel: the Intel errata sheet <ftp://ftp.redhat.com/pub/redhat/

updates/5.1/i386/00README.errata>

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 <ftp://ftp.redhat.com/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/ <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/

i386/doc/rhmanual/manual/doc000.htm>. 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 7 (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 3 (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 5 (Incorporating the updates)) eller lägga till ett eget paket i katalogen RPMS måste du uppdatera hdlist. Proceduren beskrivs i avsnittet 5.3 (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 <http://www.rpm.org> ä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 <http://www.rpm.org> 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 <http://rufus.w3.

org/linux/RPM/mirror.html>.

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 <ftp://ftp.redhat.com/pub>. Välj en FTP-plats i närheten. Mer information: RedHat FAQ <http://www.

redhat.com/support/docs/rhl/RedHat-FAQ/RedHat-FAQ-12.html##ss12.1>

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 <http://www.rpm.org> . 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 <http://www.fh-muenchen.de/rz/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.