Priprava disket(e)

Sedaj ste verjetno že pripravili jedro in stisnjen korenski datotečni sistem. Če pripravljate zagonsko/korensko disketo, se prepričajte, da je oboje mogoče spraviti na eno disketo. Če pripravljate sistem ločenih zagonske in korenske diskete, se prepričajte, da korenski datotečni sistem morebiti ni predolg, da bi ga spravili na disketo.

Odločite se, ali boste zagnali jedro z zagonske diskete z Lilom. Druga možnost je, da prepišete jedro neposredno na disketo in ga zaženete brez Lila. Prednost uporabe Lila je, da lahko ob zagonu podaste jedru dodatne parametre, ki so lahko nujni, da pripravite strojno opremo k delovanju. Poglejte datoteko /etc/lilo.conf v vašem sistemu. Če obstaja in če vsebuje vrstico, ki se začne z ``append=...'', potem verjetno morate zaganjati z Lilom. Slabost uporabe Lila je, da je priprava jedra zapletenejša in da je potrebnega nekoliko več prostora. Pripraviti boste morali dodaten majhen datotečni sistem, imenovan tudi datotečni sistem jedra, kamor boste prenesli jedro in še nekaj datotek, ki jih potrebuje Lilo.

Če boste pripravili zagonsko disketo z Lilom, berite dalje, če pa boste neposredno prenesli jedro, preskočite na podrazdelek Prenos jedra brez Lila.

Prenos jedra z Lilom

Najprej se prepričajte, da imate kolikor toliko novo različico Lila.

Narediti morate kratko nastavitveno datoteko za Lilo. Izgleda naj nekako takole:

        boot      =/dev/fd0
        install   =/boot/boot.b
        map       =/boot/map
        read-write
        backup    =/dev/null
        compact
        image     = JEDRO
        label     = Bootdisk
        root      =/dev/fd0
Obrazložitev teh parametrov najdete v uporabniški dokumentaciji Lila. Verjetno boste morali v to datoteko dodati še vrstico append=... iz datoteke /etc/lilo.conf na vašem trdem disku.

Datoteko shranite pod imenom bdlilo.conf.

Sedaj morate narediti majhen datotečni sistem, ki ga bomo poimenovali datotečni sistem jedra, da bomo ločili med njim in korenskim datotečnim sistemom.

Najprej poskusite uganiti, kolikšen naj bo ta datotečni sistem. Določite velikost jedra v blokih (z ukazom ``ls -s JEDRO'') in prištejte še 50 blokov. Približno toliko prostora namreč porabijo i-vozlišča in ostale datoteke. Če želite, lahko natančno izračunate to število, lahko pa privzamete kar 50. Če pripravljate zagon z dveh disket, lahko izberete tudi kakšno večjo številko, ker bo na prvi disketi tako in tako samo jedro. Vrednost DOLŽINA_JEDRA naj bo enaka tej številki.

Vstavitre disketo v pogon (zaradi poenostavitve bomo predpostavili, da je njegova naprava /dev/fd0) in na njej naredite datotečni sistem ext2:

        mke2fs -N 24 -m 0 /dev/fd0 DOLŽINA_JEDRA
Izbira ``-N 24'' določi 24 i-vozlišč, kar zadostuje za ta datotečni sistem. Nato ga priklopite, odstranite imenik lost+found ter naredite imenika dev in boot za Lilo:
        mount -o dev /dev/fd0 /mnt
        rm -rf /mnt/lost+found
        mkdir /mnt/{boot,dev}

Nato izdelajte datoteki gonilnikov naprav /dev/null in /dev/fd0. Namesto da ugotavljate številke naprav, jih lahko kar prepišete s trdega diska z izbiro -R:

        cp -R /dev/{null,fd0} /mnt/dev
Lilo potrebuje kopijo svojega zagonskega nalagalnika, boot.b, ki ga lahko snamete s trdega diska. Ponavadi se nahaja v imeniku /boot.
        cp /boot/boot.b /mnt/boot
Na koncu prepišite še datoteko z nastavitvami Lila, ki ste jo naredili v prejšnjem razdelku, in jedro. Oboje se lahko nahaja v korenskem imeniku:
        cp bdlilo.conf JEDRO /mnt
Vse, kar Lilo potrebuje, je sedaj na datotečnem sistemu jedra, tako da je pripravljen na zagon. Uporabimo Lilovo izbiro -r, ki namesti zagonski nalagalnik na drug korenski imenik:
        lilo -v -C bdlilo.conf -r /mnt
Lilo bi se moral pognati brez napak, za tem bi moral datotečni sistem izgledati nekako takole:
total 361
  1 –rw–r––r––   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr–xr–x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr–xr–x   2 root     root         1024 Jan 10 07:22 dev/
358 –rw–r––r––   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 –rw–r––r––   1 root     root         3708 Jan 10 07:22 boot.b
  4 –rw–––––––   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw–r–––––   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw–r––r––   1 root     root       1,   3 Jan 10 07:22 null

Ne skrbite, če se zgoraj navedene velikosti datotek nekoliko razlikujejo od vaših.

Sedaj pustite disketo v pogonu in preskočite na podrazdelek Nastavljanje besede za pomnilniški disk.

Prenos jedra brez Lila

Če ne uporabljate Lila, preneste jedro na zagonsko disketo z ukazom dd:

        % dd if=JEDRO of=/dev/fd0 bs=1k
        353+1 records in
        353+1 records out
V tem primeru je dd zapisal 353 polnih blokov plus še enega nepolnega, jedro tako zasede prvih 354 blokov na disketi. Poimenujmo to številko DOLŽINA_JEDRA in si jo zapomnimo, saj jo bomo potrebovali v naslednjem razdelku.

Na koncu nastavimo, da bo korenska naprava sama disketa, in da se bo naložila z dovolilnicami za branje in pisanje:

        rdev /dev/fd0 /dev/fd0
        rdev -R /dev/fd0 0
Bodite pozorni, da boste v drugem ukazu rdev vtipkali izbiro kot veliki -R.

Nastavljanje besede za pomnilniški disk

Znotraj slike jedra se nahaja skupina bitov z imenom beseda pomnilniškega diska (beseda (angl. word) v tem primeru pomeni 16 bitov), ki s še nekaj drugimi možnostmi določa predvsem, kje naj se išče korenski datotečni sistem. To besedo lahko dosežemo in nastavimo z ukazom rdev, posamezni njeni biti pa pomenijo naslednje:

Če je bit št. 15 nastavljen na 1, boste ob zagonu pozvani, da v pogon vstavito naslednjo disketo. To je potrebno v sistemih z ločenima zagonsko in korensko disketo.

Ločimo dva primera v odvisnosti od tega, ali pripravljamo enovito zagonsko/korensko disketo ali pa sistem z dvema (zagonska + korenska) disketama.

  1. Če pripravljate enovito disketo, bo stisnjen korenski datotečni sistem nameščen takoj za jedrom, Tako bo odmik enak številki prvega prostega bloka (ki naj bi bila enaka DOLŽINA_JEDRA). Bit št. 14 nastavimo na 1, bit št. 15 pa na 0. Recimo, da pripravljate enovito zagonsko disketo in da se bo korenski datotečni sistem začel na bloku št. 253 (desetiško). Vrednost besede pomnilniškega diska bo tako 253 (desetiško), bit št. 14 bo nastavljen na 1, bit št. 15 pa na 0. Vrednost besede lahko izračunate, če preprosto seštejete vrednosti v desetiškem številskem sistemu: 253 + (2^14) = 253 + 16384 = 16637. Če vam ni povsem jasno, od kod ta številka, jo vtipkajte v znanstveni kalkulator in pretvorite v dvojiški sistem.

  2. Če pripravljate sistem z dvema zagonskima disketama, se bo korenski datotečni sistem začel na bloku št. 0 druge diskete, odmik bo tako enak 0. Bit št. 14 bo enak 1, bit št. 15 pa ravno tako 1. Desetiška vrednost besede bo tako v tem primeru enaka 2^14 + 2^15 = 49152.

Potem, ko ste izračunali vrednost besede pomnilniškega diska, jo nastavite z ukazom rdev -r. Bodite pozorni, da boste nastavili njeno desetiško vrednost. Če ste se odločili za namestitev jedra z Lilom, naj bo argument za ukaz rdev pot do pritrjenega jedra, npr. /mnt/vmlinuz; če ste jedro prepisali z ukazom dd, namesto tega vnesite ime gonilniške datoteke za disketni pogon (npr., /dev/fd0).

        rdev -r JEDRO_ALI_DISKETNI_POGON  VREDNOST

Če ste se odločili za namestitev jedra z Lilom, sedaj odklopite disketo.

Important

Ne verjemite tega, kar pravi priročniška stran za rdev/ramsize o velikosti pomnilniškega diska. Priročniška stran je zastarela. Od jedra 2.0 dalje (ali nekaj takšnega) beseda pomnilniškega diska nič več ne določa njegove velikosti; namesto tega se beseda interpretira v skladu s tabelo na začetku podrazdelka Nastavljanje besede za pomnilniški disk. Podrobnejšo razlago najdete v dokumentacijski datoteki ramdisk.txt ali na naslovu http://www.linuxhq.com/kernel/v2.4/doc/ramdisk.txt.html.

Prenos korenskega datotečnega sistema

V zadnjem koraku je potrebno prenesti še datotečni korenski sistem.

Čestitke, končali ste!

Important

Preden zagonsko(i) disketo(i) pospravite za nujne primere, jo/ju vsekakor preizkusite. Če zagon z nje/njiju ne uspe, berite dalje.