Že narejene zagonske diskete"> Odpravljanje napak ali agonija poraza"> Korenski datotečni sistemi brez pomnilniškega diska"> Vsebina vzorčnega korenskega sistema"> Priprava pomožne diskete"> Zmanjšanje velikosti korenskega datotečnega sistema"> Prenos jedra brez Lila"> Nastavljanje besede za pomnilniški disk"> Podpora za PAM in NSS"> Priprava korenskega datotečnega sistema"> Vsebina vzorčne pomožne diskete"> Prenos jedra z Lilom"> Kako to delajo profesionalci"> Izdelava zagonskih plošč CD"> Izdelava datotečnega sistema"> Ko je končno vse pripravljeno"> ]>
The Linux Bootdisk HOWTO Bootdisk-HOWTO Tom Fawcett
Bootdisk-HOWTO at linuxdoc dot org
1995-2002 Tom Fawcett Avtorske pravice so last Toma Fawcetta in Grahama Chapmana (© 1995-2002 by Tom Fawcett and Graham Chapman). Ta dokument je dovoljeno razširjati v skladu z določili dovoljenja Linux Documentation Project License. Prosimo, stopite v stik z avtorjema, če besedila dovoljenja ne morete dobiti. v4.5, Januar 2002 Povzetek Ta dokument obravnava načrtovanje in pripravo zagonskih/korenskih disket za Linux. Te diskete se lahko uporabljajo kot reševalne diskete ali za preizkušanje novih sistemskih komponent. Predznanje o sistemskem upravljanju je obvezno. Če potrebujete zgolj reševalno disketo za nujne primere, si oglejte dodatek &dodatek-A;.
Predgovor Dokument je lahko že zastarel. Če je datum na naslovni strani starejši od šestih mesecev, si, prosimo, oglejte domačo stran angleškega izvirnika tega spisa, da ugotovite, ali morda obstaja novejša različica. Čeprav bi ta dokument moral biti berljiv tudi v tekstovni obliki, je v oblikah PostScript, PDF ali HTML videti precej lepše zaradi uporabljenih tipografskih konvencij. Opombe o različicah jedro različice Prvotno je spis Bootdisk-HOWTO pisal Graham Chapman in ga tudi vzdrževal do različice 3.1. Tom Fawcett je pričel kot soavtor v času, ko je bilo izdano jedro v2, in je trenutni vzdrževalec dokumenta. Chapman se je umaknil iz skupnosti Linuxa in ni znano, s čim se trenutno ukvarja. Te informacije veljajo za izvedbe Linuxa za arhitekturo Intel. Večina spisa bi sicer morala veljati tudi za Linuxe, ki tečejo z ostalimi tipi procesorjev, vendar avtor nima neposrednih izkušenj z njimi ali podatkov o njih. Če imate kaj izkušenj z zagonskimi disketami za ostale arhitekture, prosimo, stopite v stik z avtorjem. Kaj je še potrebno storiti Zdi se, da je User-mode-linux ( http://user-mode-linux.sourceforge.net) odlično orodje za preizkušanje zagonskih disket, ne da bi vam bilo potrebno neprestano ponovno zaganjati sistem. Avtorju ga ni uspelo spraviti k delovanju. Če ta program komu brez težav deluje z doma pripravljenimi zagonskimi disketami, ga avtor naproša, naj mu to sporoči. Znova analizirati razdelek o zagonskih disketah distribucij in posodobiti razdelek "Kako to delajo profesionalci". Ugotoviti, koliko se da poenostaviti zaporedje init - getty - login in ga oskubiti. Nekaj ljudi trdi, da je mogoče init povezati neposredno na /bin/sh; če je to res in če ne prinaša kakšnih posebnih omejitev, je potrebno dopolniti navodila, da bodo to obravnavala. V tem primeru ne bi bili več potrebni getty, login, gettydefs, morda pa tudi ne vsa navlaka za PAM in NSS. Znova iti skozi izvirno kodo jedra 2.4 in napisati podrobno razlago, kako delujeta procesa zagona in nalaganja pomnilniških diskov (četudi samo zato, da jo bom sam bolje razumel). Je še nekaj problemov glede initrd in omejitev zagonskih naprav (npr. pomnilnik flash), ki jih še ne razumem. Odstraniti razdelek, ki obravnava nadgradnjo obstoječih zagonskih disket posameznih distribucij. S tem je ponavadi več težav, kot je vredno. Nadomestiti ukaze rdev s ključnimi besedami Lila. Odziv in zasluge Dobrodošel je vsakršen odziv, pozitiven ali negativen, na vsebino tega dokumenta. Avtor se je potrudil po najboljših močeh, da so informacije in navodila točna in zanesljiva, vendar ne ve vsega in ne sledi razvoju jedra. Prosim, obvestite ga, če najdete napake ali kaj manjkajočega. Ob odzivu mu sporočite še številko različice dokumenta, na katero se nanaša opomba. Bodite prijazni. Zahvaljujemo se veliko ljudem, ki so pomagali s popravki in predlogi. Po zaslugi njihovih prispevkov je spis precej boljši, kot bi bil, če bi ga avtorja napisala sama. Pripombe in popravke pošljite avtorju na elektronski naslov, naveden zgoraj. Prosim, preberite razdelek &troubleshooting;, preden ga kaj vprašate. Ne pošiljajte mu slik disket. Pripombe na prevod v slovenščino lahko pošljete prevajalcu Jerneju Kovačiču na naslov jkovacic na email pika si. Pravice razširjanja Avtorske pravice pripadajo Tomu Fawcettu in Grahamu Chapmanu (© 1995-2002, Tom Fawcett in Graham Chapman). Ta dokument se lahko razširja pod določili dovoljenja Linux Documentation Project License. Prosim, stopite v stik z avtorjema, če ne morete dobiti besedila dovoljenja. To je prosta dokumentacija. Razširja se v upanju, da bo koristna, vendar brez kakršnegakoli jamstva; celo brez vsebovanega jamstva o vrednosti ali pripravnosti za določen namen. Uvod Linuxove zagonske diskete pridejo prav marsikdaj, npr. pri preizkušanju novega jedra, pri odpovedih diska (vse od izgubljenih zagonskih sektorjev do sesutja diskovne glave), pri krpanju "sesutega" sistema ali pri varni nadgradnji kritičnih sistemskih datotek (kot npr. libc.so). Obstaja več načinov, da pridete do zagonske diskete: Uporabite zagonsko disketo kakšne od že obstoječih distribucij, kot je npr. Slackware. Tako boste lahko vsaj zagnali sistem. Uporabite reševalni (angl. rescue) paket, ki pripravi reševalne diskete. Naučite se, kaj je potrebno za delovanje posameznih tipov zagonskih disket, in si pripravite svoje lastne zagonske diskete. Nekateri izberejo zadnjo navedeno možnost, tako lahko vse storijo sami. Na ta način lahko, če se kaj zalomi, ugotovijo, kaj storiti, da to popravijo. Poleg tega je to odličen način, da spoznajo, kako Linux sploh deluje. Predvideva se, da že nekaj veste o sistemskem upravljanju Linuxa. Tako se predvideva, da veste, kaj so imeniki, datotečni sistemi in diskete. Znana bi vam morala biti uporaba ukazov mount in df. Vedeti bi morali, čemu sta namenjeni datoteki /etc/passwd in fstab ter kako izgledata. Prav tako bi morali vedeti, da naj bi večino ukazov v tem spisu pognali kot sistemski upravitelj (root). Izdelava zagonske diskete od začetka je lahko zapletena. Če še niste prebrali seznama pogosto zastavljenih vprašanj o Linuxu (Linux FAQ) in podobnih dokumentov, npr. spis Kako namestiti (Installation HOWTO) in Vodnik po namestitvi Linuxa (Linux Installation Guide), se ne bi smeli lotiti priprave zagonskih disket. Če potrebujete samo delujočo zagonsko disketo za nujne primere, je precej enostavneje prenesti si sliko že vnaprej pripravljene diskete. Glede napotkov, kje jih lahko dobite, si oglejte podrazdelek &dodatek-A;. Zagonske diskete in proces zagona zagonski proces 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. Proces zagona Zagonski sektor BIOS zagonski pogon 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. korenski datotečni sistem pomnilniški disk stisnjen datotečni sistem 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. init inittab sysinit 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. /etc/rc.d/ 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. Zvrsti zagonskih disket 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. zagonska disketa (boot) 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). korenska disketa (root) Disketa z datotečnim sistemom, ki vsebuje zahtevane datoteke za delovanje Linuxa. Za takšno disketo ni nujno, da vsebuje jedro ali zagonski nalagalnik. korenska disketa 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. zagonska/korenska disketa (boot/root) zagonska/korenska disketa 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. pomožna disketa (utility) 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. pomožna disketa 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. Priprava korenskega datotečnega sistema Izdelava korenskega datotečnega sistema pomeni izbrati potrebne datoteke, da bo sistem deloval. V tem razdelku bomo obravnavali izdelavo stisnjenega korenskega datotečnega sistema. Manj običajna možnost je izdelava nestisnjenega datotečnega sistema na disketi, ki se ga neposredno pritrdi kot korenskega; ta alternativa je obravnavana v razdelku &ramdisk;. Pregled Korenski datotečni sistem mora vsebovati vse potrebno za podporo polnemu sistemu Linux. Da lahko zadostimo temu pogoju, mora biti na disk vključeno vsaj naslednje: Osnovna struktura datotečnega sistema, Minimalen nabor imenikov: /dev, /proc, /bin, /etc, /lib, /usr, /tmp, Osnovni nabor pripomočkov: Minimalni nabor nastavitvenih datotek: rc, inittab, fstab, itd., Datoteke gonilnikov naprav: /dev/hd*, /dev/tty*, /dev/fd0, itd., Knjižnica, ki omogoča delovanje osnovnih funkcij pripomočkov. Sistem seveda šele postane uporaben, ko lahko na njem kaj poženete in korenska disketa ponavadi šele postane uporabna, ko lahko naredite kaj od naslednjega: Pregledate datotečni sistem na drugem disku, npr. da pregledate korenski datotečni sistem na vašem trdem disku, morate najprej znati zagnati Linux z drugega diska (npr. s korensko disketo). Potem lahko poženete ukaz fsck za preverjanje datotečnega sistema na disku, kjer se nahaja vaš siceršnji datotečni sistem, ne da bi ta disk sploh bil pritrjen. Obnovite rezervne kopije celotnega ali dela diska z uporabo orodij za arhiviranje in stiskanje, npr. cpio, tar, gzip in ftape. Obravnavamo izdelavo stisnjenega datotečnega sistema, tako se imenuje, ker se na disketi nahaja stisnjen in se ob zagonu razširi v pomnilniški disk. S stisnjenim datotečnim sistemom lahko na standardno 1440 kB disketo spravite precej datotek (za pribl. 6 MB). Ker je datotečni sistem precej obsežnejši od kapacitete diskete, ga ne morete pripraviti na disketi. Najprej ga je treba izdelati nekje drugje, ga stisniti in nato prepisati na disketo. Izdelava datotečnega sistema Za izdelavo takšnega korenskega datotečnega sistema potrebujete dodatno napravo z dovolj veliko kapaciteto, da boste lahko nanjo že pred stiskanjem spravili vse datoteke. Na tej napravi potrebujete okoli 4 MB prostora. Na voljo je več možnosti: Uporaba pomnilniškega diska (DEVICE = /dev/ram0). V tem primeru pomnilnik RAM posnema disk. Pomnilniški disk mora biti dovolj obsežen, da boste lahko nanj spravili datotečni sistem ustrezne velikosti. Če uporabljate LILO, v nastavitveni datoteki (/etc/lilo.conf) preverite vrstico RAMDISK = nnn, ki določa največjo količino pomnilnika RAM, ki se lahko uporablja kot pomnilniški disk. Privzeto je 4096 kB, kar bi moralo zadostovati. Tolikšnega pomnilniškega diska verjetno ne bi smeli niti poskusiti uporabljati na računalnikih z manj kot 8 MB pomnilnika RAM. Prepričajte se, da obstaja datoteka gonilnika naprave /dev/ram0, /dev/ram ali /dev/ramdisk. Če ne obstaja, naredite /dev/ram0 z ukazom mknod (višja številka 1, nižja 0). Če imate dovolj velik neuporabljen razdelek (particijo) trdega diska (več MB), bo sprejemljivo tudi to. Uporaba povratnozančne naprave (loopback device), ki omogoča, da se lahko datoteko na disku obravnava kot napravo. Z uporabo povratnozančne naprave lahko naredite 3 MB dolgo datoteko na disku in v njej pripravite datotečni sistem. Vtipkajte man losetup za navodila, kako uporabljati povratnozančne naprave. Če ukaza losetup nimate, ga lahko dobite priloženega kompatibilnim različicam ukazov mount in unmount iz paketa util-linux v imeniku ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/ . Če v vašem sistemu nimate datoteke gonilnika za zančno napravo (/dev/loop0, /dev/loop1, itd.), jo boste morali izdelati z ukazom ``mknod /dev/loop0 b 7 0''. Potem, ko ste namestili ti posebni izvršilni datoteki mount in umount, naredite začasno datoteko na trdem disku z dovolj veliko kapaciteto (npr. /tmp/fsfile). To lahko storite z ukazom dd if=/dev/zero of=/tmp/fsfile bs=1k count=nnn ki izdela datoteko v velikosti nnn blokov. V vseh nadaljnjih primerih nadomestite besedo NAPRAVA z imenom pravkar narejene datoteke. Ob klicu ukaza mount morate dodati tudi izbiro , s čimer ukazu mount poveste, naj uporablja povratnozančno napravo. povratnozančna naprava Ko ste izbrali eno izmed teh možnosti, pripravite NAPRAVO z ukazom: dd if=/dev/zero of=NAPRAVA bs=1k count=4096 Ta ukaz zapolni prostor za NAPRAVO z ničlami (angl. to zero). Zapolnitev z ničlami je zelo pomembna, ker bo datotečni sistem kasneje stisnjen. Zato naj bi bili vsi neuporabljeni predeli zapolnjeni z ničlami, s čimer dosežemo največjo možno stisljivost. Na to pomislite vsakič, ko prestavljate ali brišete datoteke v tem datotečnem sistemu. Datotečni sistem bo pravilno odstranil bloke iz svoje tabele, vendar njihovih mest ne bo zapolnil z ničlami. Če veliko brišete in prepisujete po datotečnem sistemu, bo lahko stisnjeni datotečni sistem na koncu precej obsežnejši, kot bi lahko bil. i-vozlišča dodelitev na korenskem datotečnem sistemu Nato izdelajte datotečni sistem. Linuxovo jedro prepozna dve vrsti datotečnih sistemov za korenske diskete, ki se samodejno prepišejo v pomnilniški disk. To sta minix in ext2, pri čemer se priporoča uporaba slednjega. Ob uporabi ext2 bo morda koristna izbira -N, s katero lahko določite večje število vozlišč (angl. inodes) od privzetega; predlaga se izbira -N 2000, tako vam vozlišč ne bi smelo zmanjkati. Po drugi strani lahko prihranite nekaj vozlišč z odstranitvijo precej nepotrebnih datotek iz imenika /dev. Ukaz mke2fs bo na 1,44 MB disketi privzeto naredil 360 vozlišč. Avtor sicer poroča, da za njegovo reševalno disketo zadostuje že 120 vozlišč, vendar če vključite vse datoteke gonilnikov naprav v /dev, boste zlahka presegli 360 vozlišč. S stiskanjem je mogoč obsežnejši datotečni sistem in s tem privzeto več vozlišč, vendar boste še zmeraj morali bodisi zmanjšati število datotek bodisi povečati število vozlišč. Tako bo ukaz, ki ga boste vtipkali, podoben naslednjemu: mke2fs -m 0 -N 2000 NAPRAVA (Če uporabljate povratnozančno napravo, nadomestite NAPRAVO z imenom uporabljene datoteke.) povratnozančna naprava Ukaz mke2fs samodejno ugotovi količino prostora, ki je na voljo, in v skladu s tem nastavi vse potrebno. Izbira ``-m 0'' prepreči, da je nekaj prostora (privzeto 5%) namenjenega samo sistemskemu upravitelju (uporabnik root), tako ostane na disku več uporabnega prostora. Nato pritrdimo napravo: mount -t ext2 NAPRAVA /mnt (Če še ne obstaja, morate narediti imenik /mnt, ki bo služil kot točka vpetja na datotečni sistem.) V preostalih razdelkih bomo predpostavili, da so imena ciljnih imenikov relativna glede na /mnt. Naselitev datotečnega sistema Tukaj je naveden razumen najmanjši nabor imenikov za vaš korenski datotečni sistem Tukaj predstavljena imeniška struktura velja samo za korenske diskete. Resnični sistemi Linux imajo kompleksnejši in strožje določen pravilnik, imenovan Filesystem Hierarchy Standard (standard za hierarhijo datotečnega sistema), ki določa, kje naj bo katera datoteka. : /dev -- Datoteke gonilnikov naprav, obvezne za delovanje vhodno/izhodnih operacij /proc -- Imenik, obvezen za delovanje datotečnega sistema proc /etc -- Datoteke s sistemskimi nastavitvami /sbin -- Pomembne sistemske izvršljive datoteke /bin -- Potrebne izvršljive datoteke, ki se smatrajo za del sistema /lib -- Deljene knjižnice, ki zagotavljajo delovanje izvršljivih datotek /mnt -- Točka priklopa za delo z ostalimi diski /usr -- Dodatni pripomočki in programi Trije izmed naštetih imenikov bodo v korenskem datotečnem sistemu prazni in jih je potrebno le ustvariti z ukazom mkdir. Imenik /proc je v osnovi le mesto, kamor se bo namestil datotečni sistem proc. Imenika /mnt in /usr sta samo priklopni točki, ki se uporabljata, ko zagonski/korenski sistem že teče. Še enkrat, te tri imenike je potrebno samo ustvariti. Ostali štirje imeniki so opisani v naslednjih razdelkih. /dev imenik gonilnikov naprav dev) Imenik /dev, ki vsebuje posebne datoteke za vse v sistemu uporabljane naprave, je obvezen v vsakem sistemu Linux. Sam po sebi je to običajen imenik in ga lahko na običajen način ustvarimo z ukazom mkdir. Zato pa je potrebno posebne datoteke naprav ustvariti na poseben način z ukazom mknod. Obstaja tudi lažji način, mogoče je namreč prepisati datoteke iz obstoječega imenika /dev na trdem disku. Zahtevano je edino, da se ukazu za prepisovanje (cp) doda še izbira -R. Tako prepišete imenik brez prepisovanja vsebine datotek. Prepričajte se, da bo izbira vtipkana kot velika črka. Primer: cp -dpR /dev/fd[01]* /mnt/dev cp -dpR /dev/tty[0-6] /mnt/dev ob predpostavki, da je disketa pritrjena na imenik /mnt. Stikali dp poskrbita, da se simbolne povezave prepišejo kot povezave (ne pa datoteke, kamor te povezave kažejo) in da se ohranijo prvotni atributi datotek ter skupaj z njimi tudi podatki o njihovem lastništvu. Če hočete to storiti na težji način, z ukazom ls -l ugotovite višje (major) in nižje (minor) številke naprav za želene naprave in jih naredite na disketi z uporabo ukaza mknod. Kakorkoli že naredite datoteke gonilnikov naprav, preverite, ali ste na disketo namestili datoteke gonilnikov naprav, ki jih potrebujete. Na primer, ftape uporablja datoteke gonilnikov naprav za tračne enote, zato boste morali prepisati vse te datoteke gonilnikov naprav, če nameravate po zagonu s pripravljene diskete uporabljati tračno enoto. Upoštevajte, da vsaka datoteka gonilnikov naprav porabi eno vozlišče in vozlišč lahko hitro zmanjka, kar še posebej velja za datotečne sisteme na disketah. Zato boste morali skrbno izbrati, katere datoteke gonilnikov naprav vključiti na disketo. Če npr. nimate diskov SCSI, lahko mirno izpustite vse datoteke /dev/sd*; če ne nameravate uporabljati serijskih vrat, lahko izpustite /dev/ttyS* itn. Če se ob pripravi korenskega datotečnega sistema izpiše sporočilo No space left on device (Na napravi je zmanjkalo prostora), ukaz df pa pokaže, da je prostor še na razpolago, vam je zelo verjetno zmanjkalo vozlišč. Porabo vozlišč lahko ugotovite z ukazom df -i. Vsekakor pa naj bodo vključene naslednje datoteke iz tega imenika: /etc imenik etc Imenik /etc vsebuje nastavitvene datoteke. Njegova vsebina je odvisna od programov, ki jih nameravate poganjati. Na večini sistemov lahko njegovo vsebino razdelimo v tri skupine: Vedno obvezne datoteke, npr. Datoteke, ki so lahko obvezne, vendar ni nihče 100% prepričan v to. Šara, ki se je, kdo ve, kako, znašla tu. Ponavadi lahko neobvezne datoteke razkrinkamo z ukazom: ls -ltru Ta ukaz nam razvrsti datoteke glede na čas zadnjega dostopa do njih, začenši s tistimi s časovno najbolj oddaljenimi dostopi. Če se torej katera datoteka odpira neredno, je ni potrebno prepisovati na korensko disketo. Kot poroča avtor, je število nastavitvenih datotek na korenski disketi oklestil na 15. Na ta način je mogoče prihraniti nekaj dela z razdelitvijo na tri množice datotek: Datoteke, ki jih je treba posebej nastaviti za zagonsko/korenski sistem: rc.d/* -- skripti za zagon sistema in spremembe načinov delovanja fstab -- seznam datotečnih sistemov, ki jih je mogoče pritrditi inittab -- parametri za proces init, prvi proces, ki steče ob zagonu. gettydefs -- parametri za proces init, prvi proces, ki steče ob zagonu. Datoteke, ki jih je potrebno le ``počistiti'' za uporabo na zagonskem/korenskem sistemu: passwd -- seznam uporabnikov, domačih imenikov itd. group -- uporabniške skupine. uporabniške skupine shadow -- gesla uporabnikov. Ni rečeno, da jo imate. gesla shadow termcap -- zbirka podatkov o zmožnostih terminala. Če je varnost pomembna, bi morali biti datoteki passwd in shadow okleščeni. Na ta način ne razširjamo naokrog uporabniških gesel brez potrebe, obenem pa ob zagonu z diskete onemogočimo neželene prijave. obnavljanje datotek gesla shadow passwd Prepričajte se, da datoteka passwd vsebuje vsaj sistemskega upravitelja (root). Če nameravate omogočiti dostop tudi drugim uporabnikom, poskrbite, da obstajajo tudi njihove lupine in domači imeniki. termcap, zbirka podatkov o terminalu, je običajno dolga več 100 kB. Različica za zagonsko/korensko disketo naj bi bila toliko okleščena, da vsebuje samo terminal(e), ki ga (jih) uporabljate, to pa je ponavadi samo vnos linux ali linux-console. Ostalo. Ker trenutno delujejo, jih avtor pusti pri miru. Poleg tega je potrebno nastaviti dve datoteki in izkaže se, da je njuna vsebina presenetljivo kratka. rc naj vsebuje: #!/bin/sh /bin/mount -av /bin/hostname Kangaroo Poskrbite, da je izvršljiva (nastavljena dovoljenja za izvrševanje), da se prva vrstica prične z "#!" in da so vsa absolutna imena datotek pravilna. Ukaza hostname niti ni potrebno pognati, če ga, je izgled nekoliko prijaznejši. fstab naj vsebuje vsaj: /dev/ram0 / ext2 defaults /dev/fd0 / ext2 defaults /proc /proc proc defaults fstab Prepišete lahko vnose z vaše obstoječe datoteke fstab, vendar ne bi smeli samodejno pritrditi kar vseh razdelkov trdega diska, zato zraven dopišite še ključno besedo noauto. Ko uporabljate zagonsko disketo, je vaš trdi disk namreč lahko poškodovan ali pokvarjen. Datoteko inittab je potrebno preurediti tako, da vrstica s sysinit požene rc ali katerikoli osnovni zagonski skript boste že uporabili. Če nočete, da se uporabniki prijavljajo prek serijskih vrat, zakomentirajte vse vnose za getty, ki imajo na koncu vrstice vključeno napravo ttys ali ttyS. Vrata tty pustite, da se bo mogoče prijavljati prek konzole. inittab sysinit rc Minimalna datoteka inittab je videti nekako takole: id:2:initdefault: si::sysinit:/etc/rc 1:2345:respawn:/sbin/getty 9600 tty1 2:23:respawn:/sbin/getty 9600 tty2 Datoteka inittab določa, kaj bo sistem pognal v različnih stanjih, vključujoč zagon, premik v večuporabniški način itd. Pozorno preverite imena datotek, omenjena v datoteki inittab; če init ne najde tam omenjenih programov, se bo sistem obesil in verjetno ne boste videli niti sporočila o napaki. vprogramirane lokacije Upoštevajte, da nekaterih programov ni mogoče prestavljati drugam, ker imajo drugi programi že vprogramirane (angl. hardcoded) poti do njih. Primer je /etc/shutdown, ki ima v sebi že vprogramirano pot do /etc/reboot. Če prestavite reboot npr. v /bin/reboot in nato poskusite pognati ukaz shutdown, vam to ne bo uspelo, ker shutdown ne bo našel datoteke reboot. imenik etc Kar se tiče ostalega, samo prepišite vse tekstovne datoteke v imeniku /etc, poleg njih pa še vse izvršilne datoteke v tem imeniku, za katere niste prepričani, da jih ne potrebujete. Poskusite se zgledovati po vzorčnem seznamu v dodatku &vsebina;. Verjetno bo zadostovalo, če prepišete samo te datoteke, vendar se lahko sistemi kar precej razlikujejo med seboj, zato ne morete biti prepričani, da je ta ista množica datotek v vašem sistemu enakovredna datotekam na tem seznamu. Edini zanesljiv način je, da si ogledate inittab in ugotovite, kaj vse se zahteva. Dandanes večina sistemov uporablja imenik /etc/rc.d/, ki vsebuje lupinske skripte za različne načine delovanja. Vsebovati mora najmanj skript rc, vendar je morebiti enostavneje kar prepisati inittab in vsebino imenika /etc/rc.d z obstoječega sistema ter nato oklestiti skripte v imeniku rc.d, da tako odstranite vse, česar ne potrebujete za delovanje sistema, zagnanega s sistemske diskete. /bin in /sbin imenik bin imenik sbin Imenik /bin je primerno mesto za dodatne pripomočke, ki jih potrebujete za izvajanje osnovnih opravil, pripomočkov, kot so ls, mv, cat in dd. Oglejte si dodatek &vsebina; kot referenčni seznam datotek, ki sodijo v imenika /bin in /sbin. Na tem seznamu ni pripomočkov za obnavljanje rezervnih kopij, kot so cpio, tar ali gzip. Vzrok temu je, da se te datoteke praviloma nahajajo na posebni disketi s pripomočki, tako se prihrani prostor na zagonski/korenski disketi. Ko je sistem enkrat zagnan z zagonske/korenske diskete, se njena vsebina prepiše v pomnilniški disk, disketni pogon pa se sprosti za pritrditev dodatne diskete, t.j. pomožne diskete. Ponavadi se jo pritrdi na /usr. Izdelava pomožne diskete je opisana v podrazdelku &pomozni;. Verjetno je pametno, da na pomožno disketo shranite orodja za obnavljanje rezervnih kopij, ki naj bodo enake različice, kot tista, s katerimi ste rezervne kopije tudi naredili. Tako ne boste tratili časa z namestitvijo različic, ki ne znajo prebrati vaših trakov z rezervnimi kopijami. Nikar ne pozabite vključiti naslednjih programov: init getty login sh lupine /lib imenik s knižnicami (lib) knjižnice V imenik /lib boste namestili potrebne deljene knjižnice in nalagalnike. Če sistem potrebnih knjižnic ne najde v imeniku /lib, se ne bo mogel zagnati. Če boste imeli srečo, boste morebiti celo videli sporočilo o napaki. libc.so Skorajda vsak program zahteva vsaj knjižnico libc, libc.so.N, kjer N pomeni številko trenutne različice. Preverite vaš imenik /lib. Datoteka libc.so.N je ponavadi simbolična povezava do datoteke, ki v imenu vsebuje popolno številko različice: % ls -l /lib/libc* -rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so* lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so* V tem primeru potrebujete datoteko libc-2.1.1.so. Do seznama preostalih potrebnih knjižnic se pride tako, da vsaki izvršljivi datoteki, ki jo želite vključiti na disketo, ugotovite njene odvisnosti z ukazom ldd. Na primer: % ldd /sbin/mke2fs libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000) libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) libc.so.6 => /lib/libc.so.6 (0x4002c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Dodati je potrebno vse datoteke na desni strani zgornjega izpisa. Datoteka je lahko tudi simbolična povezava. Upoštevajte, da so nekatere knjižnice kar obsežne in jih ni lahko spraviti na korenski datotečni sistem. Primer je zgoraj navedena knjižnica libc.so, ki obsega približno 4 MB. Preden prepišete knjižnice na korenski datotečni sistem, jih boste verjetno morali oskubiti (angl. strip). Za nadaljnja navodila si oglejte razdelek &slimfast;. nalagalniki V imeniku /lib ne sme manjkati tudi nalagalnik knjižnic. Nalagalnik bo ali ld.so (za knjižnice A.OUT, ki se postopoma opuščajo) ali ld-linux.so (za knjižnice ELF). Novejše različice ldd (kot je npr. v zgornjem primeru) tudi natančno povedo, kateri nalagalnik je potreben, starejše različice pa morda ne. Če niste prepričani, katerega potrebujete, poženite ukaz file nad knjižnicami. Na primer: % file /lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped /lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped /lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped Besedica QMAGIC pove, da je različica 4.7.2 za knižnice A.OUT, ELF pa pove, da sta različici 5.4.33 in 2.1.1 za knjižnice ELF. ELF Nalagalnik(e), ki jih potrebujete, prepišite na korenski disk, ki ga pripravljate. Temeljito preverite ali ste prepisali vse knjižnice in nalagalnike, ki jih potrebujejo vključene izvršilne datoteke. Če jedro ne more naložiti kakšne izmed knjižnic, se utegne obesiti brez opozorila o napaki. Podpora za PAM in NSS Vaš sistem lahko zahteva tudi dinamično naložene knjižnice, ki jih ldd ne vidi. Če ne omogočite podpore za te knjižnice, utegnete imeti težave ob prijavi ali uporabi zagonske diskete. PAM (Pluggable Authentication Modules - vtični moduli za avtentikacijo) Če vaš sistem uporablja PAM, morate na zagonski disketi poskrbeti za nekaj zaloge zanjo, Na kratko, PAM je sofisticirana modularna metoda za avtentikacijo uporabnikov in nadzor njihovega dostopa do storitev. Preprost način, da ugotovite, ali vaš sistem uporablja PAM, je, da poženete ukaz ldd na izvršilni datoteki login; če v izpisu vidite libpam.so, potem potrebujete PAM. Na srečo varnost ne igra pomembne vloge pri uporabi zagonskih disket, kajti vsak, ki ima fizični dostop do računalnika, lahko tako ali tako počne, kar hoče. Zato lahko učinkovito onemogočite PAM, če v vaš korenski datotečni sistem dodate preprosto datoteko /etc/pam.conf, ki je videti takole: OTHER auth optional /lib/security/pam_permit.so OTHER account optional /lib/security/pam_permit.so OTHER password optional /lib/security/pam_permit.so OTHER session optional /lib/security/pam_permit.so Prepišite tudi datoteko /lib/security/pam_permit.so v vaš korenski datotečni sistem. Ta knjižnica zasede samo 8 kB, tako da predstavlja minimalne dodatne prostorske zahteve. Takšna nastavitev dovoli vsakomur popoln dostop do datotek in storitev. Če vam je iz kakršnegakoli vzroka varnost pri uporabi zagonskega diska pomembna, boste morali s trdega diska prepisati nekaj ali kar vse nastavitve za PAM v vaš korenski datotečni sistem. Pazljivo preberite dokumentacijo za PAM in prepišite vse potrebne knjižnice v imeniku /lib/security v vaš korenski datotečni sistem. Na zagonsko disketo morate dodati tudi /lib/libpam.so. Vendar to že veste, saj ste datoteki /bin/login z ukazom ldd preverili odvisnosti in to ugotovili. NSS (Name Service Switch - stikalo imenskih storitev) Če uporabljate glibc (poznan tudi kot libc6), boste morali poskrbeti tudi za imenske storitve, sicer se ne boste mogli prijaviti. Datoteka /etc/nsswitch.conf nadzira poizvedbe v zbirki podatkov za različne storitve. Če ne nameravate dostopati do omrežnih storitev (npr. poizvedbe DNS ali NIS), morate le pripraviti preprosto datoteko nsswitch.conf, ki je videti takole: passwd: files shadow: files group: files hosts: files services: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files automount: files aliases: files netgroup: files publickey: files Tako določite, da bodo vse storitve na voljo le lokalnim datotekam. Dodati boste morali še datoteko /lib/libnss_files.so.X, kjer je X enak 1 za glibc 2.0 in 2 za glibc 2.1. Ta knjižnica se bo naložila dinamično in obdelala poizvedbe datotek. Če nameravate z zagonskega diska tudi dostopati do omrežja, boste morda morali pripraviti bolj dovršeno datoteko nsswitch.conf. Za več podrobnosti si oglejte priročniško stran za nsswitch. Ne smete pozabiti na datoteko /lib/libnss_, storitev.so.1 za vsako storitev, ki jo določite. Moduli moduli Če imate modularno jedro, se morate odločiti, katere module želite naložiti ob zagonu z zagonske diskete. Če delate rezervne kopije na trak, boste tako verjetno vključili modula ftape in zftape, če imate naprave SCSI, boste verjetno dodali module z gonilniki zanje, morda pa boste dodali še module za podporo PPP ali SLIP, če želite tudi v sili dostopati do interneta. Ti moduli se običajno nahajajo v imeniku /lib/modules. Ne smete pozabiti še na ukaze insmod, rmmod in lsmod. Če želite samodejno nalaganje modulov, pa ne smejo manjkati še ukazi modprobe, depmod in swapout. Če uporabljate kerneld, ga dodajte v /etc/conf.modules. Glavna prednost uporabe modulov je, da lahko module, ki niso nujni za zagon, spravite na pomožno disketo in jih naložite, ko jih potrebujete, tako porabite manj prostora na korenski disketi. Če boste imeli opravka z veliko različnimi napravami, je ta način primernejši od gradnje obsežnega monolitnega jedra s precej vgrajenimi gonilniki. Za zagon stisnjenega datotečnega sistema ext2 morata biti podpori za pomnilniški disk in ext2 že vgrajeni v jedro. Podpora zanju v obliki modulov ni mogoča. Nekaj končnih podrobnosti Nekateri sistemski programi, npr. login, se bodo pritoževali, če datoteka /var/run/utmp in imenik /var/log ne obstajata. Zatorej naredite naslednje: mkdir -p /mnt/var/{log,run} touch /mnt/var/run/utmp Na koncu, ko ste nastavili vse potrebne knjižnice, poženite še ukaz ldconfig, ki ustrezno prikroji datoteko /etc/ld.so.cache na korenskem datotečnem sistemu. Iz te datoteke bo nalagalnik knjižnic črpal podatke, kje najti knjižnice. To lahko storite takole: ldconfig -r /mnt ldconfig ld.so.cache Ko je končno vse pripravljeno... Ko končate s pripravljanjem korenskega datotečnega sistema, ga odklopite, prepišite v datoteko in stisnite: umount /mnt dd if=NAPRAVA bs=1k | gzip -v9 > rootfs.gz Ko se ta postopek konča, boste dobili datoteko rootfs.gz. To je vaš stisnjen datotečni sistem. Preverite njegovo velikost in se prepričajte, da je dovolj kratek, da ga je mogoče spraviti na disketo; če to ni mogoče, se boste morali vrniti na enega prejšnjih podrazdelkov in zbrisati nekaj datotek. Nekaj namigov za zmanjšanje korenskega datotečnega sistema lahko najdete v razdelku &slimfast;. Izbira jedra jedro, izbira Sedaj ste verjetno že pripravili stisnjen korenski datotečni sistem. Naslednji korak bo priprava ali izbira jedra. V večini primerov bi bilo mogoče kar prepisati vaše trenutno jedro na zagonsko disketo in zagnati sistem z nje. So pa tudi primeri, ko boste želeli pripraviti posebno jedro. En razlog je velikost. Če pripravljate enovito zagonsko/korensko disketo, bo jedro ena izmed najdaljših datotek na tej disketi, tako ga boste morali skrajšati, kolikor je le mogoče. Njegovo dolžino zmanjšate, če ga prevedete z minimalnim naborom pripomočkov za podporo želenega sistema. To pomeni, da morate izpustiti vse, česar ne potrebujete. Mirno lahko izpustite podporo za omrežne kartice kot tudi podporo za diskovne pogone in za ostale naprave, ki jih ne potrebujete med poganjanjem vašega zagonskega/korenskega sistema. Kot je bilo omenjeno že prej, v jedru mora biti vključena podpora za pomnilniške diske in datotečni sistem ext2. Ko ste ugotovili, kaj bi lahko predstavljalo minimalni nabor pripomočkov za vključitev v jedro, boste morali premisliti, kaj od izpuščenega vključiti nazaj. Verjetno najobičajnejša uporaba z zagonskimi/korenskimi disketami zagnanega sistema bo pregled in obnova okvarjenega korenskega datotečnega sistema na trdem disku in za kaj takega utegnete potrebovati podporo v jedru. Na primer, če so vse vaše rezervne kopije shranjene na traku, do katerega lahko dostopate s programom Ftape, potem v primeru, da izgubite dostop do korenskega datotečnega sistema in dostop do pogonov, kamor piše Ftape, ne boste mogli obnoviti rezervnih kopij. V tem primeru boste morali znova namestiti Linux, naložiti in znova namestiti ftape in potem poskušati prebrati vsebino rezervnih kopij. Ideja je, da kakršnekoli vhodno/izhodne gonilnike ste že dodali v jedro (na trdem disku) za podporo izdelave rezervnih kopij, to isto podporo naj bi vključili tudi v jedro za zagonsko/korensko disketo. jedro, gradnja iz izvirne kode Postopek za dejansko prevajanje jedra je opisan v dokumentaciji, ki je priložena jedru. Slediti ji je dokaj lahko, iskati jo začnite v imeniku /usr/src/linux. Če imate težave pri prevajanju jedra, se najverjetneje sploh ne bi smeli ukvarjati s pripravo zagonskih/korenskih disket. Ne pozabite stisniti jedra z ukazom ``make zImage''. 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. datotečni sistem Lilo lilo.conf jedroparametri Če boste pripravili zagonsko disketo z Lilom, berite dalje, če pa boste neposredno prenesli jedro, preskočite na podrazdelek &brezlila;. 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 i-vozliščadodelitev 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 jedrodatotečni sistem Ne skrbite, če se zgoraj navedene velikosti datotek nekoliko razlikujejo od vaših. Sedaj pustite disketo v pogonu in preskočite na podrazdelek &ramdiskbeseda;. 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 rdev 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: Bit št. Opis 0-10 Odmik do začetka pomnilniškega diska v blokih velikosti 1024 zlogov (bajtov) 11-13 Neuporabljeni 14 Zastavica, ali naj se naloži pomnilniški disk 15 Zastavica, ali naj se pred nalaganjem korenskega datotečnega sistema pojavi pozivnik Č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. Č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. Č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. beseda pomnilniškega diska rdev 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. 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 &ramdiskbeseda;. Podrobnejšo razlago najdete v dokumentacijski datoteki ramdisk.txt ali na naslovu . Prenos korenskega datotečnega sistema V zadnjem koraku je potrebno prenesti še datotečni korenski sistem. Če bo korenski datotečni sistem nameščen na isto disketo kot jedro, ga prenesite z ukazom dd in izbiro , ki določi, koliko blokov je treba preskočiti: dd if=rootfs.gz of=/dev/fd0 bs=1k seek=DOLŽINA_JEDRA Če bo korenski datotečni sistem nameščen na drugo disketo, vzemite prvo disketo iz pogona, vanj vstavite drugo disketo in prenesite nanjo korenski datotečni sistem: dd if=rootfs.gz of=/dev/fd0 bs=1k Čestitke, končali ste! Preden zagonsko(i) disketo(i) pospravite za nujne primere, jo/ju vsekakor preizkusite. Če zagon z nje/njiju ne uspe, berite dalje. Odpravljanje težav ali agonija poraza Odpravljanje težav Če ste začetniki, se pripravljene zagonske diskete pogosto ne bodo hotele zagnati v prvih nekaj poskusih. Splošni pristop k pripravi korenske diskete je zbrati komponente iz obstoječega sistema ter zatem poskusiti zagnati sistem vsaj do točke, kjer se na konzoli začno prikazovati sporočila. Ko je enkrat mogoče brati sporočila, je pol bitke že za vami, ker lahko vidite, zaradi česa se pritožuje, in lahko tako odpravljate posamezne probleme, dokler sistem ne teče gladko. Če se sistem kratkomalo obesi brez obrazložitve, je ponavadi težko ugotoviti vzrok. Priporočen postopek za raziskovanje problemov, kjer sistem ne izpisuje sporočil, je naslednji: Morda se bo pojavilo sporočilo, podobno naslednjemu: Kernel panic: VFS: Unable to mount root fs on XX:YY To je splošen problem, ki mu lahko botruje samo nekaj vzrokov. Najprej preverite napravo XX:YY, če se ujema s seznamom kod naprav v datoteki /usr/src/linux/Documentation/devices.txt. Če je naprava nepravilna, verjetno niste izvršili ukaza rdev -R ali pa ste to storili na napačni sliki. Če je koda naprave pravilna, pazljivo preverite gonilnike naprav, ki so prevedeni v jedru. Prepričajte se, da so vanj vgrajeni podpora za disketne pogone, pomnilniški disk in datotečni sistem ext2. Če se pojavi precej sporočil podobnih naslednjemu: end_request: I/O error, dev 01:00 (ramdisk), sector NNN je to vhodno/izhodna napaka v gonilniku za pomnilniški disk, do katere ponavadi pride, ker jedro poskuša pisati prek meja te naprave. To pomeni, da je pomnilniški disk premajhen za celoten korenski datotečni sistem. V zagonskih sporočilih jedra z zagonske diskete poiščite vrstice, podobne naslednji: Ramdisk driver initialized : 16 ramdisks of 4096K size To velikost primerjajte z velikostjo nestisnjenega korenskega datotečnega sistema. Če so pomnilniški diski premajhni, jih povečajte. Preverite, ali so na korenski disketi dejansko tisti imeniki, ki bi morali biti tam. Ni se težko zmotiti in jih prepisovati na napačni stopnji, tako da na koncu na korenski disketi dobite nekaj podobnega /rootdisk/bin namesto /bin. Prepričajte se, da obstaja datoteka /lib/libc.so z enako povezavo, kot se pojavi v imeniku /lib na trdem disku. Preverite, da vse simbolične povezave v imeniku /dev obstajajo tudi v korenskem datotečnem sistemu diskete. To velja za povezave do naprav, ki ste jih vključili na korensko disketo. V precej primerih so še posebej potrebne povezave na /dev/console. imenik z napravami Poglejte, ali ste dodali datoteke /dev/tty1, /dev/null, /dev/zero, /dev/mem, /dev/ram in /dev/kmem. Preverite nastavitve jedra. Podpora za vsa sredstva, ki so potrebna do prijave, mora biti vgrajena v jedro, ne v modulih! To velja zlasti za podporo pomnilniškim diskom in datotečnemu sistemu ext2. Prepričajte se, da so nastavitve za korensko napravo jedra ter pomnilniški disk pravilne. Ko ste obdelali te splošne vidike, je treba preveriti še nekaj določenih datotek: Prepričajte se, da je datoteka init vključena kot /sbin/init ali /bin/init. Prepričajte se, da je izvršljiva. Poženite ukaz ldd init da ugotovite, od katerih knjižnic je init odvisen. Ponavadi je to samo knjižnica libc.so, vendar vseeno raje preverite. Prepričajte se, da ste vključili potrebne knjižnice in nalagalnike. Prepričajte se, da imate pravi nalagalnik za knjižnice -- ld.so za a.out oz. ld-linux.so za ELF. nalagalniki V datoteki /etc/inittab na zagonski disketi preverite klice programa getty (ali kakšne zamenjave zanj, npr. agetty, mgetty ali getty_ps). Dvakrat jih preverite v primerjavi z inittabom na trdem disku. Poglejte priročniško stran uporabljenega programa, da se prepričate, ali imajo smisel. Datoteka inittab verjetno predstavlja najzapletenejši del, ker sta njena skladnja in vsebina odvisni od programa init in od narave sistema. Edini način, da se je lotite, je branje priročniških strani za init in inittab ter da do potankosti ugotovite, kaj vaš sistem počne ob zagonu. Preverite, ali /etc/inittab vsebuje vnos za inicializacijo sistema. Ta vnos bi moral vsebovati ukaz za izvršitev skripta za to nalogo in ta skript vsekakor mora obstajati. Podobno, kot ste storili pri ukazu init, poženite ldd še na ukazu getty, da vidite, katere knjižnice potrebuje in da preverite, ali so te knjižnice in nalagalniki vključeni v korenski datotečni sistem. Prepričajte se, da ne manjka lupinski program (npr. bash ali ash), ki je sposoben izvesti vse zagonske skripte rc. lupine Če imate na reševalni disketi datoteko /etc/ld.so.cache, jo naredite znova. Če se init zažene, vendar dobite sporočilo, podobno naslednjemu: Id xxx respawning too fast: disabled for 5 minutes je to sporočila procesa init, ki ponavadi pomeni, da se program getty ali login prekine takoj po zagonu. Preglejte njuni izvršilni datoteki in knjižnice, od katerih sta odvisna. Prepričajte se, da sta v datoteki /etc/inittab klicana pravilno. Če dobite čudna sporočila od programa getty, lahko to pomeni, da je obrazec za njegovo izvajanje v datoteki /etc/inittab napačen. Če dobite vnosnik za prijavo in vnesete veljavno uporabniško ime, sistem pa vas takoj spet vpraša po uporabniškem imenu, je lahko problem s PAM ali NSS. Oglejte si podrazdelek &pamnss;. Lahko pa uporabljate senčna gesla (angl. shadow) in ste pozabili prepisati /etc/shadow na korensko disketo. Če poskusite pognati neko izvršljivo datoteko na reševalni disketi, npr. df, in dobite sporočilo v slogu "df: not found", preverite dvoje: (1.) ali je imenik z izvršljivimi datotekami naveden v spremenljivki PATH, in (2.) ali imate knjižnice (in nalagalnike), ki jih program potrebuje. Zmanjšanje velikosti korenskega datotečnega sistema Eden glavnih problemov pri pripravi zagonskih disket je spraviti vse na eno ali dve disketi. Tudi če datoteke stisnemo, je to lahko zelo težko, saj velikosti komponent Linuxa med razvojem ves čas naraščajo. V nadaljevanju je predstavljenih nekaj nasvetov, kako spraviti vse na datotečni sistem omejene velikosti. Povečanje gostote diskete Privzeto so diskete formatirane na velikost 1440 kB, mogoče pa jih je sformatirati tudi na večjo gostoto. Od Biosa pa je odvisno, ali je tudi mogoč zagon s takšnih disket. Ukaz fdformat formatira diskete na naslednje velikosti: 1600 kB, 1680 kB, 1722 kB, 1743 kB, 1760 kB, 1840 kB in 1920 kB. Oglejte si priročniško stran za fdformat in /usr/src/linux/Documentation/devices.txt. Toda katere gostote/geometrije disket bo računalnik podpiral? Tukaj podajamo nekaj odgovorov Alaina Knaffa, avtorja programa fdutils.
To je bolj stvar Biosa kot fizičnega formata disket. Če se BIOS odloči, da bo vsak sektor nad 18. slab, potem se ne da dosti storiti. Zares se zdi, da je kratko vzvratno sledenje delovanja Biosa in poskušanje z napakami edini način, kako to ugotoviti. Kakorkoli že, če BIOS podpira diske ED (extra density: 36 sektorjev/sled in 2,88 MB), je možnost, da bodo podprte tudi diskete, formatirane na 1722 kB. Pričakujemo lahko, da s superformatiranih disket z več kot 21 sektorji na sled verjetno ni mogoče zagnati sistema. Zares se izkaže, da uporabljajo sektorje nestandardnih velikosti (1024 zlogov na sektor namesto 512) in da verjetno niso primerne za zagonske diskete. Moralo pa bi biti mogoče narediti program za zapis zagonskega sektorja, ki bi to obšel. Če se prav spominjam, ima nekaj takšnega Dosov pripomoček 2m, kot ga ima tudi XDF za OS/2. Nekateri Biosi sami po sebi privzamejo, da so vsi sektorji nad 18. okvarjeni. Ker 1722 KB diskete uporabljajo številke sektorjev vse do 21, te diskete ne bodo mogle biti zagonske. Najboljši način za preizkus bi bil formatirati preizkusno disketo za DOS ali Syslinus in jo narediti za zagonsko. Če uporabljate LILO, ne uporabite izbire linear, sicer bo LILO predpostavil, da ima disketa privzetih 18 sektorjev/sled, in zagon z diskete ne bo uspel, četudi bi BIOS to podpiral.
Nadomestitev splošnih pripomočkov s paketom BusyBox Večino prostora na korenskem datotečnem sistemu zasedajo splošni GNU sistemski pripomočki kot cat, chmod, cp, dd, df itd. Naloga projekta BusyBox je izdelati čim krajše nadomestke za te splošne sistemske pripomočke. BusyBox je ena monolitna izvršljiva datoteka, /bin/busybox, dolžine pribl. 150 KB, ki izvaja naloge teh pripomočkov. Na to datoteko naredite simbolne povezave z imeni teh pripomočkov. BusyBox ugotovi, na kakšen način je bil poklican in temu primerno izvede ustrezno funkcijo. Vsebuje celo osnovno lupino. BusyBox je že preveden na voljo v paketih za številne distribucije, izvirna koda pa je na voljo na domači strani BusyBoxa. Uporaba druge lupine Nekatere priljubljene lupine za Linux, npr. bash ali tcsh, so obsežne in zahtevajo precej knjižnic. Če ne uporabljate lupine BusyBoxa, boste kljub temu še vedno primorani zamenjati lupino. Seznam nekaterih nadomestnih lupin obsega ash, lsh, kiss in smash, ki zasedejo precej manj prostora in zahtevajo malo (ali celo nobenih) knjižnic. Večino teh nadomestnih lupin dobite na naslovu http://www.ibiblio.org/pub/Linux/system/shells/ . Prepričajte se, da je z lupino, ki jo boste izbrali, mogoče pognati vse zagonske skripte na zagonski disketi. lupine Oskubljenje knjižnic in prevedenih programov Precej knjižnic in prevedenih programov se razširja s podatki za razhroščevanje. Če je temu tako, izvedba ukaza file na teh datotekah vrne ``not stripped''. knjižnice Ko prepisujete prevedene programe na korenski datotečni sistem, je pametno izvesti: objcopy --strip-all OD DO knjižnicestripping strip objcopy Ko prepisujete knjižnice, se prepričajte, da namesto uporabite izbiro . Prestavitev datotek na pomožno disketo Če kakšnih programov ne potrebujete takoj ob zagonu ali prijavi, jih lahko prestavite na pomožno disketo. Za več podrobnosti si oglejte podrazdelek &pomozni;. details. Razmislite lahko tudi o preselitvi modulov na pomožno disketo. pomožna disketa
Razno Korenski datotečni sistemi brez pomnilniškega diska pomnilniški disk Razdelek &buildroot; nas nauči izdelati stisnjen korenski datotečni sistem, ki se ob zagonu sistema naloži v pomnilniški disk. Ker ima ta način veliko prednosti, se ga največkrat uporablja. Vendar si pri nekaterih sistemih z malo pomnilnika ne moremo privoščiti pomnilnika RAM za kaj takšnega, zato moramo v takšnih primerih korenski datotečni sistem pritrditi neposredno na disketo. Takšne datotečne sisteme je pravzaprav lažje izdelati kot stisnjene, ker jih lahko naredimo kar na disketi namesto na drugih napravah in jih ni treba stiskati. Opisali bomo tudi ta postopek, saj se razlikuje od prej opisanega. Če se odločite za to možnost, ne pozabite, da boste imeli na voljo precej manj prostora. Izračunajte, koliko prostora boste imeli na voljo za korenske datoteke. Če pripravljate enovito zagonsko/korensko disketo, boste morali nanjo spraviti vse bloke jedra in še vse bloke korenskega datotečnega sistema. Z ukazom mke2fs izdelajte korenski datotečni sistem ustrezne velikosti. Naselite datotečni sistem, kot je opisano v prejšnjih razdelkih. Ko končate, odklopite datotečni sistem in ga prenesite v datoteko, vendar ga ne stiskajte. Po prej opisanem postopku prenesite jedro na disketo. Ko računate vrednost besede pomnilniškega diska, nastavite bit št. 14 na 0, tako označite, naj se korenski datotečni sistem ne naloži v pomnilniški disk. Poženite ukaz rdev, kot je opisano. beseda pomnilniškega diska rdev Prenesite korenski datotečni sistem enako kot prej. Uberete lahko kar nekaj bližnjic. Če pripravljate zagon z dveh disket, lahko korenski datotečni sistem pripravite kar neposredno na drugi disketi in vam ga tako ni treba prenašati v datoteko na trdem disku in nazaj. Če pripravljate enovito zagonsko/korensko disketo in nameravate uporabiti LILO, lahko na celotni disketi pripravite enovit datotečni sistem, ki vsebuje jedro, datoteke za LILO, in datoteke korenskega datotečnega sistema. Na koncu morate le še pognati LILO. Priprava pomožne diskete pomožna disketa Priprava pomožne diskete je sorazmerno lahka. Na formatirani disketi naredite datotečni sistem in nanjo prepišite ustrezne datoteke. Da jo boste lahko uporabljali, jo ročno pritrdite po zagonu z zagonske diskete. Kot smo že omenili, je pomožna disketa lahko priklopljena na imenik /usr. V tem primeru lahko izvršilne datoteke postavimo v imenik /bin na pomožni disketi, tako jih bo mogoče doseči, če spremenljivko PATH nastavite na /usr/bin. Dodatne knjižnice, ki jih te datoteke potrebujejo, postavite v imenik /lib na pomožni disketi. Ob načrtovanju pomožne diskete je treba pomisliti na kar nekaj pomembnih stvari: Ne nameščajte pomembnih sistemskih programov in knjižnic na pomožno disketo, ker le te ne bo mogoče pritrditi, dokler ne bo sistem zagnan. Hkrati ni mogoče dostopati do diskete in tračne enote. To pomeni, da če imate tračno enoto, z njo ne boste mogli delati, dokler je pomožna disketa priklopljena. Dostop do datotek na pomožni disketi bo počasen. V dodatku &vsebinapomozna; je prikazana vsebina vzorčne pomožne diskete, po kateri naj bi se zgledovali. Sledi nekaj napotkov za programe, ki bi utegnili biti koristni: programi za delo z diski (format, fdisk) in datotečnimi sistemi (mke2fs, fsck, debugfs, isofs.o), kratek urejevalnik (elvis, jove), pripmočki za stiskanje in arhiviranje (gzip, bzip, tar, cpio, afio), za delo s tračnimi enotami (mt, ftmt, tob, taper), komunikacijo (ppp.o, slip.o, minicom) in pripomočke za delo z napravami (setserial, mknod). Kako to delajo profesionalci Morda ste opazili, da so zagonske diskete, priložene nekaterim pomembnejšim distribucijam Linuxa, npr. Slackware, RedHat ali Debian, videti bolj dodelane od zagonskih disket, ki jih pripravimo po navodilih iz tega spisa. Pripravljene so po enakih postopkih, kot so opisani v spisu, vendar je uporabljenih še nekaj trikov, ker je postavljenih še nekaj dodatnih zahtev. Te zagonske diskete morajo delovati s širokim spektrom strojne opreme, tako morajo imeti možnost, da uporabnik vnese kakšne potrebne podatke, obenem morajo znati naložiti raznorazne gonilnike naprav. Biti morajo tudi pripravljene na delovanje s precej različnimi možnostmi namestitve, z različnimi stopnjami samostojnega delovanja. In končno, zagonske diskete distribucij so ponavadi načrtovane za namestitev in reševanje. začetni pomnilniški disk (initrd) Nekatere zagonske diskete uporabljajo lastnost initrd (začetni pomnilniški disk, angl. initial ramdisk). Ta lastnost se je pojavila nekje z jedrom 2.0.x in dovoljuje jedru zagon v dveh korakih. Ko se jedro prvič zažene, z zagonske diskete naloži sliko začetnega pomnilniškega diska. Ta začetni pomnilniški disk je korenski datotečni sistem, ki vsebuje program, ki se izvrši, še preden se naloži resnični korenski datotečni sistem. Ta program ponavadi pregleda sistem in/ali pozove uporabnika, naj izbere med različnimi možnostmi zagona, npr. s katere naprave naj se naloži resnična korenska disketa. Ponavadi naloži dodatne module, ki niso vgrajeni v jedro. Ko ta program preneha z delovanjem, jedro naloži resnično sliko korenskega datotečnega sistema in zagon se normalno nadaljuje. Za nadaljnje informacije o začetnem pomnilniškem disku si preberite datoteki /usr/src/linux/Documentation/initrd.txt in ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz . V nadaljevanju si bomo na hitro ogledali, kako naj bi delovale zagonske diskete pri vsaki distribuciji. Do ugotovitev smo prišli s pregledom vsebine datotečnega sistema in/ali izvirne kode. Ne jamčimo, da so ti podatki popolnoma resnični ali da se od navedenih različic dalje niso spremenili. Slackware (3.1) uporablja nezapleten zagon z Lilom, podoben opisanemu v podrazdelku &prenoszlilom;. Ob zagonu se izpiše sporočilo “Welcome to the Slackware Linux bootkernel disk!”, pri čemer je bila uporabljena Lilova izbira message. Tako uporabnik dobi navodilo, naj vnese zagonski parameter, če je to potrebno. Po zagonu se z druge diskete naloži korenski datotečni sistem. Uporabnik zažene skript setup, ki prične namestitev. Namesto uporabe modularnega jedra imamo na voljo več različnih jeder in uporabnik izbere eno, ki ustreza njegovim zahtevam glede strojne opreme. RedHat (4.0) se ravno tako poslužuje zagona z Lilom. Najprej se naloži stisnjen pomnilniški disk na prvi disketi, ki požene prirejen program init. Ta program poizve po gonilnikih in nato po potrebi naloži dodatne datoteke z dopolnilne diskete. Debian (1.3) ima verjetno najbolj dodelan sistem namestitvenih disket. Uporablja nalagalnik SYSLINUX, ki najprej uredi vse potrebno glede raznih možnosti nalaganja, nato se uporabi slika initrd, ki uporabnika popelje skozi namestitev. Kaže, da sta uporabljena tako prirejena program init kot prirejena lupina. Izdelava zagonskih plošč CD Ta razdelek je prispeval Rizwan Mohammed Darwe (rizwan AT clovertechnologies dot com) Ta razdelek predpostavlja, da vam je poznan postopek izdelave plošč CD na Linuxu. Predstavljajte si to kot hiter dodatek, ki omogoča zagon s plošče CD, ki jo boste zapekli. Več o pečenju plošč CD najdete v spisu CD-Writing-HOWTO, ki ga lahko prevedenega najdete na Lugosovih straneh. Kaj je El Torito? Pri arhitekturah x86 je precej Biosov pričelo podpirati zagonske plošče CD. Popravki za mkisofs temeljijo na standardu "El Torito". Preprosto rečeno, El Torito je specifikacija, ki določa, kako naj bo plošča CD formatirana, da bo mogoč neposreden zagon z nje. Specifikacija El Torito določa, da naj bi bil zagon mogoč s katerimkoli pogonom CD-ROM (SCSI ali EIDE), vse dokler BIOS podpira El Torito. Zaenkrat je bilo to preizkušeno samo s pogoni EIDE, ker se zdi, da še noben izmed do sedaj preizkušenih krmilnikov SCSI ne podpira El Torita. V vsakem primeru, ga mora najprej podpirati matična plošča. Kako to ugotoviti? Tiste, ki to podpirajo, vam omogočajo zagon s trdega diska, diskete, omrežja ali plošče CD. Kako deluje? Standard El Torito predpisuje, da naj se prek Biosovih klicev pogon za CD-ROM obravnava kot običajen disketni pogon. Tako lahko katerokoli sliko velikosti diskete (natanko 1440 kB za diskete 1,44 MB) postavite nekam na datotečni sistem ISO 9660. V zaglavje tega datotečnega sistema vstavite kazalec na to sliko. BIOS bo naložil to sliko in se obnašal, kot da bi zaganjal z diskete. Tako lahko sliko delujoče zagonske diskete z Lilom (npr.) uporabljamo brez sprememb. Grobo povedano, prvih 1,44 (ali 2,88, če je podprto) MB na plošči CD vsebuje sliko diskete, ki ste jo pripravili. To sliko BIOS obravnava kot disketo in zažene sistem z nje. Posledično se med zagonom s te navidezne diskete lahko zgodi, da siceršnji pogon A: (/dev/fd0) morda ne bo dosegljiv, vendar lahko poskusite z /dev/fd1). Kako jo pripraviti k delovanju Najprej izdelajte datoteko, recimo "boot.img", ki mora biti natančna slika zagonske diskete (1,44 MB), ki jo želite zagnati s plošče CD. To vam naredi spodnji ukaz dd if=/dev/fd0 of=boot.img bs=10k count=144 ob predpostavki, da je disketa v pogonu A:. Postavite to sliko nekam v imeniško strukturo, ki bo predstavljala izvirnik datotečnega sistema ISO 9660. Po nepisanem pravilu naj bi vse z zagonom povezane datoteke postavili v svoj imenik (npr. "boot/ na vrhu hierarhije datotečnega sistema ISO 9660). Pazite na past. Začetni pomnilniški disk mora zagonska disketa naložiti z Lilom, ne z gonilnikom za pomnilniške diske v jedru! Ko se namreč jedro zažene, ne "ve" za ukano, da Bios na plošči CD posnema disketo, zato nalaganje ne bo uspelo. LILO bo naložil začetni pomnilniški disk z uporabo Biosovih klicev, tako bo emulacija delovala, kot je bilo zamišljeno. Specifikacija El Torito zahteva, da se izdela tudi "zagonski katalog". To je datoteka dolžine 2048 zlogov, ki nima nobenega pomena, razen da je obvezna. Ustrezen popravek avtorjev programa mkisofs omogoča, da se zagonski katalog izdela samodejno, vendar morate določiti, kam v datotečnem sistemu ga postaviti. Ponavadi ga postavimo kar v isti imenik kot zagonsko sliko in ime boot.catalog se zdi kar primerno zanj. Torej, imamo zagonsko sliko v datoteki boot.img in postavili jo bomo v imenik boot/ na vrhu datotečnega sistema ISO 9660. Zagonski katalog bomo morali postaviti v isti imenik in ga poimenovati boot.catalog. Ukaz za izdelavo slike datotečnega sistema ISO 9660 v datoteki bootcd.iso bo potemtakem takšen: mkisofs -r -b boot/boot.img -c boot/boot.catalog -o bootcd.iso . Izbira določi zagonsko sliko, ki naj se uporabi (kot lahko vidite, mora biti pot relativna glede na vrh imeniške hierarhije, ki naj se pretvori v sliko ISO 9660), z izbiro pa določimo, kje je datoteka zagonskega kataloga. Izbira bo datotekam nastavila primerno lastništvo in dovolilnice (oglejte si priročniško stran za mkisofs). Pika (".") na koncu določa, da želimo preslikati trenutni imenik s podimeniki. Sedaj lahko na običajen način (npr. z ukazom cdrecord) zapečete ploščo, ki bo tako postala pripravljena za zagon. Izdelava zagonskih plošč CD za Win9x Najprej moramo zadržati zagonsko sliko izvirne plošče CD. Vendar ni mogoče kar pritrditi plošče pod Linuxom in z ukazom dd posneti prvih 1440 kB na disketo ali datoteko (npr. boot.img). Namesto tega kratkomalo zaženite sistem z izvirne plošče CD. Po zagonu s plošče CD za Win9x se znajdete v odzivniku za A:, ki je pravzaprav pomnilniški disk. Ostala vsebina plošče se nahaja na "razdelkih" D: ali Z:. Z uporabo Dosovega ukaza diskcopy prepišite sliko A: na dejansko disketo, ki se sedaj mahaja pod oznako B:. To storite s spodnjim ukazom. diskcopy A: B: Ta ukaz deluje enako kot dd. Poskusite lahko zagnati sistem s te pravkar narejene diskete, da preizkusite, ali je zagonski proces podoben tistemu na izvirni plošči CD. Nato vsebino diskete z ukazom dd preprosto prepišete v datoteko (npr. boot.img) in nadaljujete z običajnim postopkom priprave. Odgovori na pogosto zastavljena vprašanja Poskušam zagnati sistem z zagonske/korenske diskete, pa se ne zgodi nič. Kaj naj storim? Preberite razdelek &troubleshooting;. Kako delujejo zagonske diskete za Slackware, Debian oz. RedHat? Oglejte si razdelek &profiji;. Kako naj uporabim diskete z večjo gostoto (> 1440 kB)? Kako naj ugotovim, kakšne diskete (s kakšnimi gostotami) bodo delovale z mojim pogonom? Oglejte si opombe Alaina Knaffa v razdelku &slimfast;. Njegov odgovor je najbolj kompetenten od vseh poznanih. Kako lahko povečam velikost pomnilniških diskov? Verjetno bi to moralo biti bolje razloženo v spisu, do takrat pa bo odgovor napisan tu. Nikar ne poskušajte narediti tega z ukazoma rdev ali ramsize, ne glede na to, kar piše v njuni dokumentaciji. Beseda pomnilniškega diska ne določa več njegove velikosti. Zapomnite si, da so pomnilniški diski v bistvu dinamični; ko določite njegovo velikost, s tem pravzaprav ne zasežete pomnilnika, s tem samo nastavite mejo, do katere se lahko povečujejo. Tako jih lahko brez posebne zadrege nastavite na kar velike vrednosti (npr. 8 ali celo 16 MB). Pomnilnik RAM se ne porablja, dokler ga dejansko ne potrebujete. Omejitve lahko nastavite na enega izmed naslednjih načinov. S parametrom ramdisk_size=NNN v ukazni vrstici. Lahko ga vnesete ročno ali z ukazom append="ramdisk_size=NNN" v Lilu. Če uporabljate LILO, lahko to storite z vnosom v datoteki lilo.conf, npr. ramdisk=8192K. V jedru spremenite vrednost parametra CONFIG_BLK_DEV_RAM_SIZE in prevedite jedro. Kako naredim zagonsko ploščo CD? Preberite razdelek &cdejke;. Kako naredim zagonsko disketo LS-120? Ker avtor nima tovrstnega pogona, je povzel podatke Dava Cinega s projekta Linux Router Project. LS-120 je disketni pogon IDE. Kompatibilen je z običajnimi 3,5 palčnimi in novimi 120 MB disketami. Polno je podprt od jedra 2.0.31 dalje. Da lahko z njega zaženete sistem, morate imeti BIOS, ki dovoljuje, da se pogon LS-120 obravnava kot pogon 0 (medtem ko se naprave IDE običajno začnejo na 80). Če BIOS tega ne podpira, lahko kupite majhno kartico IDE FloppyMAX podjetja Promise Technologies, ki odpravi to pomanjkljivost. Zagonski nalagalnik jedra ne mara LS-120 in se obeša. Tudi diskete 2m ga ne marajo in se ne bodo hotele zagnati. Diskete kapacitete med 1,44 in 1,74 MB bodo delovale brez problemov. SYSLINUX deluje s 120 MB disketami od različice 1.32. Če ne potrebujete kompatibilnosti z MS_DOS, namesto uporabe SYSLINUXA raje razdelite disketo in uporabite datotečni sistem ext2 ali minix. LILO lepo deluje s 120 MB disketami. Tukaj je vzorčna datoteka lilo.conf: boot=/dev/hda compact disk=/dev/hda bios=0 install=/floppy/boot.b map=/floppy/map image=/floppy/linux label=Linux append="load_ramdisk=1" initrd=/floppy/root.bin ramdisk=8192 V vrstici "disk=/dev/hda bios=0" se skriva trik, kako zagnati z diskete LS-120. Kako lahko naredim zagonsko disketo z xyz gonilnikom? Najlažji način je, da z najbližjega zrcalnega mesta snamete Slackwarovo jedro. Ta jedra so generična jedra, ki poskušajo zajeti gonilnike za čimvečje število naprav. Če imate torej krmilnik SCSI ali IDE, je veliko možnosti, da je gonilnik zanj že vključen v Slackwarovo jedro. Pojdite v imenik a1 in izberite jedro s podporo IDE ali SCSI, odvisno od vrste krmilnika, ki ga imate. Oglejte si datoteko xxxxkern.cfg za izbrano jedro, da ugotovite, kateri gonilniki so vključeni v to jedro. Če na tem seznamu najdete napravo, katere gonilnik potrebujete, potem bi s tem jedrom morali uspeti zagnati vaš računalnik. Prenesite si datoteko xxxxkern.tgz in jo prepišite na zagonsko disketo, kot je to opisano v prejšnjih razdelkih o izdelavi zagonskih disket. gonilniki naprav Zatem morate z ukazom rdev zImage preveriti korensko napravo v jedru. Če ta ni enaka vaši želeni korenski napravi, jo spremenite z ukazom rdev. Da boste lahko uporabljali korensko disketo, boste morali vtipkati ukaz rdev zImage /dev/fd0. Nastavitev Slackwarove korenske diskete presega namen tega spisa, zato vam predlagamo, da si ogledate Linux Install Guide (vodnik po namestitvi Linuxa) ali si priskrbite distribucijo Slackware. Oglejte si tudi razdelek ``Viri in povezave'' pri koncu tega spisa. Kako posodobim korenske diskete z novimi datotekami? korenski datotečni sistemi posodobitev Najpreprosteje je prepisati datotečni sistem korenske diskete nazaj na NAPRAVO, ki ste jo uporabljali že v podrazdelku &korenskids;. Nato datotečni sistem priklopite in opravite želene spremembe. Zapomniti si morate, kje se je vaš korenski datotečni sistem pričel in koliko blokov je zasedel: dd if=/dev/fd0 bs=1k skip=ZAČETEK_K_D_S count=ŠT_BLOKOV | gunzip > NAPRAVA mount -t ext2 NAPRAVA /mnt Ko ste izvedli vse želene spremembe, nadaljujte, kot je opisano v podrazdelku &wrapping;, in korenski datotečni sistem prenesite nazaj na disketo. Jedra vam ni potrebno prenašati, prav tako vam ni potrebno izračunati nove besede pomnilniškega diska, če se začetni položaj novega datotečnega sistema ni spremenil. Kako naj odstranim LILO, da bom za zagon lahko ponovno uporabil DOS? Master Boot Record (MBR) LILOodstranitev Ta tema sicer nima neposredne zveze z zagonskimi disketami, vendar se vprašanje pojavi pogosto. Znotraj Linuxa lahko poženete: /sbin/lilo -u Z ukazom dd lahko tudi na zagonski sektor prepišete rezervno kopijo, ki jo je shranil LILO. Če želite to storiti, si oglejte Lilovo dokumentacijo. Znotraj Dosa ali Windows lahko poženete Dosov ukaz: FDISK /MBR MBR pomeni Master Boot Record (glavni zagonski zapis). Ta ukaz nadomesti zagonski zapis s čistim Dosovim, ne da bi se pri tem spremenila razdelitvena tabela diska. Nekateri pikolovci se sicer ne strinjajo s to metodo, vendar jo priporoča celo Werner Almesberger, avtor Lila. Je preprosto in deluje. Kako lahko zaženem, če sem izgubil jedro in zagonsko disketo? Če nimate pri roki zagonske diskete, bo verjetno še najlažje dobiti Slackwarovo jedro, ki podpira vaš diskovni krmilnik (IDE ali SCSI), kot je opisano pri odgovoru na vprašanje ``Kako lahko naredim zagonsko disketo z xyz gonilnikom?''. Tako lahko zaženete računalnik s tem jedrom in zakrpate sistem. Takšno jedro morebiti ne bo imelo nastavljene korenske naprave na vrsto diska in razdelek, ki ga želite. Npr. Slackwarovo generično jedro za SCSI utegne imeti korensko napravo nastavljeno na /dev/sda2, medtem ko je avtorjev korenski razdelek /dev/sda8. V takšnem primeru je potrebno spremeniti korensko napravo v jedru. V jedru lahko spremenite korensko napravo in nastavitve pomnilniškega diska tudi, če imate samo jedro in kakšen drug operacijski sistem, npr. DOS. Ukaz rdev spremeni nastavitve jedra tako, da spremeni vrednosti zlogov na točno določenih mestih v datoteki jedra, to pa lahko storite tudi sami, če le imate na kateremkoli delujočem operacijskem sistemu na voljo urejevalnik v šestnajstiškem številskem sistemu, npr. Norton Utilities Disk Editor za DOS. Tako morate v datoteki jedra preveriti in po potrebi spremeniti vrednosti vrednosti zlogov na naslednjih mestih: beseda pomnilniškega diska rdev HEX DEC OPIS 0x01F8 504 Nižje uteženi zlog besede pomnilniškega diska 0x01F9 505 Višje uteženi zlog besede pomnilniškega diska 0x01FC 508 Nižja številka korenske naprave - gl. spodaj 0X01FD 509 Višja številka korenske naprave - gl. spodaj Struktura besede pomnilniškega diska je bila opisana v podrazdelku &ramdiskbeseda;. Višja in nižja številka naprave mora biti nastavljena na napravo, na katero nameravate pritrditi korenski datotečni sistem. Nekatere uporabne vrednosti so: NAPRAVA VIŠJA NIŽJA /dev/fd0 2 0 prvi disketni pogon /dev/hda1 3 1 razdelek 1 na prvem pogonu IDE /dev/sda1 8 1 razdelek 1 na prvem pogonu SCSI /dev/sda8 8 8 razdelek 8 na prvem pogonu SCSI Ko ste te vrednosti ustrezno nastavili, zapišite datoteko na disketo bodisi s pripomočkom, kot je Norton Utilities Disk Editor, bodisi s programom rawrite.exe, ki je del vsake distribucije Linuxa. To je dosovski program, ki namesto, da bi pisal v datotečni sistem, zapiše datoteko na ``surovo'' disketo, začenši z zagonskim sektorjem. Če jo zapisujete z Norton Utilities, jo morate zapisati na fizično disketo s pričetkom na začetku diskete. Kako naredim dodatne kopije zagonskih/korenskih disket? Ker se lahko na magnetni plasti diskete s časom pojavijo napake, bi morali hraniti več izvodov reševalne diskete za vsak primer, če prvotna postane neberljiva. Najpreprostejša izdelava kopije katerekoli diskete, vključno z zagonskimi in pomožnimi diskatami, je z ukazom dd, ki prepiše vsebino prvotne diskete na trdi disk, nato pa z istim ukazom to prepišemo na novo disketo. Disket vam ni potrebno pritrjevati (in naj jih tudi ne bi), saj ukaz dd uporablja surov (neposreden, brez datotečnega sistema) vmesnik do naprav. Za prepis prvotne diskete vnesite ukaz: dd if= kjer count bo dd prepisal celotno disketo (tudi 2880 blokov pri visoki gostoti) Da prepišete nastalo sliko diskete na novo disketo, vstavite disketo v pogon in vtipkajte obraten ukaz: dd if= Pri tem smo predpostavili, da imate samo en disketni pogon. Če imate dva pogona iste vrste, lahko neposredno prepišete disketo z ukazom dd if=/dev/fd0 of=/dev/fd1 Kako lahko zaženem sistem brez vsakokratnega tipkanja “ahaxxxx=nn,nn,nn”? jedroparametri Kjer samozaznava diska ni mogoča, je jedru potrebno podati niz z ustreznimi parametri, kot npr. aha152x=0x340,11,3,1 Ta niz s parametri se z uporabo Lila lahko poda na več načinov: Z vnosom v ukazni vrstici ob vsakokratnem zagonu sistema z Lilom. Kakorkoli že, to je dolgočasno. Z uporabo Lilove ključne besede lock, s katero lahko podano ukazno vrstico shranimo kot privzeto in jo bo LILO uporabil ob vsakem nadaljnjem zagonu. Z vrstico append= v Lilovi nastavitveni datoteki. Niz parametrov mora biti med narekovajema. Primer ukazne vrstice za zgornji niz parametrov bi se glasil zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock Na ta način bi podali niz parametrov, v jedru nastavili korensko napravo na /dev/sda1 in shranili celotno ukazno vrstico za uporabo ob vseh nadaljnjih zagonih. Primer stavka APPEND je APPEND = “aha152x=0x340,11,3,1” Upoštevajte, da niz parametrov ne sme biti med narekovajema, kadar ga kličemo z ukazne vrstice, ob klicu s stavkom APPEND pa mora stati med narekovajema. Ne pozabite, da mora jedro vsebovati gonilnik za vrsto diska, ki ga želimo doseči z nizom parametrov. Če gonilnika ni, potem nič ne posluša niza parametrov in boste morali znova prevesti jedro, da bo vsebovalo zahtevani gonilnik. Glede podrobnosti o prevajanju jedra pojdite v imenik /usr/src/linux in preberite datoteko README. Preberite še spisa Linux FAQ in Installation HOWTO (oba sta prevedena v slovenščino). Lahko pa si tudi omislite generično jedro za ustrezen krmilnik diska in ga namestite. Bralcu močno priporočamo, da še pred poskusi z namestitvijo Lila prebere Lilovo dokumentacijo. Neprevidna uporaba stavka BOOT lahko poškoduje razdelke diska. Ob zagonu se mi izpiše napaka “A: cannot execute B”. Zakaj? vprogramirane poti Obstaja precej primerov, kjer so imena programov že vprogramirana v različnih pripomočkih. Do tega sicer ne prihaja povsod, da se pa razložiti, zakaj nekateri programi v sistemu očitno ne najdejo izvršilne datoteke, čeprav lahko sami vidite, da obstaja. Ali ima program vprogramirane poti do drugih programov, lahko ugotovite z ukazom strings, čigar izhod prek cevi preusmerite na grep. Znana primera vprogramiranih imen sta: shutdown ima v nekaterih različicah vprogramiran /etc/reboot, zato se mora reboot obvezno nahajati v imeniku /etc. init je vsaj eni osebi povzročal težave, ker jedro ni moglo najti tega programa (iskalo ga je v drugem imeniku). Ta problem rešite tako, da bodisi prestavite programe v ustrezne imenike bodisi popravite nastavitvene datoteke (npr. inittab), da bodo kazale na imenike, kjer programi dejansko so. Če ste v dvomih, naj bodo programi v istih imenikih, kot so na trdem disku, ter uporabite isti datoteki inittab in /etc/rc.d, kot ju imate na trdem disku. Moje jedro ima podprte pomnilniške diske, vendar jih inicializira na 0 kB. Zakaj? Če pride do tega, se bo ob zagonu pojavilo sporočilo jedra: pomnilniški disk Ramdisk driver initialized : 16 ramdisks of 0K size Vzrok je verjetno to, da je bila ob zagonu s parametri jedra nastavljena velikost pomnilniškega diska na 0. Verjetno ste spregledali parameter v Lilovi nastavitveni datoteki: ramdisk= 0 To je bilo dodano v vzorčne Lilove nastavitvene datoteke pri nekaterih starejših distribucijah. Namen je bil "preglasiti" prejšnje nastavitve jedra. Če najdete kakšno takšno vrstico, jo kratkomalo izbrišite. Če nameravate uporabljati pomnilniške diske velikosti 0, lahko obnašanje sistema postane nepredvidljivo in se lahko pojavijo sporočila "kernel panic". Viri in povezave Kadar se odločite pobrati kakšen paket, vedno izberite najnovejšo različico, razen če imate utemeljen razlog za kakšno starejšo. Že narejene zagonske diskete Naštetih je nekaj mest z zagonskimi disketami distribucij. Ker so ti strežniki zelo obremenjeni, vas naprošamo, da raje poiščete njihove zrcalne strežnike. Slackwarove zagonske diskete, korenske diskete in zrcalni strežniki Redhatove zagonske diskete in Redhatovi zrcalni strežniki Debianove zagonske diskete in Debianovi zrcalni strežniki Mandrakov strežnik Poleg zagonskih disket distribucij so na voljo tudi naslednje slike reševalnih disket. Če ni navedeno drugače, so na voljo v imeniku http://www.ibiblio.org/pub/Linux/system/recovery/!INDEX.html RIP je zagonsko/reševalni sistem, na voljo v več različicah: takšna, ki jo je mogoče spraviti na 1,44 MB disketo in takšna, ki jo je mogoče spraviti na ploščo CD. Vsebuje obsežno podporo za delo z datotekami in precej pripomočkov za vzdrževanje diska ter reševanje. Podpira datotečne sisteme ext2, ext3, iso9660, msdos (FAT), ntfs, reiserfs, ufs in vfat. Dobite ga lahko na naslovu http://www.tux.org/pub/people/kent-robotti/looplinux/rip/index.html. Tomsrtbt (avtor Tom Oehser) je enovita zagonsko/korenska disketa, temelječa na jedru 2.0, z obsežnim naborom podpornih programov. Podpira IDE, SCSI, tračne enote, omrežne kartice, PCMCIA in še marsikaj. Priloženih je pribl. 100 pomožnih programov za popravljanje in obnavljanje diskov. Priloženi so tudi skripti za razgradnjo in obnovo slik disket, tako je po potrebi mogoče dodati nove programe. Rescue02 (avtor John Comyns) je na jedru 1.3.84 temelječa reševalna disketa s podporo za IDE, Adaptec 1542 in NCR53C7,8xx. Uporabljajo se izvršilne datoteke v obliki ELF, vendar ima dovolj ukazov, da jo je mogoče uporabljati s katerimkoli sistemom. Za vse preostale kartice SCSI so na voljo moduli, ki se lahko naložijo po zagonu. Na sistemih s 4 MB pomnilnika RAM verjetno ne bo delovalo, ker pomnilniški disk porabi 3 MB. Resque_disk-2.0.22 (avtor Sergej Viznjuk) je na jedru 2.0.22 temelječa zagonska/korenska disketa s podporo za IDE, več različnih krmilnikov SCSI in ELF/a.out. Vključenih je tudi precej modulov in koristnih pripomočkov za popravljanje in obnavljanje trdih diskov. Slike Cramdisk, ki temeljijo na jedru 2.0.33, so na voljo za sisteme s 4 MB in 8 MB pomnilnika RAM. Vključena je podpora za emulacijo matematičnega koprocesorja, omrežje (PPP in klicni skripti, NE2000, 3C509) in za pogon ZIP na vzporednih vratih. S temi disketami je mogoče zagnati tudi računalnike s procesorjem 386 in 4 MB pomnilnika RAM. Dodana je tudi podpora datotečnemu sistemu MSDOS (FAT), tako da lahko kaj naložite z interneta in shranite na Dosov razdelek. Reševalni paketi Precej paketov za izdelavo reševalnih disket je na voljo na www.ibiblio.org. S temi paketi lahko določite, katere datoteke naj bodo na zagonskih disketah, program pa nato bolj ali manj avtomatizira njihovo izdelavo. Za več informacij si oglejte http://www.ibiblio.org/pub/Linux/system/recovery/!INDEX.html. Pazljivo poglejte datume nastanka datotek. Nekateri paketi že več let niso bili posodobljeni in ne bodo podpirali izdelave stisnjega korenskega datotečnega sistema, ki naj se naloži v pomnilniški disk. Kolikor nam je znano, je v tem trenutku Yard edini paket, ki to zna. LILO -- nalagalnik Linuxa Avtor Lila je Werner Almesberger. Odličen zagonski nalagalnik, v dokumentaciji so informacije o vsebini zagonskega sektorja in o začetnih stopnjah zagonskega procesa. Dobite ga lahko na strežniku FTP ftp://tsx-11.mit.edu/pub/linux/packages/lilo/. Na voljo je tudi na Metalabu in zrcalnih strežnikih. Uporaba pomnilniškega diska pomnilniški disk Odličen opis delovanja pomnilniških diskov lahko najdete v dokumentaciji, ki je priložena Linuxovemu jedru. Oglejte si datoteko /usr/src/linux/Documentation/ramdisk.txt. Avtor je Paul Gortmaker, ne manjka pa niti razdelek o izdelavi stisnjenega pomnilniškega diska. Proces zagona pri Linuxu proces zagona Za več podrobnosti o procesu zagona Linuxa je podanih nekaj kazalcev: V delu Linux System Administrators' Guide (Vodnik po sistemskem upravljanju Linuxa) se nahaja tudi razdelek o zagonu. V spisu LILO ``Technical overview'' (LILO, ``tehnični pregled'') najdete nesporno tehnični, nizkonivojski opis procesa zaganjanja, vse do točke, ko se požene jedro. Izvirna koda je temeljni vodnik. Omenili bomo nekaj datotek, ki so povezane z zagonskim procesom. Če imate izvirno kodo Linuxovega jedra, lahko te datoteke najdete v imeniku /usr/src/linux oz. njegovih podimenikih. Šigio Jamaguči (shigio na tamacom pika com) je napisal zelo prijazen hipertekstovni brskalnik po jedru, s katerim lahko berete datoteke izvirne kode jedra. Oglejte si predvsem naslednje datoteke: arch/i386/boot/bootsect.S in setup.S Vsebujeta kodo v zbirnem jeziku za sam zagonski sektor. arch/i386/boot/compressed/misc.c Vsebuje kodo za razširjanje stisnjenega jedra. arch/i386/kernel/ Imenik z inicializacijsko kodo jedra. setup.c definira besedo pomnilniškega diska. drivers/block/rd.c Vsebuje gonilnik za pomnilniški disk. Funkciji rd_load in rd_load_image naložita bloke z naprave v pomnilniški disk. S funkcijo identify_ramdisk_image lahko ugotovimo, kakšen datotečni sistem je bil najden in ali je stisnjen. Kode napak ob zagonu z Lilom LILOkode napak Vprašanja o teh kodah so v novičarskih skupinah Usenet zastavljana tako pogosto, da na tem mestu podani opisi kod predstavljajo neke vrste javno storitev. Ta povzetek je citiran iz dokumenta LILO User Documentation (Uporabniška dokumentacija Lila) avtorja Wernerja Almsbergerja. Ko se LILO naloži, se izpiša beseda LILO. Vsaka črka se izpiše pred ali po izvedbi določene akcije. Če se LILO na neki točki zaustavi, lahko iz do sedaj izpisanih črk poskušamo ugotoviti, kaj je narobe. Izpis Težava (nič) Noben del Lila se ni naložil. LILO bodisi ni nameščen ali pa razdelek, na katerem je najden zagonski sektor, ni aktiven. L Prva faza zagonskega nalagalnika se je naložila in pognala, vendar ni mogoče naložiti druge faze zagonskega nalagalnika. Vrsta težave je nakazana z dvoštevilčnimi kodami. (Oglejte si še razdelek ``Kode napak na disku''.) Ponavadi gre za napako na magnetni površini diska ("t.i. slabi sektorji") oz. neujemanje v geometriji (npr. napačni parametri diska). LI Prva faza zagonskega nalagalnika je uspela naložiti drugo fazo, vendar je ni uspela pognati. Vzrok je lahko ali v neujemanju geometrije ali pa prestavljanje datoteke /boot/boot.b brez naknadne posodobitve datoteke z "zemljevidom" diska. LIL Druga faza zagonskega nalagalnika se je pognala, vendar iz "zemljevida" ne more naložiti tabele z opisniki. Vzrok običajno tiči v okvari magnetne površine diska ali v neujemanju geometrije. LIL? Druga faza zagonskega nalagalnika se je naložila na napačen naslov. Običajen vzrok je neujemanje finih nastavitev geometrije ali prestavitev datoteke /boot/boot.b brez naknadne posodobitve datoteke z "zemljevidom" diska. LIL- Tabela opisnikov je nepravilna. Vzrok temu je lahko neujemanje geometrije ali prestavitev datoteke /boot/map brez naknadne posodobitve datoteke z "zemljevidom" diska. LILO Vsi deli Lila so se uspešno naložili. Če BIOS medtem, ko LILO poskuša naložiti zagonsko sliko, javi napako, se izpiše ustrezna koda napake. Razpon teh kod je med 0x00 in 0xBB. Njihovo razlago najdete v LILO User Guide (Uporabniški vodnik po Lilu). Vsebina vzorčnega korenskega datotečnega sistema korenski datotečni sistem /: drwx––x––x 2 root root 1024 Nov 1 15:39 bin drwx––x––x 2 root root 4096 Nov 1 15:39 dev drwx––x––x 3 root root 1024 Nov 1 15:39 etc drwx––x––x 4 root root 1024 Nov 1 15:39 lib drwx––x––x 5 root root 1024 Nov 1 15:39 mnt drwx––x––x 2 root root 1024 Nov 1 15:39 proc drwx––x––x 2 root root 1024 Nov 1 15:39 root drwx––x––x 2 root root 1024 Nov 1 15:39 sbin drwx––x––x 2 root root 1024 Nov 1 15:39 tmp drwx––x––x 7 root root 1024 Nov 1 15:39 usr drwx––x––x 5 root root 1024 Nov 1 15:39 var /bin: -rwx––x––x 1 root root 62660 Nov 1 15:39 ash -rwx––x––x 1 root root 9032 Nov 1 15:39 cat -rwx––x––x 1 root root 10276 Nov 1 15:39 chmod -rwx––x––x 1 root root 9592 Nov 1 15:39 chown -rwx––x––x 1 root root 23124 Nov 1 15:39 cp -rwx––x––x 1 root root 23028 Nov 1 15:39 date -rwx––x––x 1 root root 14052 Nov 1 15:39 dd -rwx––x––x 1 root root 14144 Nov 1 15:39 df -rwx––x––x 1 root root 69444 Nov 1 15:39 egrep -rwx––x––x 1 root root 395 Nov 1 15:39 false -rwx––x––x 1 root root 69444 Nov 1 15:39 fgrep -rwx––x––x 1 root root 69444 Nov 1 15:39 grep -rwx––x––x 3 root root 45436 Nov 1 15:39 gunzip -rwx––x––x 3 root root 45436 Nov 1 15:39 gzip -rwx––x––x 1 root root 8008 Nov 1 15:39 hostname -rwx––x––x 1 root root 12736 Nov 1 15:39 ln -rws––x––x 1 root root 15284 Nov 1 15:39 login -rwx––x––x 1 root root 29308 Nov 1 15:39 ls -rwx––x––x 1 root root 8268 Nov 1 15:39 mkdir -rwx––x––x 1 root root 8920 Nov 1 15:39 mknod -rwx––x––x 1 root root 24836 Nov 1 15:39 more -rws––x––x 1 root root 37640 Nov 1 15:39 mount -rwx––x––x 1 root root 12240 Nov 1 15:39 mt -rwx––x––x 1 root root 12932 Nov 1 15:39 mv -r-x––x––x 1 root root 12324 Nov 1 15:39 ps -rwx––x––x 1 root root 5388 Nov 1 15:39 pwd -rwx––x––x 1 root root 10092 Nov 1 15:39 rm lrwxrwxrwx 1 root root 3 Nov 1 15:39 sh -> ash -rwx––x––x 1 root root 25296 Nov 1 15:39 stty -rws––x––x 1 root root 12648 Nov 1 15:39 su -rwx––x––x 1 root root 4444 Nov 1 15:39 sync -rwx––x––x 1 root root 19712 Nov 1 15:39 touch -rwx––x––x 1 root root 395 Nov 1 15:39 true -rws––x––x 1 root root 19084 Nov 1 15:39 umount -rwx––x––x 1 root root 5368 Nov 1 15:39 uname -rwx––x––x 3 root root 45436 Nov 1 15:39 zcat /dev: lrwxrwxrwx 1 root root 6 Nov 1 15:39 cdrom -> cdu31a brw–rw–r–– 1 root root 15, 0 May 5 1998 cdu31a crw––––––– 1 root root 4, 0 Nov 1 15:29 console crw–rw–rw– 1 root uucp 5, 64 Sep 9 19:46 cua0 crw–rw–rw– 1 root uucp 5, 65 May 5 1998 cua1 crw–rw–rw– 1 root uucp 5, 66 May 5 1998 cua2 crw–rw–rw– 1 root uucp 5, 67 May 5 1998 cua3 brw–rw–––– 1 root floppy 2, 0 Aug 8 13:54 fd0 brw–rw–––– 1 root floppy 2, 36 Aug 8 13:54 fd0CompaQ brw–rw–––– 1 root floppy 2, 84 Aug 8 13:55 fd0D1040 brw–rw–––– 1 root floppy 2, 88 Aug 8 13:55 fd0D1120 brw–rw–––– 1 root floppy 2, 12 Aug 8 13:54 fd0D360 brw–rw–––– 1 root floppy 2, 16 Aug 8 13:54 fd0D720 brw–rw–––– 1 root floppy 2, 120 Aug 8 13:55 fd0D800 brw–rw–––– 1 root floppy 2, 32 Aug 8 13:54 fd0E2880 brw–rw–––– 1 root floppy 2, 104 Aug 8 13:55 fd0E3200 brw–rw–––– 1 root floppy 2, 108 Aug 8 13:55 fd0E3520 brw–rw–––– 1 root floppy 2, 112 Aug 8 13:55 fd0E3840 brw–rw–––– 1 root floppy 2, 28 Aug 8 13:54 fd0H1440 brw–rw–––– 1 root floppy 2, 124 Aug 8 13:55 fd0H1600 brw–rw–––– 1 root floppy 2, 44 Aug 8 13:55 fd0H1680 brw–rw–––– 1 root floppy 2, 60 Aug 8 13:55 fd0H1722 brw–rw–––– 1 root floppy 2, 76 Aug 8 13:55 fd0H1743 brw–rw–––– 1 root floppy 2, 96 Aug 8 13:55 fd0H1760 brw–rw–––– 1 root floppy 2, 116 Aug 8 13:55 fd0H1840 brw–rw–––– 1 root floppy 2, 100 Aug 8 13:55 fd0H1920 lrwxrwxrwx 1 root root 7 Nov 1 15:39 fd0H360 –> fd0D360 lrwxrwxrwx 1 root root 7 Nov 1 15:39 fd0H720 –> fd0D720 brw–rw–––– 1 root floppy 2, 52 Aug 8 13:55 fd0H820 brw–rw–––– 1 root floppy 2, 68 Aug 8 13:55 fd0H830 brw–rw–––– 1 root floppy 2, 4 Aug 8 13:54 fd0d360 brw–rw–––– 1 root floppy 2, 8 Aug 8 13:54 fd0h1200 brw–rw–––– 1 root floppy 2, 40 Aug 8 13:54 fd0h1440 brw–rw–––– 1 root floppy 2, 56 Aug 8 13:55 fd0h1476 brw–rw–––– 1 root floppy 2, 72 Aug 8 13:55 fd0h1494 brw–rw–––– 1 root floppy 2, 92 Aug 8 13:55 fd0h1600 brw–rw–––– 1 root floppy 2, 20 Aug 8 13:54 fd0h360 brw–rw–––– 1 root floppy 2, 48 Aug 8 13:55 fd0h410 brw–rw–––– 1 root floppy 2, 64 Aug 8 13:55 fd0h420 brw–rw–––– 1 root floppy 2, 24 Aug 8 13:54 fd0h720 brw–rw–––– 1 root floppy 2, 80 Aug 8 13:55 fd0h880 brw–rw–––– 1 root disk 3, 0 May 5 1998 hda brw–rw–––– 1 root disk 3, 1 May 5 1998 hda1 brw–rw–––– 1 root disk 3, 2 May 5 1998 hda2 brw–rw–––– 1 root disk 3, 3 May 5 1998 hda3 brw–rw–––– 1 root disk 3, 4 May 5 1998 hda4 brw–rw–––– 1 root disk 3, 5 May 5 1998 hda5 brw–rw–––– 1 root disk 3, 6 May 5 1998 hda6 brw–rw–––– 1 root disk 3, 64 May 5 1998 hdb brw–rw–––– 1 root disk 3, 65 May 5 1998 hdb1 brw–rw–––– 1 root disk 3, 66 May 5 1998 hdb2 brw–rw–––– 1 root disk 3, 67 May 5 1998 hdb3 brw–rw–––– 1 root disk 3, 68 May 5 1998 hdb4 brw–rw–––– 1 root disk 3, 69 May 5 1998 hdb5 brw–rw–––– 1 root disk 3, 70 May 5 1998 hdb6 crw–r––––– 1 root kmem 1, 2 May 5 1998 kmem crw–r––––– 1 root kmem 1, 1 May 5 1998 mem lrwxrwxrwx 1 root root 12 Nov 1 15:39 modem –> ttyS1 lrwxrwxrwx 1 root root 12 Nov 1 15:39 mouse –> psaux crw–rw–rw– 1 root root 1, 3 May 5 1998 null crwxrwxrwx 1 root root 10, 1 Oct 5 20:22 psaux brw–r––––– 1 root disk 1, 1 May 5 1998 ram brw–rw–––– 1 root disk 1, 0 May 5 1998 ram0 brw–rw–––– 1 root disk 1, 1 May 5 1998 ram1 brw–rw–––– 1 root disk 1, 2 May 5 1998 ram2 brw–rw–––– 1 root disk 1, 3 May 5 1998 ram3 brw–rw–––– 1 root disk 1, 4 May 5 1998 ram4 brw–rw–––– 1 root disk 1, 5 May 5 1998 ram5 brw–rw–––– 1 root disk 1, 6 May 5 1998 ram6 brw–rw–––– 1 root disk 1, 7 May 5 1998 ram7 brw–rw–––– 1 root disk 1, 8 May 5 1998 ram8 brw–rw–––– 1 root disk 1, 9 May 5 1998 ram9 lrwxrwxrwx 1 root root 4 Nov 1 15:39 ramdisk –> ram0 *** Izpis vsebuje le datoteke gonilnikov naprav za diske IDE, *** ki jih uporablja avor. *** Če uporabljate SCSI, namesto njih dodajte /dev/sdXX. crw––––––– 1 root root 4, 0 May 5 1998 tty0 crw–w––––– 1 root tty 4, 1 Nov 1 15:39 tty1 crw––––––– 1 root root 4, 2 Nov 1 15:29 tty2 crw––––––– 1 root root 4, 3 Nov 1 15:29 tty3 crw––––––– 1 root root 4, 4 Nov 1 15:29 tty4 crw––––––– 1 root root 4, 5 Nov 1 15:29 tty5 crw––––––– 1 root root 4, 6 Nov 1 15:29 tty6 crw––––––– 1 root root 4, 7 May 5 1998 tty7 crw––––––– 1 root tty 4, 8 May 5 1998 tty8 crw––––––– 1 root tty 4, 9 May 8 12:57 tty9 crw–rw–rw– 1 root root 4, 65 Nov 1 12:17 ttyS1 crw–rw–rw– 1 root root 1, 5 May 5 1998 zero /etc: –rw––––––– 1 root root 164 Nov 1 15:39 conf.modules –rw––––––– 1 root root 668 Nov 1 15:39 fstab –rw––––––– 1 root root 71 Nov 1 15:39 gettydefs –rw––––––– 1 root root 389 Nov 1 15:39 group –rw––––––– 1 root root 413 Nov 1 15:39 inittab –rw––––––– 1 root root 65 Nov 1 15:39 issue –rw–r––r–– 1 root root 746 Nov 1 15:39 ld.so.cache –rw––––––– 1 root root 32 Nov 1 15:39 motd –rw––––––– 1 root root 949 Nov 1 15:39 nsswitch.conf drwx––x––x 2 root root 1024 Nov 1 15:39 pam.d –rw––––––– 1 root root 139 Nov 1 15:39 passwd –rw––––––– 1 root root 516 Nov 1 15:39 profile –rwx––x––x 1 root root 387 Nov 1 15:39 rc –rw––––––– 1 root root 55 Nov 1 15:39 shells –rw––––––– 1 root root 774 Nov 1 15:39 termcap –rw––––––– 1 root root 78 Nov 1 15:39 ttytype lrwxrwxrwx 1 root root 15 Nov 1 15:39 utmp –> ../var/run/utmp lrwxrwxrwx 1 root root 15 Nov 1 15:39 wtmp –> ../var/log/wtmp /etc/pam.d: –rw––––––– 1 root root 356 Nov 1 15:39 other /lib: –rwxr–xr–x 1 root root 45415 Nov 1 15:39 ld–2.0.7.so lrwxrwxrwx 1 root root 11 Nov 1 15:39 ld–linux.so.2 –> ld–2.0.7.so –rwxr–xr–x 1 root root 731548 Nov 1 15:39 libc–2.0.7.so lrwxrwxrwx 1 root root 13 Nov 1 15:39 libc.so.6 –> libc–2.0.7.so lrwxrwxrwx 1 root root 17 Nov 1 15:39 libcom_err.so.2 –> libcom_err.so.2.0 –rwxr–xr–x 1 root root 6209 Nov 1 15:39 libcom_err.so.2.0 –rwxr–xr–x 1 root root 153881 Nov 1 15:39 libcrypt–2.0.7.so lrwxrwxrwx 1 root root 17 Nov 1 15:39 libcrypt.so.1 –> libcrypt–2.0.7.so –rwxr–xr–x 1 root root 12962 Nov 1 15:39 libdl–2.0.7.so lrwxrwxrwx 1 root root 14 Nov 1 15:39 libdl.so.2 –> libdl–2.0.7.so lrwxrwxrwx 1 root root 16 Nov 1 15:39 libext2fs.so.2 –> libext2fs.so.2.4 –rwxr–xr–x 1 root root 81382 Nov 1 15:39 libext2fs.so.2.4 –rwxr–xr–x 1 root root 25222 Nov 1 15:39 libnsl–2.0.7.so lrwxrwxrwx 1 root root 15 Nov 1 15:39 libnsl.so.1 –> libnsl–2.0.7.so –rwx––x––x 1 root root 178336 Nov 1 15:39 libnss_files–2.0.7.so lrwxrwxrwx 1 root root 21 Nov 1 15:39 libnss_files.so.1 –> libnss_files–2.0.7.so lrwxrwxrwx 1 root root 14 Nov 1 15:39 libpam.so.0 –> libpam.so.0.64 –rwxr–xr–x 1 root root 26906 Nov 1 15:39 libpam.so.0.64 lrwxrwxrwx 1 root root 19 Nov 1 15:39 libpam_misc.so.0 –> libpam_misc.so.0.64 –rwxr–xr–x 1 root root 7086 Nov 1 15:39 libpam_misc.so.0.64 –r–xr–xr–x 1 root root 35615 Nov 1 15:39 libproc.so.1.2.6 lrwxrwxrwx 1 root root 15 Nov 1 15:39 libpwdb.so.0 –> libpwdb.so.0.54 –rw–r–r––– 1 root root 121899 Nov 1 15:39 libpwdb.so.0.54 lrwxrwxrwx 1 root root 19 Nov 1 15:39 libtermcap.so.2 –> libtermcap.so.2.0.8 –rwxr–xr–x 1 root root 12041 Nov 1 15:39 libtermcap.so.2.0.8 –rwxr–xr–x 1 root root 12874 Nov 1 15:39 libutil–2.0.7.so lrwxrwxrwx 1 root root 16 Nov 1 15:39 libutil.so.1 –> libutil–2.0.7.so lrwxrwxrwx 1 root root 14 Nov 1 15:39 libuuid.so.1 –> libuuid.so.1.1 –rwxr–xr–x 1 root root 8039 Nov 1 15:39 libuuid.so.1.1 drwx––x––x 3 root root 1024 Nov 1 15:39 modules drwx––x––x 2 root root 1024 Nov 1 15:39 security /lib/modules: drwx––x––x 4 root root 1024 Nov 1 15:39 2.0.35 /lib/modules/2.0.35: drwx––x––x 2 root root 1024 Nov 1 15:39 block drwx––x––x 2 root root 1024 Nov 1 15:39 cdrom /lib/modules/2.0.35/block: drwx–––––– 1 root root 7156 Nov 1 15:39 loop.o /lib/modules/2.0.35/cdrom: drwx–––––– 1 root root 24108 Nov 1 15:39 cdu31a.o /lib/security: –rwx––x––x 1 root root 8771 Nov 1 15:39 pam_permit.so *** Imenik s podimeniki za pritrjevanje naprav /mnt: drwx––x––x 2 root root 1024 Nov 1 15:39 cdrom drwx––x––x 2 root root 1024 Nov 1 15:39 floppy /proc: /root: –rw––––––– 1 root root 176 Nov 1 15:39 .bashrc –rw––––––– 1 root root 182 Nov 1 15:39 .cshrc –rwx––x––x 1 root root 455 Nov 1 15:39 .profile –rw––––––– 1 root root 4014 Nov 1 15:39 .tcshrc /sbin: –rwx––x––x 1 root root 23976 Nov 1 15:39 depmod –rwx––x––x 2 root root 274600 Nov 1 15:39 e2fsck –rwx––x––x 1 root root 41268 Nov 1 15:39 fdisk –rwx––x––x 1 root root 9396 Nov 1 15:39 fsck –rwx––x––x 2 root root 274600 Nov 1 15:39 fsck.ext2 –rwx––x––x 1 root root 29556 Nov 1 15:39 getty –rwx––x––x 1 root root 6620 Nov 1 15:39 halt –rwx––x––x 1 root root 23116 Nov 1 15:39 init –rwx––x––x 1 root root 25612 Nov 1 15:39 insmod –rwx––x––x 1 root root 10368 Nov 1 15:39 kerneld –rwx––x––x 1 root root 110400 Nov 1 15:39 ldconfig –rwx––x––x 1 root root 6108 Nov 1 15:39 lsmod –rwx––x––x 2 root root 17400 Nov 1 15:39 mke2fs –rwx––x––x 1 root root 4072 Nov 1 15:39 mkfs –rwx––x––x 2 root root 17400 Nov 1 15:39 mkfs.ext2 –rwx––x––x 1 root root 5664 Nov 1 15:39 mkswap –rwx––x––x 1 root root 22032 Nov 1 15:39 modprobe lrwxrwxrwx 1 root root 4 Nov 1 15:39 reboot –> halt –rwx––x––x 1 root root 7492 Nov 1 15:39 rmmod –rwx––x––x 1 root root 12932 Nov 1 15:39 shutdown lrwxrwxrwx 1 root root 6 Nov 1 15:39 swapoff –> swapon –rwx––x––x 1 root root 5124 Nov 1 15:39 swapon lrwxrwxrwx 1 root root 4 Nov 1 15:39 telinit –> init –rwx––x––x 1 root root 6944 Nov 1 15:39 update /tmp: /usr: drwx––x––x 2 root root 1024 Nov 1 15:39 bin drwx––x––x 2 root root 1024 Nov 1 15:39 lib drwx––x––x 3 root root 1024 Nov 1 15:39 man drwx––x––x 2 root root 1024 Nov 1 15:39 sbin drwx––x––x 3 root root 1024 Nov 1 15:39 share lrwxrwxrwx 1 root root 10 Nov 1 15:39 tmp –> ../var/tmp /usr/bin: –rwx––x––x 1 root root 37164 Nov 1 15:39 afio –rwx––x––x 1 root root 5044 Nov 1 15:39 chroot –rwx––x––x 1 root root 10656 Nov 1 15:39 cut –rwx––x––x 1 root root 63652 Nov 1 15:39 diff –rwx––x––x 1 root root 12972 Nov 1 15:39 du –rwx––x––x 1 root root 56552 Nov 1 15:39 find –r–x––x––x 1 root root 6280 Nov 1 15:39 free –rwx––x––x 1 root root 7680 Nov 1 15:39 head –rwx––x––x 1 root root 8504 Nov 1 15:39 id –r–sr–xr–x 1 root bin 4200 Nov 1 15:39 passwd –rwx––x––x 1 root root 14856 Nov 1 15:39 tail –rwx––x––x 1 root root 19008 Nov 1 15:39 tr –rwx––x––x 1 root root 7160 Nov 1 15:39 wc –rwx––x––x 1 root root 4412 Nov 1 15:39 whoami /usr/lib: lrwxrwxrwx 1 root root 17 Nov 1 15:39 libncurses.so.4 –> libncurses.so.4.2 –rw–r–r––– 1 root root 260474 Nov 1 15:39 libncurses.so.4.2 /usr/sbin: –r–x––x––x 1 root root 13684 Nov 1 15:39 fuser –rwx––x––x 1 root root 3876 Nov 1 15:39 mklost+found /usr/share: drwx––x––x 4 root root 1024 Nov 1 15:39 terminfo /usr/share/terminfo: drwx––x––x 2 root root 1024 Nov 1 15:39 l drwx––x––x 2 root root 1024 Nov 1 15:39 v /usr/share/terminfo/l: –rw––––––– 1 root root 1552 Nov 1 15:39 linux –rw––––––– 1 root root 1516 Nov 1 15:39 linux–m –rw––––––– 1 root root 1583 Nov 1 15:39 linux–nic /usr/share/terminfo/v: –rw––––––– 2 root root 1143 Nov 1 15:39 vt100 –rw––––––– 2 root root 1143 Nov 1 15:39 vt100–am /var: drwx––x––x 2 root root 1024 Nov 1 15:39 log drwx––x––x 2 root root 1024 Nov 1 15:39 run drwx––x––x 2 root root 1024 Nov 1 15:39 tmp /var/log: –rw––––––– 1 root root 0 Nov 1 15:39 wtmp /var/run: –rw––––––– 1 root root 0 Nov 1 15:39 utmp /var/tmp: Vsebina vzorčne pomožne diskete pomožna disketa total 579 –rwxr–xr–x 1 root root 42333 Jul 28 19:05 cpio –rwxr–xr–x 1 root root 32844 Aug 28 19:50 debugfs –rwxr–xr–x 1 root root 103560 Jul 29 21:31 elvis –rwxr–xr–x 1 root root 29536 Jul 28 19:04 fdisk –rw–r–r––– 1 root root 128254 Jul 28 19:03 ftape.o –rwxr–xr–x 1 root root 17564 Jul 25 03:21 ftmt –rwxr–xr–x 1 root root 64161 Jul 29 20:47 grep –rwxr–xr–x 1 root root 45309 Jul 29 20:48 gzip –rwxr–xr–x 1 root root 23560 Jul 28 19:04 insmod –rwxr–xr–x 1 root root 118 Jul 28 19:04 lsmod lrwxrwxrwx 1 root root 5 Jul 28 19:04 mt –> mt–st –rwxr–xr–x 1 root root 9573 Jul 28 19:03 mt–st lrwxrwxrwx 1 root root 6 Jul 28 19:05 rmmod –> insmod –rwxr–xr–x 1 root root 104085 Jul 28 19:05 tar lrwxrwxrwx 1 root root 5 Jul 29 21:35 vi –> elvis