Vypalování CD s distribucí RedHat

v0.70f,

Tento dokument popisuje, jak si vypálit CD s distribucí RedHat tak, aby bylo bootovatelné. Nezabývá se problematikou pálení CD, nezaručuje Vám 100% úspěšnost při pálení a také určitě není dokonalý. Pokud máte nějaké návrhy nebo připomínky, pište na adresu uvedenou níže.

Primární zdroj: http://www.spsselib.hiedu.cz/~kerslage/manuals/linux/RedHat-CD.html
Autor: milan.kerslager@spsselib.hiedu.cz

Obsah

1. Úvodní informace
2. Čím stahovat
3. Co potřebujeme stáhnout
4. Úprava distribuce
5. Výroba a pálení CD
6. Bootování Linuxu z instalačního z CD
7. Ruční update běžícího systému
8. Důležitá a zajímavá URL
9. Kde sehnat již hotová CD
10. ToDo

1. Úvodní informace

2. Čím stahovat distribuci

Nejjednodušeji lze zřejmě stahovat pomocí programu mc (Midnight Commander). V jednom okně se přepneme na svůj oblíbený mirror RedHatu příkazem: cd ftp://muj.mirror.cz/pub/tady/je/to/misto a klávesou F5 klasicky kopírujeme (i celé adresáře).

Další možností je použít program ncftp:

    ncftp -r muj.mirror.nekde.cz
    cd pub/MIRRORS/redhat
    bin
    get -R i386

Pro stahování větší struktury adresářů je také vhodný program mirror, například z: http://ftp.spsselib.hiedu.cz/pub/linux/networking/mirror-2.8-8.noarch.rpm. Je to perlovský skript, který poslouží velice dobře a spolehlivě. Sekce konfiguračního souboru mirror.conf může vypadat třeba takto:

    package=defaults
       remote_password=mirror@spsselib.hiedu.cz
       mail_to=
       dir_mode=0755
       file_mode=0444
       update_log=.mirror
       compress_patt=

    package=redhat
       site         = ftp.linux.cz
       remote_dir   = /pub/linux/local/redhat-6.0/i386-cs
       local_dir    = /redhat
       exclude_patt =(ls-lR|\.mirror$|lost\+found/)
       make_bad_symlinks=1
Mirror pak spustíme příkazem: mirror -predhat mirror.conf
Výsledná velikost tohoto mirroru je kolem 560MB, záměrně jsou vynechány adresáře pro Alphu a Sparc a zdrojové (src) balíky z adresáře SRPMS (600MB).

Problémy mohou způsobovat podadresáře v RedHat/instimage, protože obsahují symbolické linky, které jsou sice nesprávné při stahování, ale při instalaci jsou dobře. V horším případě bude velikost adresáře dvojnásobná (linky se stáhnou jako soubory), ovšem to nemá na funkčnost CD vliv. Se zmíněnými programy problémy nejsou. Soubory stahujte na partition s ext2 nebo UMSDOS filesystémem, vyhnete se nepříjemnostem s atributy a symbolickými linkami.

Problémem některých zrcadel je jejich neúplnost. Kompletnost můžete zkontrolovat například programem fix-rhcd z http://www.ajusd.org/~edward/fix-rhcd/:

    cd /redhat-X.Y
    ncftp -r ftp.redhat.com
    cd /redhat/redhat-X.Y/i386
    ls -lNR > rhXY.lst
    bye
    fix-rhcd rhXY.lst

3. Co potřebujeme stáhnout

Základem CD je několik adresářů, které musí být umístěny do kořene CD. Abych je mohl uvést jednoznačně, budu se odkazovat na originální server společnosti RedHat. Ke stahování si ale vyberte některý mirror v tuzemsku, bude určitě rychlejší.

Následující adresáře je potřeba mít úplné i s podadresáři, zabírají ve verzi 6.0 celkem zhruba 500MB (verze 5.1 měla jen 315MB, verze 5.2 400MB) a jejich obsah se nemění (jsou tedy stejné od jejich zveřejnění na ftp.redhat.com).

    ftp://ftp.redhat.com/redhat/redhat-X.Y/i386/RedHat
    ftp://ftp.redhat.com/redhat/redhat-X.Y/i386/dosutils
    ftp://ftp.redhat.com/redhat/redhat-X.Y/i386/images
Výše uvedené adresáře obsahují originální distribuci tak, jak byla původně uveřejněna. Chyby, které v ní byly obsaženy jsou odstraňovány pomocí tzv. updatů [apdejtů]. Přečtěte si stránku s Erraty, kde je vše podrobně okomentováno. Errata jsou globální a pak ještě pro specifickou platformu (pro nás Intel Errata).

Následující URL obsahuje zmíněné updaty (obsah adresáře se mění):

    ftp://updates.redhat.com/X.Y/i386

Do naplnění CD zbývá ještě nějaké místo, které můžeme využít dle svého uvážení. Na tyto extra věci si založte zvláštní adresáře (já vkládám vše do adresáře /local) v kořeni CD. Nedávejte je do adresářů s distribucí, pokud si nejste jisti, co tím způsobíte.

4. Úprava distribuce

Při výrobě CD máme několik možností: V následujícím textu se budeme zabývat druhým bodem. Třetí bod, týkající se přidávání českých balíků, je rozebrán v jiném dokumentu.

Původní balíky v adresáři RedHat/RPMS nahradíme jejich novějšími verzemi z adresáře zmíněného výše (updates). Ruční mazání starších verzí je možné, ovšem poněkud zdlouhavé. Nejjednodušší je použít následující skript:

    #!/bin/sh
    # Tento skript nahradí balíky v adresáři $RPMDIR updaty,
    # které máme v adresáři $UPDATES. Soubory ke smazání budou odsunuty
    # do adresáře $OLDDIR.
    # POZOR! Skript nerozlišuje novější/starší verze, prostě jen
    # přesune updaty do adresáře $RPMDIR a stejnojmenné balíky
    # jiné verze přesune do $OLDDIR.

    RPMDIR=/redhat-X.Y/RedHat/RPMS
    UPDATES=/redhat-X.Y/updates
    OLDDIR=/redhat-X.Y/old

    [ -d $OLDDIR ] || mkdir $OLDDIR

    allow_null_glob_expansion=1
  
    for rpm in ${UPDATES}/*.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 `basename $rpm` je novy
        cp -p $rpm $RPMDIR
      else
        if [ `basename $rpm` != `basename $OLDNAME` ]; then
          echo `basename $rpm` nahrazuje `basename $OLDNAME`
          mv $OLDNAME $OLDDIR
          cp -p $rpm $RPMDIR
        fi
      fi
    done
Před vypálením je dále potřeba vygenerovat na CD nový soubor RedHat/base/hdlist. K tomu slouží utilita genhdlist z adresáře misc:
    ftp://ftp.redhat.com/redhat/redhat-X.Y/i386/misc/src/install/genhdlist
Opravený soubor RedHat/base/hdlist potřebuje ke své správné funkci instalační program. Jako parametr potřebuje celou (absolutní) cestu ke kořeni připravovaného CD. Použití je naznačeno v příkladu výroby image. V adresáři RedHat/RPMS nesmějí být soubory, které nejsou *.rpm (zejména ls-lR, ls-lR.gz), více informací najdete v mini-HOWTO podle odkazu na konci dokumentu.

5. Výroba image a pálení

Image pro pálení je soubor, který obsahuje kompletní obraz CD. Je proto stejně velký, jako je dat na CD. Na výrobu image pro plné CD tedy budete potřebovat alespoň 700MB volného místa na disku. Pokud vyrábíte bootovatelné CD (volba -b), musíte mít právo zápisu do adresáře, kde mkisofs vytváří soubor boot.catalog. V adresáři RedHat/instimage je nutné nastavit právo x, jinak nepůjde z CD instalovat (třetí řádek)! Na předposledním řádku můžeme spočítat přibližnou velikost výsledného image (nemůže být mírně větší než 650MB).

Pozor!!!
V RedHat 6.0 je stále chyba v souboru dosutils/autoboot.bat (soubor pro initrd je směrován do adresáře ..\misc\src\trees\initrd.img, i když je tento soubor v adresáři autoboot spolu s jádrem). Takhle byste museli na CD přidat i adresář misc, což je zbytečné. Navíc tam takový soubor ani není a měl to být soubor ..\misc\src\trees\initrd=local.img.

Soubor dosutils/autoboot.bat proto opravte takto (pozor, soubor musí být ve formátu DOSu):

    loadlin autoboot\vmlinuz initrd=autoboot\initrd.img
K vytvoření image potřebujete program mkisofs alespoň verze 1.12b4 (je součástí distribuce), výsledný soubor nesmí být větší, než 681574400 byte.

A nyní již k výrobě image:

    cd /redhat
    chown -R root.root *
    chmod +x RedHat/instimage/usr/bin/*   [nezapomenout!!!!]
    genhdlist /redhat                     [viz poznámka]
    du -s .                               [max velikost je 665600 kB]
    mkisofs -a -J -r -o /redhat.iso -V RedHat -b images/boot.img -c images/boot.catalog .

Pozn.: řádku s genhdlist použijte jen v případě, že jste původní balíky v adresáři RedHat/RPMS nahradili updaty, jak je zmíněno výše. V opačném případě není potřeba soubor RedHat/base/hdlist aktualizovat. Pokud genhdlist zhavaruje, přečtěte si poznámku v minulé kapitole.

Zkontrolovat připravený image můžete jeho připojením jako filesystém, který jde snadno prohlédnout:

    mount -o ro,loop /redhat.iso /mnt/cdrom
    cd /mnt/cdrom
    ls
    umount /mnt/cdrom

Pálením CD pod Linuxem se zabývá CD-Writing-HOWTO. Image můžete vypálit i v jiném programu či operačním systému, pokud příslušný vypalovací program umí brát jako vstup tzv. ISO image (též ISO, RAW file a podobně), ovšem ve Windows se můžete setkat s odmítnutím image s velikostí blížící se výše uvedenému maximu. Následující řádka je jen příklad a vypálí připravený image na CD:

    cdrecord -v speed=4 -eject -dev=0,3,0 -pad /redhat.iso

6. Bootování Linuxu z instalačního z CD

CD vyrobené podle tohoto návodu bude bootovatelné. Pokud Váš počítač není schopen bootovat z CD, lze instalaci spustit z prostředí DOSu dávkou dosutils/autoboot.bat z instalačního CD nebo je možné si vyrobit bootovací diskety a startovat přímo z nich. Diskety jsou dvě - 'boot' a 'suplemental'. Bootuje se z první, druhá se vkládá až po výzvě. Postup výroby disket z DOSu:
    D:> cd \dosutils
    D:\DOSUTILS> rawrite ..\images\boot.img a:  [boot disketa]
    D:\DOSUTILS> rawrite ..\images\supp.img a:  [suplemental disketa]
Pozn: když jsem udělal diskety z W'95 DOS-boxu, chovaly se 'podivně', zřejmě problémy s přímým přístupem k mechanice v prostředí W'95, proto je vytvářejte raději pod holým DOSem.

Z prostředí Linuxu lze diskety vyrobit například příkazem:

    cp boot.img /dev/fd0

7. Ruční update běžícího systému

Pokud se objeví nové updaty, nemá do již běžícího systému význam instalovat všechny nové balíky, protože některé balíky vůbec v systému nejsou. Je vhodné upgradovat jen ty, které v systému už máme, k čemuž slouží parametr -F programu rpm.
    rpm -F /redhat-X.Y/updates/*
K manipulaci s balíky ze použít též okénkový nástroj glint.

8. Důležitá a zajímavá URL

Dokumentace:
http://www.spsselib.hiedu.cz/pub/mirrors/howto/mini/RedHat-CD - mini-HOWTO
http://www.diskus.cz/CDdata.html - Formáty dat uložených na CD-ROM disku
http://ftp.spsselib.hiedu.cz/pub/mirrors/howto/CD-Writing-HOWTO
http://ftp.spsselib.hiedu.cz/pub/mirrors/redhat/6.0/doc/rhmanual/manual/
Mirrory RedHatu:
ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.redhat.com/pub/
ftp://ftp.fi.muni.cz/pub/linux/redhat/
ftp://ftp.vse.cz/pub/linux/RedHat/
ftp://ftp.spsselib.hiedu.cz/pub/sites/ftp.redhat.com/pub/redhat/
Další zajímavé zdroje pro CD:
ftp://contrib.redhat.com/libc6/i386/

9. Kde sehnat již hotová CD

Nejjednoduším způsobem je stát se členem sdružení uživatelů Linuxu CZLUG a dostat CD včetně aktuálního stavu české lokalizace. Viz: http://www.linux.cz/czlug/

Hotová CD s distribucí RedHat jsou také například přílohou knihy M. Welsh, L. Kaufman: Používáme Linux, Computer Press 1997, Praha a jsou k dostání v knihkupectví za 150,- Kč. Bližší informace jsou též na adrese http://www.cpress.cz/. Součástí tohoto CD je i podpora češtiny.

Další možností je získat CD na adrese:

10. ToDo