ReiserFS Root Boot HOGYAN

Micskó Gábor, trey@debian.szintezis.hu

v1.0, 2002. augusztus. 26 - Copyright © Hungarian Unix Portal


Ez a HOWTO leírja azt az eljárást amellyel át tudunk konvertálni egy Ext2 filerendszer alapú Linux rendszert úgy, hogy az egész root (/) filerendszer ReiserFS-en fusson. A ReiserFS-sel kapcsolatos bővebb információért és a legfrissebb letöltési lehetőségért látogasd meg a ReiserFS project web oldalát a http://www.reiserfs.org/ URL-en.

1. Bemutatás

2. Előfeltételek

3. Ext2 alapú filerendszer konvertálása ReiserFS-re

4. Hibaelhárítás

5. Copyright, licenc, visszajelzés és ilyesmi




1. Bemutatás

Ez a HOWTO leírja azt az eljárást amellyel át tudunk konvertálni egy Ext2 filerendszer alapú Linux rendszert úgy, hogy az egész root (/) filerendszer ReiserFS-en fusson. A ReiserFS-sel kapcsolatos bővebb információért és a legfrissebb letöltési lehetőségért látogasd meg a ReiserFS project web oldalát a http://www.reiserfs.org/ URL-en.

2. Előfeltételek

Mielőtt nekilátnánk, három előfeltételnek kell megfelelned:
  • Rendelkezned kell egy telepített és működő Linux rendszerrel
  • Rendelkezned kell egy üres partícióval, a partíciónak 83-as típusúnak (Linux) kell lennie. Az nem számít, hogy a partíció formázva van-e vagy sem, mi majd megformázzuk ReiserFS-re, és úgyis eltűnik róla minden, ami előtte rajta volt ;-)
  • A /boot könyvtár egy szeparált kis méretű ext2 filerendszeren legyen, mert a Lilo (LInux LOader) nem támogatja a ReiserFS filerendszerről való bootolást (ez nem teljesen igaz. Lehet Lilo-val ReiserFS-ről bootolni, de! a ReiserFS filerendszert egy -notail opcióval kell felmountolni. Hogy miért? Lásd a hibaelhárítás című részt.) A grub (GRand Unified Bootloader) az újabb információk szerint tud boot-olni ReiserFS-ről. Esetleg használj Lilo helyett grub-ot. Bővebb információért látogasd meg a Lilo honlapját a http://brun.dyndns.org/pub/linux/lilo/, és a grub honlapját a http://www.gnu.org/software/grub/ URL-en.

    Ez a dokumentum feltételezi, a partícióid kiosztása a következő: A /dev/hda1 (swap), /dev/hda2 /boot (ext2), /dev/hda3 root (/) filerendszer (ext2), és végül a /dev/hda4 amely filerendszert fogjuk ReiserFS-re alakítani. Ez rendszer-specifikus, értelemszerűen más gépeken az ottani beállításokkal kell végezni a műveleteket.

    A Linux kernel (2.4.x) lassan egy éve támogatja a ReiserFS filerendszert, tehát külső patcheket nem kell beszereznünk. Amire szükségünk lesz, az egy Linux kernel ReiserFS filerendszer támogatással, és a reiserfsprogs programokra. A ReiserFS programokat (reiserfsprogs) letölthetjük a ReiserFS honlapjáról (http://www.reiserfs.org/) reiserfsprogs-x.x.x.tar.gz néven. Linux kernelt fordítani ReiserFS támogatással nem nehéz dolog, de ha még soha nem fordítottál kernelt, akkor lehet hogy nem ezzel kellene kezdened ;-)

    3. Egy ext2 alapú rendszer konvertálása ReiserFS-re

    Több kereskedelmi Linux terjesztés felajánlja telepítéskor, hogy a rendszerünket ReiserFS filerendszerre telepíthetjük. Ilyenkor nem kell mást tenni, mint kiválasztani a ReiserFS-t, megadni a csatolási pontot (/) és a telepítő elvégzi helyettünk a szükséges feladatokat. Ez a dokumentum a meglevő ext2 alapú rendszer ``áthelyezéséről" szól.

    A következő szekció leírja a szükséges lépéseket ahhoz, hogy hogyan építsünk fel egy Reiserfs root (/) filerendszert, és hogyan bootoljuk be azt.

    3.1 Kernel fordítása ReiserFS támogatással

    Töltsd le a legutolsó 2.4.x kernelt az ftp.kernel.org-ról a /tmp könyvtárba. Csomagold ki egy elkülönített könyvtárba. Másold a /usr/src/ alá.

    Konfiguráld a kernelt a make config (make menuconfig, make xconfig) segítségével, amelyik közelebb áll a szívedhez :-). A "File systems" címkével jelzett szekcióban kapcsold be a "ReiserFS support" stuffot. Legyél biztos abban, hogy a ReiserFS támogatást a kernelbe fixen drótozva tetted, NEM MODULBA, mert akkor nem fogja boot időben a kernel támogatni a ReiserFS-t (csak kisebb cselek árán, de erre most nem térek ki). Konfiguráld az egész kernelt ahogy szükséged van rá, mentsd el a konfigot, majd forgasd le a kernelt. A kernel fordítását a make dep; make clean; make bzImage parancsok kiadásával végezd (vagy ahogy tetszik, ezerféleképpen lehet) ha szükséges fordítsd le a modulokat is, make modules; make modules_install. Utána másold az új kernelt a /boot könyvtárba. Másold a System.map-ot /boot-ba.
    #make dep
    #make clean
    #make bzImage
    #cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.0-reiserfs
    #cp /usr/src/linux/System.map /boot
    
    Most szükségünk van a ReiserFS programok lefordítására, (én a debian sarge rendszeremen egyszerűen kiadtam az 'apt-get install reiserfsprogs' parancsot, de aki akarja forgassa le (a fordításhoz nézd meg a letöltött reiserfsprogs-x.x.x.tar.gz-ben levő telepítési útmutatót). Ezek a programok azok, amellyel a ReiserFS filerendszert létre lehet hozni, ellenőrizni lehet, ki lehet terjeszteni a méretét, stb.

    A következő lépés az, hogy módosítani kell a LILO bejegyzéseit úgy, hogy az új kernelünket bootolja be. Szerkesszük a /etc/lilo.conf filet és végezzük el az alábbi bejegyzéseket:
    image=/boot/vmlinuz-2.4.0-reiserfs
    label=reiserfsboot
    read-only
    root=/dev/hda3
    
    Futtassuk az /sbin/lilo parancsot, ahhoz hogy aktiváljuk az új konfigurációt és rebootoljunk az új kernellel.

    3.2 A ReiserFS filerendszer készítése

    OK, most van egy kernelünk ReiserFS támogatással, itt az ideje, hogy megformázzuk az üres partíciónkat ReiserFS-re.
    #mkreiserfs /dev/hda4
    
    <-------------mkreiserfs, 2002------------->
    reiserfsprogs 3.6.2
    
    mkreiserfs: Guessing about desired format.. 
    mkreiserfs: Kernel 2.4.20-pre4 is running.
    Format 3.6 with standard journal
    Count of blocks on the device: 515080
    Number of blocks consumed by mkreiserfs formatting process: 8227
    Blocksize: 4096
    Hash function used to sort names: "r5"
    Journal Size 8193 blocks (first block 18)
    Journal Max transaction length 1024
    inode generation number: 0
    UUID: 6693db94-d0e1-410c-a35e-27472e56299d
    ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
    	ALL DATA WILL BE LOST ON '/dev/hda4'!
    Continue (y/n):
    
    [...]
    

    3.3 A root filerendszer másolása

    Ez egy könnyű lépés, kevés munkát igényel a részedről, viszont ez viszi el a legtöbb időt a munka során. Először is umount-old az összes NFS, SMB, és cdrom-ot, ami esetleg mountolva lenne. Készíts egy csatolási pontot (mount point) az új ReiserFS partíció részére, és mountold azt. Néhány dolog mielőtt másolsz: ne másold a /proc könyvtárt, viszont készíts neki egy csatolási pontot. Ha nem tudod umountolni a NFS-ed vagy CD-ROM-od, emlékezz rá, hogy ezeket ne másold. Minden mást másolj át a cp -a paranccsal.
    #mkdir /reiserfsvol
    #mount -t reiserfs /dev/hda4 /reiserfsvol
    #cd /
    #cp -a bin etc lib boot dev home usr var [...] /reiserfsvol
    #mkdir /reiserfsvol/proc
    
    Ugyanezt a cp -ax paranccsal is el lehet végezni könnyebben, lásd a bővebb információkért a cp man oldalát.

    3.4 Végső beállítások

    Mielőtt rebootolnánk az új ReiserFS partíciónkra, el kell végeznünk néhány beállítást. Először is, meg kell változtatnunk a /etc/fstab bejegyzést a root partíciónkhoz. Emlékezz! hogy az fstab file amin dolgoznunk kell a /reiserfsvol/etc alatt van, hiszen az lesz az új root partíciónk. Tehát szerkeszd ezt a filet, és írd át a root partícióhoz szóló bejegyzést. Valahogy így:
    /dev/hda3 / ext2 defaults 1 1
    
    Ezt kell megváltoztatnunk így:
    /dev/hda4 / reiserfs defaults 1 1
    
    Editáld a /etc/lilo.conf-ot úgy, hogy a root partíciódra mutasson. Valami ilyesmit kell csinálnod:
    default=reiserfsboot2
    ...
    image=/boot/vmlinuz-2.4.0-reiserfs
    label=reiserfsboot2
    read-only
    root=/dev/hda4
    
    Figyelj arra, hogy futtasd a'/sbin/lilo'-t újra, mielőtt rebootolnál.

    3.5 Reboot

    Gratulálok! Ha követted a lépéseket, akkor a rendszered tisztán ReiserFS-en fut. Hogy ellenőrizd ezt, írd be 'mount' és nézd meg a kimenetet:
    /dev/hda4 on / type reiserfs (rw)
    none on /proc type proc (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    
    Ha minden jól működik, akkor a régi partíciódat (/dev/hda3) megformázhatod ReiserFS-re, és visszaállíthatod a rendszered az eredeti partícióra. Vagy csinálhatsz amit kedved tart. Ha rám hallgatsz azt csinálsz amit akarsz ;-).

    4. Hibaelhárítás

    Probléma:
    ReiserFS-t választottál a /boot partíció fájlrendszereként. Amikor egy LILO beállítást akar létrehozni, a következő üzenetet kapod:
    Hole found in map file (alloc_page)
    
    Ezután, amikor újraindítja a rendszert. a lilo megáll, és csak a 'LI' betűk látszanak.

    Ok:
    A 16k-nál kisebb méretű fájlok esetében a reiserfs megpróbálja elkerülni a részblokkok elpazarlását, a fájlok végének és elejének "összecsomagolásával". Ez problémákat okoz a lilo számára, mivel a szükséges adatok a merevlemezen nem megfelelő helyre kerülnek.

    Megoldás
    Kétféle megközelítés létezik: formázd újra a /boot partíciót ext2 fájlrendszer használatával, vagy csatold fel a /boot partíciót a 'notail' paraméter használatával.

    Az újraformázás módja:
    Root-ként másold le a /boot könyvtár tartalmát és csatold le a /boot partíciót:
    cp -a /boot /boot.backup
    umount /boot
    
    Formázd újra a partíciót, ahol a /boot 'ext2'-ként lett csatolva:
    mke2fs /dev/hd??
    
    Szerkeszd meg az /etc/fstab fájlt:
    változtasd meg a
    /dev/hd?? /boot reiserfs defaults 0 0
    
    sort a
    /dev/hd?? /boot ext2	defaults 0 0
    
    sorra.

    Csatold fel a /boot partíciót újra, mozgasd vissza a tartalmát, majd futtasd a lilo-t:
    mount /boot
    mv /boot.backup /boot
    lilo
    
    A 'notail' paraméter megadása:

    Rootként szerkessze az /etc/fstab fájlt:
    változtasd meg a
    /dev/hd?? /boot reiserfs defaults 0 0
    
    sort a
    /dev/hd?? /boot reiserfs notail 0 0
    
    sorra.

    Indítsd újra a rendszert. Másold és mozgasd át a /boot könyvtárat, majd futtasd le újból a lilo-t:
    cp -r /boot /boot2
    mv /boot2 /boot
    lilo
    

    5. Copyright, licenc, visszajelzés és ilyesmi

    Micskó Gábor trey@debian.szintezis.hu - Hungarian Unix Portal

    Ez a dokumentum szabadon másolható és terjeszthető, ha a copyright és az engedély szövegét minden másolaton megőrzik. E dokumentum módosított változatai a változatlan másolatokkal megegyező feltételek alapján másolhatók és terjeszthetők, ha a módosított változatot is az ezzel az engedéllyel megegyező feltételekkel terjesztik. A fordítások is a ``módosított változat'' kategóriájába tartoznak.

    Garancia: Nincs.

    Ajánlások: Az üzleti célú terjesztés megengedett és támogatott, de nyomatékosan ajánlott, hogy a terjesztő lépjen kapcsolatba a szerzővel a terjesztés előtt, a dolgok naprakészségének biztosítása végett. (Küldhetsz egy példányt abból, amit csinálsz, ha már úgyis csinálod.) A fordítóknak is ajánlott kapcsolatba lépni a szerzővel, mielőtt lefordítják. A nyomtatott változat jobban néz ki. A papírt használd fel újra!

    Visszajelzéseket, építő jellegű kritikát a trey@debian.szintezis.hu email címre várok.

    Sok szerencsét!