Zagonska disketa je v osnovi miniaturen samostojen sistem Linux na disketi. Izvajati mora precejšnje število enakih nalog kot popoln sistem. Preden poskusite pripraviti takšno disketo, morate razumeti osnovni proces zagona Linuxa. Tukaj predstavljamo osnove, ki naj bi zadostovale za razumevanje preostanka dokumenta. Precej podrobnosti in alternativnih možnosti je bilo izpuščenih.
Vsi sistemi PC začnejo proces zagona z izvršitvijo kode v pomnilniku ROM (natančneje, v BIOS-u), ki prebere sektor 0, cilinder 0 na zagonskem pogonu. Zagonski pogon je ponavadi prvi disketni pogon (v Dosu označen kot A:, v Linuxu kot /dev/fd0). Zatem BIOS poskusi izvršiti kodo na tem sektorju. Na večini zagonskih diskov sektor 0, cilinder 0 vsebuje nekaj od naštetega:
kodo zagonskega nalagalnika, kot je npr. LILO, ki poišče jedro, ga naloži in izvrši; ali
začetek jedra operacijskega sistema, npr. Linuxa
Če je bilo Linuxovo jedro "surovo" prepisano na disketo, bo prvi sektor diskete kar prvi sektor samega Linuxovega jedra. Vsebina tega prvega sektorja je takšna, da se zagonski proces lahko nadaljuje z nalaganjem preostanka jedra z zagonske naprave.
Ko je jedro v celoti naloženo, nastavi gonilnike naprav in njihove podatkovne strukture na začetne vrednosti. Ko je to narejeno, poišče posebno lokacijo v svoji sliki, ki se imenuje beseda pomnilniškega diska. Iz te "besede" lahko razbere, kje in kako najti korenski datotečni sistem. Korenski datotečni sistem je, preprosto povedano, datotečni sistem, ki bo pritrjen (angl. mount) na imenik ``/''. Jedru je treba povedati, kje naj išče korenski datotečni sistem; če tam ne najde naložljive slike, se "obesi".
V nekaterih zagonskih situacijah, predvsem ob zagonu z diskete, se korenski datotečni sistem naloži v pomnilniški disk (angl. ramdisk), to je del pomnilnika RAM, do vsebine katerega sistem dostopa, kot da bi bila na disku. Dostop do pomnilnika RAM je za nekaj razredov hitrejši od dostopa do disketnih pogonov, zato so sistemska opravila s pomnilniškega diska hitra. Jedro lahko naloži tudi stisnjen datotečni sistem z diskete in ga razširi v pomnilniški disk, na ta način lahko na disketo spravimo občutno več datotek.
Ko je korenski datotečni sistem naložen in pritrjen, bi morali videti sporočilo, podobno naslednjemu:
VFS: Mounted root (ext2 filesystem) readonly. |
Ko je sistem uspešno naložil korenski datotečni sistem, poskuša pognati program init (v imeniku /bin ali /sbin). init prebere svojo nastavitveno datoteko /etc/inittab, poišče vrstico, označeno s sysinit in izvrši tam omenjeni skript. Skript sysinit je ponavadi /etc/rc ali /etc/init.d/boot. Ta skript je množica lupinskih ukazov, ki nastavijo osnovne sistemske storitve, npr. izvedejo ukaz fsck za preverjanje datotečnih sistemov na trdih diskih, naložijo potrebne module jedra, nastavijo izmenjevalni prostor (swap) in omrežje na začetne vrednosti in pritrdijo naprave, ki so omenjene v /etc/fstab.
Ta skript pogosto kliče ostale skripte, tako je zagon raznih storitev modularen. Na primer, v splošni strukturi SysVinit vsebuje imenik /etc/rc.d/ zapleteno strukturo podimenikov, katerih datoteke določajo, kako pognati in ustaviti večino sistemskih storitev. Na zagonskih disketah pa je skript sysinit največkrat zelo preprost.
Ko se skript sysinit zaključi, kontrolo znova prevzame init, ki vstopi v privzeti način delovanja (angl. default runlevel), določen v datoteki inittab s ključno besedo initdefault. Vrstica z oznako načina delovanja ponavadi določi program, kot je getty, ki je odgovoren za komunikacijo preko konzole in tty. To je program, ki izpiše znani odzivnik ``login:''. Program getty izvede program login, ki poskrbi za prijavo in nastavitev uporabniških sej.
Ko smo si ogledali osnove zagonskega procesa, lahko podamo definicije raznih zvrsti disket, ki se uporabljajo pri zagonu. Diskete razvrstimo v štiri zvrsti. Če ne bo določeno drugače, se bo vsebina spisa nanašala na diskete, večina informacij pa bi povsem enako veljala tudi za trde diske.
Disketa, ki vsebuje jedro, ki ga je mogoče zagnati. Disketo se lahko uporablja za zagon jedra, ki lahko zatem naloži korenski datotečni sistem na drugi disketi. Jedru na zagonski disketi je ponavadi potrebno povedati, kje naj najde ta korenski datotečni sistem.
Zagonska disketa pogosto naloži korenski datotečni sistem z druge diskete, vendar je zagonsko disketo mogoče nastaviti, da namesto tega naloži korenski datotečni sistem s trdega diska. To se ponavadi počenja ob preizkušanju novega jedra (pravzaprav bo ukaz ``make zdisk'' samodejno naredil takšno zagonsko disketo iz izvirne kode jedra).
Disketa z datotečnim sistemom, ki vsebuje zahtevane datoteke za delovanje Linuxa. Za takšno disketo ni nujno, da vsebuje jedro ali zagonski nalagalnik.
Ko se jedro zažene, lahko korensko disketo uporabljamo za delovanje sistema neodvisno od vseh ostalih diskov. Ponavadi se korenska disketa samodejno prepiše v pomnilniški disk. Tako je dostop do vsebine korenske diskete precej hitrejši, poleg tega se sprosti disketni pogon za uporabo pomožne diskete.
To je disketa, ki vsebuje jedro in korenski datotečni sistem. Z drugimi besedami, vsebuje vse potrebno za zagon in delovanje Linuxa brez trdega diska. Prednost te zvrsti diskete je v tem, da je kompaktna, vse potrebno se nahaja na eni disketi. Vendar velikosti vseh komponent s časom postopoma naraščajo, kar pomeni, da je vedno težje spraviti vse na eno disketo, tudi če se poslužite stiskanja.
Disketa, ki vsebuje datotečni sistem, ki se ne pritrdi kot korenski datotečni sistem. To je dodatna podatkovna disketa. Uporabljala naj bi se kot nosilec dodatnih pripomočkov, ki se jih ne da spraviti na korensko disketo.
Ko v splošnem govorimo o ``pripravi zagonske diskete'', mislimo na izdelavo obeh delov, t.j. zagonskega (jedro) in korenskega (datoteke). Lahko sta bodisi skupaj (enovita zagonska/korenska disketa) ali ločena (zagonska + korenska disketa). Najprilagodljivejši pristop za reševalne diskete je verjetno uporaba ločenih zagonskih in korenskih disket in še dodatne pomožne diskete, kamor spravite vse, kar ne gre na korenski disk.