Linux-rendszermag HOGYAN

Al Dev (Alavoor Vasudevan)


           alavoor[AT]yahoo.com
        

v7.3, 2003. október 27


Tartalomjegyzék
1. Bevezetés
1.1. FIGYELMEZTETÉS
1.2. Magyar fordítás
2. Gyors lépések - a rendszermag fordítása
2.1. Előkészületek
2.2. A rendszermag kisebb fejlesztése
2.3. Az új kiadás változásai: dokumentáció
2.4. A türelmetleneknek
2.5. Új rendszermag készítése - a lépések értelmezése
2.6. Hibaelhárítás
2.7. A rendszermaghoz kapcsolódó utólagos fordítások
2.8. Hová küldjem a hibajelentést?
3. Betölthető modulok
3.1. A modulok segédprogramjainak telepítése
3.2. A rendszermaggal szállított modulok
3.3. Hogyan telepítsek csak egyetlen modult?
4. A rendszermag "klónozása"
5. Fontos kérdések és válaszok
5.1. Egyébként mit is csinál a rendszermag?
5.2. Miért kéne frissítenem a rendszermagomat?
5.3. Milyen hardvert támogatnak az új verziójú rendszermagok?
5.4. Milyen verziójú gcc és libc kell?
5.5. Mi az a betölthető modul?
5.6. Mennyi lemezterületre van szükségem?
5.7. Mennyi időt vesz igénybe?
6. A rendszermag foltozása (patching)
6.1. Egy folt alkalmazása
6.2. Ha valami nem sikerül
6.3. A .orig fájloktól történő megszabadulás
6.4. Egyéb foltok
7. Tippek és trükkök
7.1. A make vagy a patch parancs kimenetének átirányítása
7.2. Feltételes rendszermag-telepítés
7.3. Rendszermag frissítések
8. RPM csomagok felcsatolása (mount) az FTPFS segítségével
8.1. Az ftpfs használata
8.2. Az ftpfs parancsai
9. A rendszermagról szóló könyvek és dokumentumok
10. Információk a rendszermag fájljairól
10.1. vmlinuz és vmlinux
10.2. Rendszerbetöltő (bootloader) fájlok
10.3. Üzenetfájl (message file)
10.4. initrd.img
10.5. bzImage
10.6. module-info
10.7. config
10.8. grub
10.9. System.map
11. Linux rendszer-adminisztrációs eszközök
12. Telepítés, frissítés fénysebességgel, az apt-get segítségével (Redhat, Debian, Suse, Mandrake, egyéb)
12.1. Az "apt-get" forráskódja
12.2. Az "rpmfind" segédprogram
13. Haladóknak szóló témák - A Linux rendszerindítási folyamata
13.1. Hivatkozások a betöltési folyamat témájában
14. Eme dokumentum más formátumai
14.1. Acrobat PDF formátum
14.2. Konvertálás Linuxdoc-ról Docbook formátumra
14.3. Konvertálás MS WinHelp formátumra
14.4. A különböző formátumok olvasása
15. "A" függelék - initrd.img fájl készítése
15.1. Az mkinitrd használata
15.2. Rendszermag-dokumentációk
15.3. Linuxman Book
16. "B" függelék - lilo.conf mintafájl
16.1. LILO forrásanyagok
16.2. LILO hibaelhárítás
16.3. Egy LILO beállítófájl minta
17. "C" függelék - GRUB részletesen, grub.conf mintafájl
17.1. GRUB forrásanyagok
17.2. GRUB tippek
17.3. Egy GRUB beállítófájl minta
18. "D" függelék - utólagos rendszermag fordítás
19. "E" függelék - a gyakori hibák elhárítása
19.1. A rendszermag rendben elkészül, de a "make modules" nem sikerül
19.2. A programfordítás rendben megtörténik, de a rendszermag nem indul
19.3. A rendszer működése felfüggesztődik a LILO-nál
19.4. No init found (nem található init)
19.5. Csomó fordítási hiba (compile error)
19.6. A "depmod" parancs "Unresolved symbol error messages" hibaüzenetet ír ki
19.7. A rendszermag nem tölti be a modult, "Unresolved symbols" hibaüzenetet ír ki
19.8. A rendszermag nem tud betölteni egy modult
19.9. Betölthető modulok
19.10. Olvasd el a dokumentációt
19.11. make clean
19.12. Óriási vagy lassú rendszermag
19.13. A párhuzamos port/nyomtató nem működik
19.14. A rendszermag nem fordul le
19.15. A rendszermag új verziója nem töltődik be
19.16. Elfelejtetted futtatni a LILO-t, vagy a rendszered egyáltalán nem indul el
19.17. Azt írja ki: "warning: bdflush not running"
19.18. Nem tudom működésre bírni az IDE/ATAPI CD-ROM-ot
19.19. Furcsa dolgokat jelez elavult útválasztási kérésekről (routing requests)
19.20. "Not a compressed kernel Image file" (nem tömörített rendszermag)
19.21. Problémák a konzolos terminállal, miután 1.3.x-re frissítettünk
19.22. Úgy néz ki, hogy nem fordíthatók le dolgok a rendszermag frissítése után
19.23. Korlátok kitolása
19.24. Hová küldjem a hibajelentést?

1. Bevezetés

A következő okokból fordíthatsz rendszermagot:

Megjegyzés: a dokumentum rövid és egyszerű maradt, így még a nem technikai beállítottságú "otthoni felhasználók" is képesek lehetnek a Linux-rendszermag fordítására és futtatására.


1.2. Magyar fordítás

Az eredeti fordítást (v0.9) Vámosi Zoltán készítette (1997). Újrafordította (v6.3) Szíjjártó László (2003.07.28). Frissítette (v7.3) és a lektorálta Daczi László (2003.11.21).


2. Gyors lépések - a rendszermag fordítása

Ennek a résznek a szerzője Al Dev (alavoor[AT]yahoo.com) (A legfrissebb verzió megtalálható a "http://milkyway.has.it" és "http://www.milkywaygalaxy.freeservers.com" webhelyeken. Ezeken a helyeken ellenőrizheted a változásokat). A tükrözéseket megtalálod a http://milkyway.bounceme.net webhelyen. Ezek a webhelyeken sok linuxos nyalánkságot és tippet is találsz.

A rendszermag újrafordítására szükség lehet, ha kisebbé akarod tenni, ez GYORSABB működésű operációs rendszert eredményez. Az új eszközök támogatásához is elengedhetetlen.


2.1. Előkészületek

Mielőtt lefordítanád a rendszermagot, jó ötlet a rendszer biztonsági mentése. Ha még eddig nem mentetted volna el, akkor most tedd meg. Kereskedelmi forgalmazású mentőprogramokat is használhatsz, mint a BRS Backup-Recovery-Software (ugyanezen az oldalon nyílt forrású/szabad felhasználású mentőprogramokat is találsz, a "Backup and Restore Utility" menüpont alatt felsorolva). A biztonsági mentés csak egy ajánlat, nem előírás annak elkészítése a Linux-rendszermag fordítása előtt.


2.2. A rendszermag kisebb fejlesztése

Ha már fordítottál rendszermagot, és fel akarod fejleszteni a következő fejlesztési szintre (patch level), akkor egyszerűen másold be a meglévő beállítófájlt és használd fel újra. (Például: ha a 2.4.19-es rendszermagot már fordítottad, és a 2.4.20-ra akarsz fejleszteni.)

A kisebb fejlesztésekhez: Ez a lépés időt spórolhat, ha fel akarod használni a régi beállításokat. Amikor telepíted a rendszermagot, a konfigurációs fájlt általában a /boot könyvtárba rakod. A .config fájlt ne .config.save néven mentsd el, mivel a "make mrproper" ki fog törölni minden .config* fájlt! Tehát használhatod a meglévő beállítófájlt:

	bash# mkdir /usr/src/kernelconfigs 
	bash# cp /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save
	bash# cp /usr/src/linux/.config  /usr/src/linux/configs/.config.save  # Különösen biztonságos
	bash# cp /boot/config*  /usr/src/linux/configs/  # Különösen biztonságos
	bash# cp /boot/config-2.4.18-19.8.0  /usr/src/linux/.config
        
Esetleg egy másik módszer - átmásolható a .config fájl a régi rendszermag-forrásfából az újba.

	bash# ls -l /usr/src/lin*  # You can see that /usr/src/linux is a soft link
	bash# cd /usr/src/linux 
	bash# cp ../linux-old-tree/.config .  # Például cp ../linux-2.4.19/.config .
        

vagy még egy módszer - használható a "make oldconfig" parancs is, ami alapértelmezésként felhasználja a meglévő ./.config fájlt a beállítás kérdéseihez.

FIGYELEM: ha nincs elég szabad hely az /usr/src alatt, akkor bármely partícióra kicsomagolható a rendszermag forrása, ahol van elég tárhely (például a /home-ra). Ez azért van, mert a rendszermag fordítása sok szabad helyet igényel az objektum-fájlok, mint a *.o, számára. Ezért az /usr/src/linux könyvtárnak egy szimbolikus hivatkozásnak (soft link) KELL lennie, ami arra a könyvtárra mutat, ahol a forrás van.

Ezek után lásd a következő részt, a programfordításról és a telepítésről.


2.4. A türelmetleneknek

  1. Csomagold ki a forrást

  2. cd /usr/src/linux; mkdir /usr/src/kernelconfigs ; cp /usr/src/linux/.config /usr/src/kernelconfigs/.config.save; make clean; make mrproper; make clean; cp /usr/src/kernelconfigs/.config.save .config # Akkor, ha újra akarod használni a beállítófájlt ??

  3. Opcionális - másold át a konfigurációs fájlt: átmásolhatod a beállítófájlt a régi rendszermag-forrásfából az újba (időt spórolhat, ha a régi beállításokat akarod használni).

  4. make xconfig # Szebb, de korlátai vannak; csak "X" alatt fut

  5. make dep

  6. Adj egy egyedi nevet az új rendszermagnak - szerkeszd az /usr/src/linux/Makefile fájlt és az EXTRAVERSION bejegyzést

  7. nohup make bzImage

  8. "make modules" és "make modules_install"

  9. ...és elmehetsz vacsorázni vagy le is fekhetsz (szép Linuxos álmokat!), majd amikor visszajössz a rendszer kész! Nézd meg a naplófájlt a "less nohup.out" paranccsal.

  10. make install # Ez "NEM ajánlott" - használd a "cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage.myker" parancsot

    Másold át a System.map fájlt a /boot könyvtárba: # cp System*.map* /boot/

    Másold át a rendszermag konfigurációs fájlt (az általad kiválasztott opciókat). Nem elengedhetetlen, de később hasznos lehet. cp .config /boot/config.KERNEL_VERSION.Name

  11. Állítsd be a GRUB vagy a LILO rendszerbetöltőt.

  12. Indítsd újra a gépet, és ellenőrizd az új rendszermag betöltődését

  13. Készíts biztonsági mentőlemezt a "bzdisk" vagy "mkbootdisk" paranccsal

  14. Opcionális - make rpm # RPM csomag készítéséhez

  15. Opcionális - make clean (ha tárhelyet akarsz felszabadítani)

Lásd a fenti lépések részleteit a következő fejezetekben...


2.5. Új rendszermag készítése - a lépések értelmezése

Az előző részben említett lépések részletei:

Figyelem: Az alábbiakban a "bash#" jelzi a bash készenléti jelét (prompt), azokat a parancsokat kell begépelni, amiket a "bash#" jelzés után következnek. A következő parancsokat RedHat Linux alatt, a 2.4.7-10 verziójú rendszermaggal teszteltük, de más terjesztéseknél is (esetleg kisebb eltérésekkel működnie kell. Ugyanúgy működnie kéne a régi, 2.2, 2.0 és 1.3 verziójú rendszermagokkal is. Szintúgy a jövőbeli vagy új verziójúakkal (kis eltérésekkel - értesítsetek róla).

  1. Csomagold ki a forrást: A következő lépések végrehajtása során "root" felhasználóként legyél bejelentkezve. Csatold fel a RedHat Linux CD-ROM-ot (a RedHat 9-ben Disc 2) és telepítsd a rendszermag forrás-RPM csomagját:
    
	bash$ su - root
    	bash# cd /mnt/cdrom/RedHat/RPMS 
    	bash# rpm -i kernel-headers*.rpm 
    	bash# rpm -i kernel-source*.rpm 
    	bash# rpm -i dev86*.rpm   
    	bash# rpm -i bin86*.rpm   
                  
    A bin86*.rpm és az "as86" csak a RÉGEBBI Linux verziókhoz kell, mint a Redhat 5.x. Szerezd be az "as86" Intel assembler csomagot a dev86*.rpm-ből a CD-ROM-ról vagy a
    bin86-mandrake honlapról , bin86-kondara ). A legújabb, 9-es RedHat kernel-source.rpm csomagja tartalmazza a rendszermag fejlécfájlokat. Általában a forrás a RedHat lemezeken vagy a SRPM lemezeken található, egyébként beszerezheted a rpmfind.net kernel-source (keresd a RawHide-ot a legújabb RedHat-hez) és rpmfind.net kernel-headers honlapról. Bizonyosodj meg arról is, hogy az /usr/src/linux egy szimbolikus hivatkozás, ami a megfelelő kicsomagolt forrásra mutat.
    
	bash# cd /usr/src
    	bash# ls -l    # Láthatod, hogy az /usr/src/linux egy szimbolikus hivatkozás, ami a forrásra mutat
    	lrwxrwxrwx    1 root     root           19 Jan 26 11:01 linux -> linux-2.4.18-19.8.0
    	drwxr-xr-x   17 root     root         4096 Jan 25 21:08 linux-2.4.18-14
    	drwxr-xr-x   17 root     root         4096 Mar 26 12:50 linux-2.4.18-19.8.0
    	drwxr-xr-x    7 root     root         4096 Jan 14 16:32 redhat
                  
    Ha nem szimbolikus hivatkozás, akkor nevezd át az /usr/src/linux könyvtárat /usr/src/linux-2.4.yy könyvtárra és készíts egy szimbolikus hivatkozást.

    FIGYELEM: ha nincs elég szabad hely az /usr/src alatt, akkor bármelyik partícióra kicsomagolhatod a forrást, ahol van elegendő (mint a /home). Ez azért van, mert a rendszermag fordítása sok szabad helyet igényel az objektum-fájlok, mint a *.o, számára. Ezért az /usr/src/linux könyvtárnak egy szimbolikus hivatkozásnak KELL lennie, ami arra a könyvtárra mutat, ahol a forrás van.

  2. Takarítás: Mielőtt az "mrproper" parancsot kiadnánk, elmentheted a .config fájlt.
    
	bash# cd /usr/src/linux 
            bash# mkdir /usr/src/kernelconfigs ;
            bash# cp /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save;
    	bash# cp /usr/src/linux/.config  /usr/src/linux/configs/.config.save  # Különösen biztonságos
    	bash# cp /boot/config*  /usr/src/linux/configs/  # Különösen biztonságos
    	bash# make clean
    	bash# make mrproper  # "EL KELL VÉGEZNED ezt az mrproper-t", különben rengeteg problémával szembesülsz !!
    	bash# make clean
    	bash# cp /usr/src/kernelconfigs/.config.save .config  # ha újra akarod használni a beállítófájlt ??
                  

  3. Opcionális - másold át a beállítófájlt: Ez a lépés időt spórolhat meg, ha fel akarod használni a régi beállításokat. Amikor telepíted a rendszermagot, akkor a beállítófájlt általában a /boot alá rakod. Van néhány alapszintű beállítófájl, az /usr/src/linux/configs/kernel-*.config, amiket felhasználhatsz. Tehát használhatod a meglévő konfigurációs fájlt:
    
        bash# mkdir /usr/src/kernelconfigs ;
            bash# cp /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save;
    	bash# cp /usr/src/linux/.config  /usr/src/linux/configs/.config.save  # Különösen biztonságos
    	bash# cp /boot/config*  /usr/src/linux/configs/  # Különösen biztonságos
    	bash# cp /boot/config-2.4.18-19.8.0  /usr/src/linux/.config
    	Vagy másold át az alapértelmezett beállítófájlt az /usr/src/linux/configs könyvtárból:
    	bash# cp /usr/src/linux/configs/kernel-2.4.18-i686.config  /usr/src/linux/.config
    	Vagy Athlon processzorok esetében 
    	bash# cp /usr/src/linux/configs/kernel-2.4.18-athlon.config  /usr/src/linux/.config
                  
    Esetleg egy másik módszer - átmásolhatod a .config fájlt a régi rendszermag-forrásfából az újba.
    
	bash# ls -l /usr/src/lin*  # Látható, hogy az /usr/src/linux egy szimbolikus hivatkozás
    	bash# cd /usr/src/linux 
    	bash# cp ../linux-old-tree/.config .  # Például cp ../linux-2.4.19/.config .
                  
    Sőt egy másik módszer - használhatod a "make oldconfig" parancsot, ami alapértelmezésként felhasználja a meglévő ./.config fájlt a beállítás kérdéseihez.

  4. Beállítás:

    • Indítsd el az X-Window rendszert a "startx" paranccsal. Ha nem tudod elindítani, lásd alább a következő lépést.
      
	bash# man startx
      	bash# startx
      	bash# cd /usr/src/linux 
      	bash# make xconfig  # Szebb, bár korlátozott; csak "X" alatt fut
                          
      Ha hibaüzenetet kapsz, miszerint a "wish" nem található, telepítsd a tk-8.3.rpm csomagot.

    • Ha nem tudod elindítani az "X"-et, akkor próbáld meg a következőt:
      
		bash# export TERM=xterm
      		bash# make menuconfig  # újabb, az ncurses/curses csomagot használja, nem működik, ha nincs telepítve
      	Ha összezavarodott képernyőt kapsz, használj más terminál-emulációt, 
      	mint a vt100, vt102, vt220 vagy ansi. A képernyő zavaros lesz és 
      	összevissza karaktereket látsz, ha telnet-tel lépsz be egy távoli Linux
      	rendszerbe. Ebben az esetben a vt100, vt220 terminál-emulátorokat használd. 
      	Például:
      		bash# export TERM=vt220
      		bash# export TERM=ansi
      	A VT alacsonyabb szintjein használd: 
      		bash# export TERM=vt100
      		bash# make menuconfig  # újabb, az ncurses/curses csomagot használja, nem működik, ha nincs telepítve
      	Ha a "menuconfig" parancs nem működik, akkor próbáld meg:
      		bash# make config   # régi, felhasználóbarát módszer !!
                          

    A "make xconfig" vagy "make menuconfig" egy felhasználóbarát GUI felületet indít el. A "make config" egy parancssoros, konzolos felületet. Betöltheted a beállítófájlt az /usr/src/linux/.config fájlból ("pont config" fájl. Figyelj a pontra a "config" előtt). Kattints a "Load configuration from file" (Beállítások betöltése fájlból) gombra. A "make xconfig"-on belül (a problémák kivédése érdekében) a következőket kell tenned:

    • NAGYON FONTOS !!! : Válaszd a megfelelő CPU típust - Pentium 3, AMD K6, Cyrix, Pentium 4, Intel 386, DEC Alpha, PowerPC, egyébként a rendszermag fordítása nem sikerül, vagy ha igen, akkor nem fog elindulni!!

    • Válaszd az SMP támogatást - akár egy, akár több processzorod van

    • Fájlrendszerek - válaszd a Windows95 VFAT, MSDOS, NTFS fájlrendszereket mint a rendszermag részeit, és ne mint betölthető modulokat. (Nekem személy szerint előnyös, de szabadon válaszd a saját rendszerednek megfelelően).

    • Engedélyezd a "Loadable kernel modules" (betölthető rendszermag modulok) támogatást! Ezzel az opcióval, a futó Linux rendszeren tudod az eszközmeghajtókat dinamikusan ki/be tölteni. Részletesen a Betölthető modulok fejezetben olvashatsz erről.

    Ments és lépj ki a "make xconfig"-ból. Minden kiválasztott beállítási opció elmentődött az /usr/src/linux/.config (pont config) fájlba.

  5. Függőségek: Most add ki a következő parancsot:
    
	bash# make dep
                  

  6. Adj egyedi nevet az új rendszermagodnak: Nevet is adhatsz a rendszermagnak, így az egyedi lesz és nem akad össze a többivel.
    
	bash# cd /usr/src/linux
    	bash# vi Makefile
                  
    Itt keresd meg az EXTRAVERSION = -19.8.0_blabla részt és változtasd meg például így: EXTRAVERSION = -19.8.0MyKernel.26Jan2003

  7. Add ki a "make" parancsot: Olvasd el a következő fájlt (hogy információt gyűjts a rendszermag fordításáról/építéséről. Tipp: használd a színes gvim szövegszerkesztőt a jobb olvashatóság érdekében.
    
	bash# gvim -R   /usr/src/linux/arch/i386/config.in 
    	bash# man less 
    	bash# less   /usr/src/linux/arch/i386/config.in 
    	Nyomd le a "h" billentyűt a súgóért és navigálj a szövegben az i, j, k, l, h 
    	vagy a nyíl-, ill. a page up/down billentyűkkel.
                  
    Most add ki a "make" parancsot:
    
		bash# cd /usr/src/linux
    		bash# man nohup
    		bash# nohup make bzImage &  
    		bash# man tail
    		bash# tail -f nohup.out     (.... a folyamat figyeléséhez) 
    	Ez a rendszermagot az /usr/src/linux/arch/i386/boot/bzImage fájlba helyezi el.
                    

  8. BETÖLTHETŐ MODULOK: Most amíg a "make" végigzörög az előző rész szerint, elindíthatsz egy másik xterm-es parancsértelmezőt és kövesd a lépéseket: ez a lépés CSAK AKKOR szükséges, ha engedélyezted a "loadable module support"-ot a fenti "Beállítás" lépésnél. A betölthető modulok a /lib/modules alatt találhatók. EL KELL végezned ezt a lépést, ha engedélyeztél vagy letiltottál bármely modult, egyébként "unresolved symbols" hibaüzeneteket fogsz kapni a rendszermag betöltődése közben vagy azután.
    
	# indíts egy új xterm ablakot és ...
    	bash# cd /usr/src/linux
    	# írányítsd át a kimenetet, hogy ne írd felül a nohup.out-ot, amíg az fut...
    	bash# nohup make modules 1> modules.out 2> modules.err  &
    	bash# make modules_install   # csak akkor add ki, ha a fenti "make" parancs sikeresen lefutott
                  
    Ez bemásolja a modulokat a /lib/modules könyvtárba. Részletesen a Betölthető modulok fejezetben olvashatsz erről.

  9. Most menj vacsorázni vagy feküdj le: Amíg mindkét "make"-ablak elzörög magában, addig elmehetsz vacsorázni (pihenj picit) vagy bújj ágyba (szép linuxos álmokat), mire felébredsz és visszajössz, a rendszer kész lesz! Ellenőrizheted a kimenet naplóját a "less nohup.out" paranccsal.
    
	bash# cd /usr/src/linux
    	bash# less nohup.out
    	bash# less modules.err
    	bash# less modules.out
    	Ha nem volt hiba:
    	bash# make modules_install  
                  

  10. bzImage: Miután a bzImage sikerült, másold át a rendszermagot (kernel image) a /boot könyvtárba. Át kell másolnod az új fájlt, különben az új rendszermag LEHET, HOGY NEM FOG betöltődni. Ezen kívül a beállítófájlt is át kell másolnod a /boot területre, hogy tükrözze a rendszermag beállításait dokumentációs szempontból.
    
	bash# cp /usr/src/linux/arch/i386/boot/bzImage     /boot/bzImage.myker.26mar2001
    	# Át KELL másolnod a beállítófájlt, hogy tükrözze a megfelelő rendszermagot
    	# dokumentációs célból
    	bash# cp /usr/src/linux/.config /boot/config-<your_kernelversion_date>
    	# Példa: cp /usr/src/linux/.config /boot/config-2.4.18-19.8.0-26mar2001
                  
    FIGYELEM: Ha az initrd használatát tervezed a LILO vagy a GRUB rendszerbetöltőben, akkor lefordíthatod és elhelyezheted azt a /boot/initrd*.img fájlban. Részletesen az "A" függelék - initrd.img fájl készítése fejezetben olvashatsz erről.

  11. A LILO vagy a GRUB beállítása: Két lehetőség van a betöltésre RedHat Linux alatt - a GRUB és a LILO. A GRUB beállítása: A GRUB újabb és sokkal jobb eszköz mint a LILO, elsődlegesen ennek a használatát ajánlom. A LILO régebbi technológia. A GRUB különbözik a többi betöltőtől (mint például a LILO) abban, hogy ez "képes azt hazudni a MS Windowsnak (és elhitetni vele), hogy az első partícióra telepítették, akkor is ha nem így van!" . Így megtarthatod a jelenlegi Linux rendszeredet ott, ahol van, és telepíthetsz Windowst mellé. Részletesen a "C" függelék - GRUB részletesen, grub.conf mintafájl fejezetben olvashatsz erről. A LILO beállítása: A LILO régebbi eszköz, részletesen a "B" függelék - lilo.conf mintafájl fejezetben olvashatsz róla.

  12. Indítsd újra a gépet, és a lilo futásakor nyomd meg a TAB billentyűt, majd gépeld be: "myker". Ha elindul, jó munkát végeztél! Egyébként a lilo menüjében válaszd a régi rendszermagot, indítsd el és próbálj meg mindent elölről kezdeni. A régi rendszermagod még mindig ÉRINTETLEN és BIZTONSÁGOS , például a /boot/vmlinuz-2.0.34-0.6

  13. Ha az új rendszermagod betöltődik, és jól is működik, elkészítheted a indítólemezed. Tégy egy üres hajlékonylemezt a meghajtóba, majd:
    
	bash# cd /usr/src/linux
    	bash# make bzdisk
    	Használható még az mkbootdisk parancs -
    	bash# rpm -i mkbootdisk*.rpm
    	bash# man mkbootdisk
                  

  14. Opcionálisan, készíts RPM csomagot: ha több gépre is telepíteni akarod az új rendszermagot, RPM csomagot is készíthetsz belőle.
    
	make rpm   # RPM csomag építéséhez
                    

  15. Takarítás: Opcionális: make clean (ha tárhelyet akarsz felszabadítani)


2.8. Hová küldjem a hibajelentést?

Ha a fenti lehetőségek mindegyikét kipróbáltad és úgy gondolod, hogy a rendszermag hibás. (Ez a fejezet eredetileg az "E" függelék - a gyakori hibák elhárítása fejezet végén volt, tehát először az ott leírt lehetőségeket próbáljátok végig - a lektor) Ebben az esetben jelentheted a hibát, így (talán) javítva lesz. Olvasd el az /usr/src/linux/REPORTING-BUGS fájlt, majd látogass el a Reporting Bugs for the Linux Kernel (A Linux-rendszermag hibáinak bejelentése) honlapra.


3. Betölthető modulok

Mindenki, aki használta a "betölthető modulokat", igazán "megszerette" őket! Szeretem a modulokat, mivel agyafúrt dolgok, és a nagyobb feladatokat kicsi, kezelhető részekre szedik szét. Ha elkezded használni, fogadok, hogy megszereted őket! A modulok csak a Linuxra jellemzőek. Ez volt a világ első olyan operációs rendszere, ami bemutatta a betölthető modulok fogalmát. Egyetlen más operációs rendszer sem rendelkezik ezzel a fogalommal, de a közeljövőben más rendszerek is megvalósíthatják.

A betölthető modulok memóriát spórolhatnak, és megkönnyítik a beállítást. A modulok hatóköre magában foglalja a fájlrendszereket, ethernet kártyák, szalagos meghajtók, nyomtatók és mások eszközmeghajtóit.

A modulok a rendszermag kódjának darabjai, amelyeket nem csatoltak (foglaltak bele) közvetlenül a bele. Az ember lefordíthatja őket elkülönítve is, és beillesztheti vagy eltávolíthatja a futó rendszermagból majdnem bármikor. Rugalmasságából kifolyólag nem ajánlott bizonyos rendszermag-jellemzőket beléjük kódolni. Sok népszerű eszközmeghajtó, mint például a PCMCIA és a QIC-80/40 szalagos eszközmeghajtók, betölthető modulok.

Olvasd el a Module-HOWTO (Modul HOGYAN) doksit: "http://www.tldp.org/HOWTO/Module-HOWTO" .

Olvasd el ezeket a kézikönyv-oldalakat is:

	bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
	bash# man lsmod
	bash# man insmod
	bash# man rmmod
	bash# man depmod
	bash# man modprobe
      
Például, ha be akarod tölteni a /lib/modules/2.4.2-2/kernel/drivers/block/loop.o modult, tedd ezt:

	bash# man insmod
	bash# modprobe loop
	bash# insmod loop
	bash# lsmod 
      
Az insmod keresési útvonalát (PATH) az /etc/modules.conf fájlban állíthatod be.


3.3. Hogyan telepítsek csak egyetlen modult?

Tegyük fel, hogy már megcsináltad a "make modules" és "make modules_install" lépéseket. Később pedig még a "make clean"-t is a helyfelszabadítás érdekében. Most pedig változtatni akarsz valamelyik modul egyetlen C fájlján, és újra akarod építeni azt az egy modult, és a modulfájlt bemásolni a /lib/modules alá. Hogyan csinálod? Hiszen nem akarsz egy "make modules" parancsot kiadni, az mindent újraépít és 2-3 óráig tart!

Le tudsz fordítani egyetlen modulfájlt (mondjuk a foo.o-t) és telepítheted is. Ehhez egyszerűen szerkeszd meg a Makefile-t, és változtasd meg a SUBDIRS bejegyzést csakis azokra a könyvtárakra, amik érdekelnek.

Egy jó példa: azt vettem észre, hogy a rendszermagom nem támogatja az NTFS fájlrendszert (persze kiadtam a "make clean"-t a "make modules" után. A francba!). Így elhatároztam, hogy lefordítom az NTFS betölthető modulját. Nem akartam az egész készletet (mivel ez nálam 2 óráig tartana), ezért az alábbi módszert követtem, és csak a fs/ntfs modult fordítottam, majd kiadtam az "insmod ntfs" parancsot. Az egész 5 percig tartott!

Másik példa: ha csak az fs/autofs modul érdekel, akkor a következőket teszem:

	cd /usr/src/linux
	mv Makefile Makefile.original
	cp Makefile.original Makefile.my
	ln -s Makefile.my Makefile   # mivel néhány fájlnak még szüksége lehet a "Makefile"-ra
	vi Makefile.my
	# Megjegyzésekkel láttam el a "SUBDIRS" sorokat, és hozzáadtam azokat a könyvtárakat, amik érdekeltek
	# például a fs/autofs-hez:
		#SUBDIRS	=kernel drivers mm fs net ipc lib abi crypto
		SUBDIRS		=fs/autofs
	# Elmentettem a Makefile.my fájlt és kiadtam a következő parancsot:
	make -f Makefile.my modules
	# Ez megcsinálja az autofs.o modult
	# Most bemásoltam a modul objektumfájlt a célkönyvtárba: /lib/modules
	# VESZÉLYES: NE CSINÁLD EZT: "make -f Makefile.my modules_install" , mivel kitakaríthatja
	# a többi jót is a /lib/modules könyvtárból !! Csak másold be, így:
	cp autofs.o /lib/modules/2.4.18-19.8.0/kernel/fs/autofs
	  
	# Most állítsunk vissza mindent a normál helyzetbe
	rm Makefile  # This is a link to Makefile.my
	ln -s Makefile.original Makefile
	  
	# Rögzítsd a változtatásokat a beállítófájlban a későbbi használat érdekében
	# Szerkeszd az /usr/src/linux/.config fájlt és állítsd be modulként a szolgáltatást
	cd /usr/src/linux
        mkdir /usr/src/kernelconfigs ;
        cp /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save;
	cp /usr/src/linux/.config  /usr/src/linux/configs/.config.save  # Különösen biztonságos
	cp /boot/config*  /usr/src/linux/configs/  # Különösen biztonságos
	vi /usr/src/linux/.config 
	# és változtasd meg a beállító paramétert. Például az én esetemben
	# az ntfs modulnál CONFIG_NTFS_FS=m jelzi, hogy ez modul.
        

Többet is megtudhatsz a Makefile-ról és a make-ről, ha elolvasod a GNU make kézikönyv oldat:

Ismerkedj meg a modulokat elkészítő Makefile-al. A fájlnak van egy "module" sora, mint:

	modules: $(patsubst %, _mod_%, $(SUBDIRS))
        

A patsubst függvény szintaktikája $(patsubst minta,helyettesítés,szöveg). A százalékjelet ([percnt]) ugyanúgy használja, mint a mintaillesztő szabályok - mint egy sztringet, ami illeszkedik a mintában és a helyettesítő szövegben is. Végigkeresi a "szöveg"-et elválasztójellel tagolt szavakért, amik illeszkednek a "mintá"-ra és kicseréli az előfordulásaikat a "helyettesítés"-re.

Ez a Makefile ugyanúgy tartalmaz szabványos shell-függvényeket, mint szabványos make függvényeket. A shell-függvények szintaktikája $(shell parancs). Ez a függvény kimenetét adja vissza (az új sorok kihúzásával).


4. A rendszermag "klónozása"

Lehet, hogy készíteni akarsz egy rendszermagot egy adott rendszeren, majd ezt sok hasonló PC-re is akarod nagyüzemben telepíteni. Az újonnan készített rendszermagnak a gépeik százaira való egyszerűbb telepítése érdekében RPM (RedHat) vagy DEB (Debian) csomag formájában akarod azt elkészíteni, vagy egyszerűen csak tar.gz fájl formájában.

  1. RPM csomagot készíthetsz a rendszermagból az rpmbuild -ba kernel*.spec paranccsal

  2. Ellenőrizd, hogy az elkészült kernel*.rpm minden, a /lib/modules/2.x.x-y könyvtárban lévő fájlt tartalmaz. Egyébiránt össze kell csomagolnod a tar és gzip segítségével ezt a könyvtárat, és átvinni a célgépekre.

  3. Ellenőrizd, hogy a rendszermag-csomag tartalmazza a /boot/initrd-2.x.x-y.img fájlt, különben össze kell csomagolnod a tar és gzip segítségével, és átvinni a célgépekre.

  4. Ezen felül a /boot könyvtár más fájljait is, amik nincsenek a kernel*.rpm csomagban.


5. Fontos kérdések és válaszok


5.3. Milyen hardvert támogatnak az új verziójú rendszermagok?

Olvasd el a Hardware-HOWTO (Hardver HOGYAN) dokumentumban. Ezen kívül megnézheted a " config.in " fájlt a Linux forráskódjában, vagy egyszerűen keresd ki a " make config " kiadásával. Ez megmutatja az összes, standard rendszermag által támogatott hardvert, de nem az összeset, amit a Linux támogat; sok elterjedt eszközvezérlőt (mint a PCMCIA vezérlők és néhány szalagos meghajtó) betölthető modulként tartanak karban és külön terjesztenek.


6. A rendszermag foltozása (patching)

6.1. Egy folt alkalmazása

A rendszermag lépésenkénti fejlesztésének eszköze a foltozás. Például, ha v1.1.45-ös Linuxod van, és észreveszed, hogy létezik egy " patch46.gz " fájl ehhez, ez azt jelenti, hogy frissítheted az 1.1.46 verzióra a folt alkalmazásával. Először biztonsági másolatot ajánlott készíteni a forrásfáról (" make clean " majd ezután " cd /usr/src; tar zcvf old-tree.tar.gz linux ", ami egy tömörített tar archívumot készít).

Tehát folytatva a fenti példát, tegyük fel, hogy van egy " patch46.gz " fájl az /usr/src könyvtárban. Lépj be cd az /usr/src könyvtárba és add ki a " zcat patch46.gz [verbar] patch -p0 " (vagy " patch -p0 [lt ] patch46 " parancsot , ha a folt nincs tömörítve). Látni fogod, ahogy a feliratok elzúgnak (vagy elcsattognak, ha lassabb géped van), jelezve, hogy megpróbálják a kóddarabokat beilleszteni, és hogy ez sikerült-e vagy sem. Általában ez a folyamat túl gyors ahhoz, hogy elolvashasd és nem lehetsz biztos benne, hogy működött-e, ezért használd a -s kapcsolót a patch programhoz, ami azt jelzi a patch programnak, hogy csak a hibaüzeneteket írja ki (nem fogsz sokat kapni a "hé, a komputerem éppen valami változtatást csinál!" érzésből, de lehet, hogy épp ezt értékeled...) Azon dolgok megtekintéséért, amik nem mentek simán, lépj be az /usr/src/linux könyvtárba és keress .rej kiterjesztésű fájlokat. A patch régebbi verziói (azok a verziók, amiket alsóbbrendű fájlrendszeren fordítottak) a visszadobott dolgokat # kiterjesztéssel látják el. Használhatod a " find " parancsot, hogy keressen helyetted; a "find . -name '*.rej' -print" kiírja a standard kimenetre az összes .rej kiterjesztésű fájlt, ami az aktuális könyvtárban és alkönyvtáraiban van.

Ha minden rendben zajlott, adj ki egy " make clean ", " config ", and " dep " parancssorozatot, a 3. és 4. részben leírtak szerint.

Elég kevés kapcsolója van a patch parancsnak. Ahogy fentebb említettem, a patch -s minden üzenetet elnyom, kivéve a hibaüzeneteket. Ha valahol másutt tartod a rendszermag forrását, nem az /usr/src/linux könyvtárban, a patch -p1 (abban a könyvtárban) rendben megfoltozza a dolgokat. Egyéb patch kapcsolókat a jól dokumentált kézikönyv oldalakban keress.


6.2. Ha valami nem sikerül

(Figyelem: ez a rész leginkább a meglehetősen régi rendszermagokra vonatkozik)

A leggyakrabban előforduló probléma az volt, amikor egy folt módosította a " config.in " fájlt és az nem jól nézett ki, mivel megváltoztattad a beállításokat, hogy megfeleljenek a gépednek. Ezt már javították, de még belefuthatsz, ha régi rendszermagot fordítasz. A kijavításához nézd meg a config.in.rej fájlt, hogy mi maradt az eredeti foltból. A változásokat általában " + " és " - " karakterek jelzik a sorok elején. Nézd meg a szomszédos sorokat, és jegyezd meg, hogy " y "-al vagy " n " betűvel vannak jelölve. Most szerkeszd a config.in fájlt, és változtasd meg az " y "-t " n "-re és az " n "-et " y "-ra, amikor szükséges. Adj ki egy "patch -p0 < config.in.rej" parancsot és ha azt jelzi, hogy sikerült, akkor folytathatod a beállítást és fordítást. A config.in.rej fájl ottmarad, de törölhető.

Ha további problémákba ütközöl, akkor használaton kívüli foltot telepítettél. Ha azt mondja, hogy " previously applied patch detected: Assume -R? " (előzőleg már alkalmazott foltot észleltem), akkor valószínűleg olyan foltot próbáltál alkalmazni, ami a jelenlegi verziószám alatti; ha " y "-t válaszolsz, megpróbálja visszaállítani a forrásodat, és nagy valószínűséggel ez nem sikerül; ezért egy teljesen új forrásfára van szükséged (ami nem is olyan rossz ötlet első nekifutásra).

A folt visszavonásához használd a " patch -R " parancsot az eredeti folton.

A legjobb dolog, ha a foltozás tényleg rossz irányba megy, hogy újrakezdesz mindent egy tiszta, még nem használt forrásfával (például az egyik linux-x.y.z.tar.gz fájllal).


7. Tippek és trükkök


7.2. Feltételes rendszermag-telepítés

A hajlékonylemezre történő telepítésen kívül még egyéb módszerek is léteznek az új rendszermag kipróbálására anélkül, hogy a régit bántatnánk. Sok egyéb Unix változatól eltérően, a LILO képes a rendszermagot a lemez bármely részéről betölteni (ha nagy méretű (500 MB vagy nagyobb) lemezed van, kérlek olvasd el a LILO dokumentációját, hogy ez mennyiben okozhat problémát). Ezért, ha az "image = /usr/src/linux/arch/i386/boot/bzImage label = new_kernel" sorokat berakod a LILO beállítófájljának végére, akkor választhatod az újonnan fordított rendszermagot is anélkül, hogy a régi /vmlinuz -hoz hozzányúlnál (természetesen miután futtatod a lilo parancsot). A legkönnyebben a betöltés közben a SHIFT lenyomásával lehet jelezni a LILO-nak, hogy az új rendszermagot töltse be (amikor azt látod a képernyőn, hogy LILO , és semmi mást), ami ad egy készenléti jelet. Ennél a pontnál beírhatod: " new_kernel " az új rendszermag indításához.

Ha több különböző rendszermag-forrásfát akarsz tárolni egyszerre a gépen (ez azonban rengeteg lemezterületet fogyaszthat; légy óvatos), a legtöbbször az /usr/src/linux-x.y.z könyvtárba kerülnek, ahol az x.y.z a rendszermag verziója. Ezután "kiválaszthatsz" egy forrásfát egy szimbolikus hivatkozás segítségével; például " ln -sf linux-1.2.2 /usr/src/linux ", ez az 1.2.2-t teszi aktuálissá. Mielőtt egy hasonló szimbolikus hivatkozást készítenél, bizonyosodj meg arról, hogy az ln utolsó paramétere nem egy létező könyvtár (régebbi szimbolikus hivatkozás elfogadható); különben az eredmény nem az lesz, amit várnál.


8. RPM csomagok felcsatolása (mount) az FTPFS segítségével

Mostanra lefordítódott az új rendszermagod és jól fut. Szükséged lehet arra a számtalan RPM csomagra, amiket lehet, hogy a közeljövőben telepítened kell majd. Ennek egyik útja, hogy fizikailag felcsatolod a LINUX CD-ROM-jait, de több mint 3 CD-ről van szó, kényelmetlen leválasztani és cserélgetni őket. Itt jön a képbe az FTPFS.

Ha automatizálni szeretnéd az RMP csomagok telepítését, fontold meg az "apt-get" parancs használatát. Az apt-get automatikusan feloldja a függőségeket, letölti és telepíti vagy frissíti a csomagokat. Részletesebben a Telepítés, frissítés fénysebességgel fejezetben olvashatsz erről.

Az FTP fájlrendszer (FTPFS) egy Linux-rendszermag-modul, ami kibővíti a VFS hatókörét arra, hogy FTP köteteket is fel tudjon csatolni. Tehát fel tudsz csatolni FTP-n megosztott könyvtárakat a saját fájlrendszeredbe, és a helyi fájlok kezelésének előnyeit élvezheted. Megtalálható a "http://lufs.sourceforge.net/lufs" és a "http://ftpfs.sourceforge.net" webhelyen.


8.2. Az ftpfs parancsai

Mielőtt egyáltalán elkezdenél az FTP kötetek felcsatolásának gondolatával játszani, győződj meg, hogy elegendő sávszélességed van-e, különben nem lesz nagy élvezet.


8.2.2. Az ftpmount-féle megoldás

ftpmount [lsqb ]user[lsqb ]:password]@]hostname[lsqb ]:port ][lsqb ]/root_dir] mount_point [lsqb ]-own] [lsqb ]-uid=id] [lsqb ]-gid=id] [lsqb ]-fmask=mask] [lsqb ]-dmask=mask] [lsqb ]-active]


	A paraméterek: [alapértékek]
	    * user: A felhasználói név, amivel belépsz az FTP szerverre. [anonymous]
	    * password: A felhasználói jelszó. [user@ftpfs.sourceforge.net]
	    * hostname: Az FTP szerver.
	    * port: A port, amin a szerver figyel. [21]
	    * root_dir: Az FTP szerver felcsatolandó könyvtára. Megadható a bevezető / jel nélkül is (vagyis "home/duru", nem "/home/duru/"). [/]
	    * mount_point: A helyi könyvtár, amibe az FTP könyvtárat fel akarod csatolni.
	    * own: Jelzőbit minden távoli fájl tulajdonosi viszonyának jelzésére. Olyan FTP-knél hasznos, amik nem felhasználói neveket, hanem azonosítókat (UID) listáznak ki.
	    * uid: Annak a helyi felhasználónak az UID-je, akié lesz a felcsatolt könyvtár
	    * gid: A helyi csoport azonosítója, aki birtokolja a felcsatolt könyvtárat.
	    * fmask: A numerikus fájlmaszk, ami az összes felcsatolt fájléval VAGY kapcsolatban lesz.
	    * dmask: A numerikus könyvtármaszk, ami az összes felcsatolt könyvtáréval VAGY kapcsolatban lesz.
	    * active: Jelzőbit az aktív módú FTP forgalom jelzésére. Hasznos, ha valamilyen tűzfal mögött vagy, és nem tudsz véletlenszerűen kiválasztott portokhoz kapcsolódni.
          

Például: ftpmount mali@ftp.linuxnet.wox.org /mnt/ftpfs -uid=500 -gid=500 -dmask=555

Általában jó ötlet, ha nem adod meg paraméterként a jelszavadat, mivel az ftpmount úgyis kérdezni fogja.


9. A rendszermagról szóló könyvek és dokumentumok

A Linux-rendszermagról szóló könyveket találsz a következő helyeken:

A rendszermag készítésének bemutatása: Presentation of Kernel building process NBLUG Linux Seminars - Kernel Building Presentation Talks

Hivatkozások egyéb, a témába vágó HOGYANokra:


10. Információk a rendszermag fájljairól

Ez a rész "rövid áttekintést" és "bemutatást" tartalmaz a Linux-rendszermag egyes részeiről. Ha van időd, olvasd el.

Figyelmeztetés: nagyon elővigyázatosnak kell lenned ezekkel a fájlokkal, és nem szabad szerkeszteni vagy mozgatni/törölni/átnevezni őket.


10.1. vmlinuz és vmlinux

A "vm" azt jelenti "Virtuális Memória" ("Virtual Memory"). A Linux támogatja a virtuális memória használatát, szemben az olyan régi rendszerekkel mint a DOS. Annál a 640 kByte egy komoly korlát volt. A Linux képes virtuális memóriaként használni a merevlemezt, ezért "vm" a neve. A vmlinuz a rendszermag végrehajtható fájlja. Helye a /boot/vmlinuz könyvtár. Ez lehet egy szimbolikus hivatkozás valamire, például /boot/vmlinuz-2.4.18-19.8.0. A "make zImage" parancs készíti el a vmlinuz fájlt, és a "cp /usr/src/linux/arch/i386/linux/boot/zImage /boot/vmlinuz" paranccsal rakhatod a helyére. A vmlinuz a vmlinux tömörített változata. A zImage ezért visszamenőleg kompatibilis (a kisebb rendszermagok esetében). Megjegyzendő, hogy a közeljövőben megszűnhet a zImage, és előnyben részesül a "make bzImage" (big zImage; nagy zImage). A zImage (vmlinuz) nem csak egy tömörített fájl, de van benne egy beépített gzip-kicsomagoló is (a fájl elejében). Tehát nem lehet használni a gzip -dc és gunzip parancsokat a vmlinuz kicsomagolására.

A zImage és a bzImage egyaránt tömörített a gzip programmal. A rendszermagban van egy mini-gunzip, ami a rendszermag kicsomagolására és indítására szolgál. A különbség az, hogy a régi zImage az alsó memóriába (az első 640 kByte-ra), míg a bzImage a rendszermagot a felső memóriába csomagolja ki (1 MByte fölé).

A vmlinux a tömörítetlen rendszermag-fájl, a vmlinuz a tömörített, amit betölthetővé tettek. (Figyeld meg, hogy mindkét név hasonlóan néz ki, kivéve az utolsó z betűt). Általában nem kell törődnöd a vmlinux fájllal, ez csak egy közbenső lépés.

A rendszermag általában egy bzImage fájlt készít, eltárolja az arch/i386/boot könyvtárban, és a felhasználónak kell átmásolni azt a /boot könyvtárba, majd beállítani a GRUB vagy a LILO rendszerbetöltőt.


10.5. bzImage

A bzImage a "make bzImage" parancs által készített tömörített rendszermag-fájl, ami a fordítás során jött létre. Fontos megjegyezni, hogy a bzImage nincs tömörítve a bzip2 programmal!! A bz a bzImage nevében félrevezető!! A valódi jelentése "Big Zimage". A "b" jelentése a bzImage szóban "big". A zImage és a bzImage egyaránt a gzip metódusával van tömörítve. A rendszermagban van egy mini-gunzip, ami a rendszermag kicsomagolására és indítására szolgál. A különbség az, hogy a régi zImage az alsó memóriába (az első 640 kByte-ra), míg a bzImage a rendszermagot a felső memóriába csomagolja ki (1 MByte fölé). Az egyetlen ismert probléma az lehet, hogy néhány gépen nem működik a bzImage (mert a gép bugyuta). A bzImage jelenleg gyorsabban elindul mint a zImage, de nincs különbség a rendszer *futásának* sebességében. A szabály az, ha az összes meghajtóprogram (driver) nem fér bele a zImage fájlba, akkor moduláris rendszermagra van szükség.

Ha a rendszermag kicsi a zImage és bzImage is használható, az elindított rendszer ugyanúgy fut. A nagy rendszermag mint bzImage fog futni, nem mint egy zImage. Mindkét rendszerfájl a gzip metódussal tömörített (a bzImage nem a bzip metódussal van tömörítve, mint azt a neve sugallja), de különböző módon töltődnek be a memóriába. A rendszermag a felső memóriaterületre is betölthető, így nem korlátozza a memóriaméret a gyagya intel architektúrán. Miért létezik két módszer? Néhány régebbi lilo és loadlin rendszerbetöltő nem kezeli a bzImage formátumot. Megjegyzendő, hogy a *betöltés* különböző, de a *futás* azonos. Sok tévinformáció származott abból, hogy mi is a bzImage fájl (a legtöbb szerint bzip2 metódussal tömörített fájl).


10.6. module-info

A "module-info" fájl egy szimbolikus hivatkozás:

	$ uname -r
	2.4.18-19.8.0custom
	  
	# ls -l /boot/module-info*
	lrwxrwxrwx    1 root     root           25 Jan 26 10:44 /boot/module-info -> module-info-2.4.18-19.8.0
	-rw-r--r--    1 root     root        15436 Sep  4  2002 /boot/module-info-2.4.18-14
	-rw-r--r--    1 root     root        15436 Jan 26 01:29 /boot/module-info-2.4.18-19.8.0
        

A fentiekhez hozzátéve megjegyzendő, hogy nem kötelező module-info szimbolikus hivatkozást készíteni egy rendszermaghoz kapcsolódó fájlhoz, mint amilyen a System-map és vmlinuz fájlokhoz szükséges. Ez csak egy szöveges fájl, amely akkora, mint az aktuális module-info lista. Mielőtt eltávolítanád az összes RH rendszermaghoz szükséges "alapanyagot" a rendszeredről, készítened kellene egy mentést erről a fájlról:

# cp /boot/module-info-2.4.20-19.9 /boot/module-info-2.4.20-19.9.backup 
        
Ezt biztonságosabb a module-info fájlal megtenni, ritkán változnak ugyanazon RH rendszermagok változatán belül.

Ez a "module-info" fájl az anaconda/utils/modlist (speciális RedHat Linux Anaconda telepítőhöz) programmal készült. Egyéb Linux összeállításokban létezhet ennek megfelelő parancs. Tájékozódj a Linux disztribútorod kézikönyv oldalaiból.

Nézd meg a szkriptet és keress rá a "module-info" szóra updmodules .

Következik egy részlet a szkriptből:

	#!/bin/bash
	# updmodules.sh
		MODLIST=$PWD/../anaconda/utils/modlist
		MODINFO=$KERNELROOT/boot/module-info-$version
	-- kivágás
	bla-bla-bla 
	-- kivágás
	    # module-info fajl elkeszitese
	    $MODLIST --modinfo-file $MODINFO --ignore-missing --modinfo \
			$(ls *.o | sed 's/\.o$//') > ../modinfo
        

Az anaconda/utils/modlist program az anaconda-runtime*.rpm csomagban van a RedHat CD-ROM-on:

	cd /mnt/cdrom/RedHat/RPMS
	rpm -i anaconda-8.0-4.i386.rpm
	rpm -i anaconda-runtime-8.0-4.i386.rpm
	ls -l /usr/lib/anaconda-runtime/modlist
        
Beszerezheted a forráskódját (anaconda/utils/modlist.c) az anaconda*.src.rpm-ből a "http://www.rpmfind.net/linux/rpm2html/search.php?query=anaconda" webhelyről. Egyből olvashatod is: modlist.c .

A "module-info" a fordítás során készül el. Ez egy információs fájl, amit legalábbis akkor használnak, mialatt kitöltésre kerülnek a rendszermag megfelelő Oops jelentései. Ez egy lista a modulok belépési pontjairól. Ezen kívül a depmod is használja azon táblák felépítésénél, amiket az insmod és rokonsága használ. Függőségi információkat tartalmaz azokról a modulokról, amiket egy adott modul előtt be kell tölteni stb.

A lényeg az, hogy "Ne távolítsd el a module-info fájlt."

Néhány információ a module-info fájlról:

  • A rendszermag rpm fájlok tartalmazzák (az anaconda-runtime*.rpm építi fel)

  • Egy hivatkozás a module-info-{kernel-version} fájlhoz

  • Az összes hozzáférhető modulról tartalmaz információt (legalábbis azokról, amik benne vannak az alapértelmezett rendszermag beállításban).

  • Fontos az anaconda számára - az anaconda/utils/modlist parancsban.

  • A kudzu is használhatja, hogy felderítse a modulok alapértelmezett paramétereit, amikor elkészíti a bejegyzéseket az /etc/modules.conf fájlban. Ha használaton kívül helyezed a module-info fájlt, leállítod a gépet, beraksz egy új hálózati kártyát és újraindítasz, a kudzu hangosan reklamálni fog. Nézd meg a kudzu forráskódját.


10.9. System.map

A System.map egy "telefonkönyv-szerű" függvénylistája egy bizonyos lefordított rendszermagnak. Tipikusan egy szimbolikus hivatkozás az éppen futó rendszermag System.map fájljára. Ha rossz (vagy semmilyen) System.map fájlt használsz, az összeomlások nyomon követése nehezebb, de más hatása nincs. A System.map nélkül kisebb zavaró üzenetekkel kell szembesülnöd.

NE bántsd a System.map fájlokat.

	ls -ld /boot/System.map*
	lrwxrwxrwx    1 root     root           30 Jan 26 19:26 /boot/System.map -> System.map-2.4.18-19.8.0custom
	-rw-r--r--    1 root     root       501166 Sep  4  2002 /boot/System.map-2.4.18-14
	-rw-r--r--    1 root     root       510786 Jan 26 01:29 /boot/System.map-2.4.18-19.8.0
	-rw-r--r--    1 root     root       331213 Jan 25 22:21 /boot/System.map-2.4.18-19.8.0BOOT
	-rw-r--r--    1 root     root       503246 Jan 26 19:26 /boot/System.map-2.4.18-19.8.0custom
        

Hogyan készül a rendszermag szimbólumtáblája (Kernel Symbol Table)? A System.map fájlt az "nm vmlinux" készíti el, és a nem fontos vagy érdeklődésre számot nem tartó szimbólumokat kiszedi a grep. Amikor lefordítod a rendszermagot, a System.map fájl az /usr/src/linux/System.map fájlba kerül. Valahogy így:

	nm /boot/vmlinux-2.4.18-19.8.0 > System.map
	# Ez egy sor az /usr/src/linux/Makefile fájlból 
	nm vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
	cp /usr/src/linux/System.map /boot/System.map-2.4.18-14   # For v2.4.18
        

Forrás: "http://www.dirac.org/linux/systemmap.html"


10.9.5. Mi az Oops?

Mi a leggyakoribb hiba a házilag készült programjaiddal? A szegmentációs hiba (segfault). A jó öreg signal 11.

Mi a Linux-rendszermag leggyakoribb hibája? A segfault. Itt azonban a segfault fogalma sokkal összetettebb, és ahogy az várható sokkal komolyabb. Amikor a rendszermag egy hibás mutatóra hivatkozik, azt nem segfault-nak hívjuk - ezt hívják "oops"-nak. Egy ilyen oops rendszermag-hibát jelez, mindig jelenteni és javítani kell.

Figyeld meg, hogy az oops nem ugyanaz a dolog, mint a segfault. A programod nem tud kijönni egy segfault-ból. A rendszermag viszont nem szükségszerűen kerül instabil állapotba, ha egy oops fordul elő. A rendszermag nagyon robusztus; az oops csak az aktuális folyamatot öli meg, a rendszermag többi részét megfelelően jó állapotban hagyhatja.

Az oops nem egyenlő a rendszermag pánikkal (kernel panic). Pánik alkalmával a rendszermag nem tud tovább futni; a rendszer halt állapotba zuhan és újra kell indítani. Egy oops akkor okozhat pánikot, ha a rendszer egy életfontosságú része semmisül meg. Egy oops valamely eszközvezérlőben például majdnem sosem okoz pánikot.

Amikor egy oops előfordul, a rendszer a hibakereséshez elengedhetetlen információt nyomtat ki, mint például a CPU összes regiszterének tartalmát és az oldalleíró táblák (page descriptor tables) helyét. Főleg az EIP (utasítás mutató) tartalma íródik ki. Mint ez itt:

	   EIP: 0010:[<00000000>]
	   Call Trace: [<c010b860>]
          


10.9.6. Mit köze egy oops-nak a System.map fájlhoz?

Egyetérthetsz azzal, hogy az EIP-ben adott információ és a nyomkövetési adatok nem valami információgazdagok. Ennél is fontosabb, hogy még a rendszermag fejlesztőinek sem azok. Mivel a szimbólumnak nincs fix címe, a c010b860 mutathat bárhova.

Ahhoz, hogy használhassuk ezeket a titkosított oops-kimeneteket, a Linux egy klogd nevű démont használ, a rendszermag naplózó démont. A klogd elfogja a rendszermag oops-ait és a syslog segítségével naplózza, kicserélve néhány haszontalan információt, mint a c010b860 olyanra, amit ember is tud használni. Más szóval, a klogd egy rendszermag-üzenet naplózó, ami név-cím feloldást tud végezni. Amint átalakítja a rendszermag üzeneteit, egy olyan naplózót használ, ami a rendszerszintű üzeneteket tudja naplózni, általában a syslogd démont.

A név-cím feloldáshoz a klogd a System.map fájlt használja. Most már tudod, mi az oops és mi köze a System.map fájlhoz.

Megjegyzések: Jelenleg kétféle címfeloldást végez a klogd.

a System.map fájlt, ezért nem fontos ennek tárgyalásánál, de azért röviden ismertetem.

A klogd dinamikus fordítása

Tegyük fel, hogy betöltöttél egy rendszermag-modult, ami oops-ot idézett elő. Egy oops üzenet készült és a klogd elfogta. Azt találta, hogy az oops a d00cf810-nál fordult elő. Mivel ez a cím egy dinamikusan betöltött modulhoz tartozik, nincs bejegyzés hozzá a System.map fájlban. A klogd keresi, de nem talál semmit így arra következtet, hogy egy betölthető modul generálta az üzenetet. A klogd ezután lekérdezi a rendszermagot olyan szimbólumokért, amiket a betölthető modulok exportáltak. Még ha a modul szerzője nem exportálta is a szimbólumokat, legalább a klogd tudni fogja, melyik modul idézte elő az oops-ot, ami jobb, mint semmit sem tudni az oops-ról.

Más programok is használják a System.map fájlt és rövidesen ezzel is foglalkozom.


10.9.7. Hol kellene lennie a System.map fájlnak?

A System.map bárhol lehet, ahol az őt használó szoftverek keresik. Most beszéljünk arról, hogy a klogd hol keresi. Az induláskor, ha a klogd nem kapta meg argumentumként a System.map helyét, akkor három helyen keresi a következő sorrendben:

  1. /boot/System.map

  2. /System.map

  3. /usr/src/linux/System.map

A System.map ezenkívül verzió-információkat is tartalmaz, és a klogd intelligens módon a megfelelő map (térkép)fájlt keresi meg. Például, ha a 2.4.18-as rendszermagot futtatod és a hozzá társított fájl a /boot/System.map. Most fordítasz egy új 2.5.1-es rendszermagot az /usr/src/linux fán belül. A fordítási folyamat közben elkészül az /usr/src/linux/System.map fájl. Amikor elindítod az új rendszermagot, a klogd először megnézi a /boot/System.map-et, megállapítja, hogy ez nem a futó rendszermagnak megfelelő térképfájl, ezután megnézi az /usr/src/linux/System.map-et, megállapítja, hogy ez a megfelelő, és elkezdi olvasni a szimbólumokat.

Néhány megjegyzés:

  • Valahol a 2.5.x szérián belül, a Linux-rendszermag elkezdett Linux-verziószám formában kicsomagolódni a tar archívumból, a sima linux helyett (kezeket fel: hányan vártuk már, hogy ez megtörténjen?) Nem tudom, hogy a klogd démont módosították-e már úgy, hogy az /usr/src/linux-verzió/System.map fájlt keresse. TENNIVALÓ: nézd meg a klogd forrását. ?? FIXME ?? Ha valaki megver is ezért, kérlek küldj e-mailt, és tudasd, hogy módosították-e a klogd-t úgy, hogy a forráskód új nevű könyvtárában keressen. ??FIXME??

  • A kézikönyv oldal nem ír le mindent. Nézd meg ezt:


	   # strace -f /sbin/klogd | grep 'System.map'
	   31208 open("/boot/System.map-2.4.18", O_RDONLY|O_LARGEFILE) = 2
          

Kétségtelen, hogy a klogd nemcsak a 3 keresési könyvtárban nézi meg a térképfájl megfelelő verzióját, de tudja azt is, hogy a "System.map" nevet követő "-kernelverzó"-t nézze, mint a System.map-2.4.18. Ez a klogd egy nem dokumentált képessége.

Néhány meghajtónak szüksége van a System.map-re a szombólumok feloldásához (mivel a rendszermag fejlécfájljaihoz lettek linkelve, és nem mondjuk a glibc-éihez). Ezek nem fognak jól működni a futó rendszermaghoz készült megfelelő System.map fájl nélkül. Ez NEM ugyanaz a dolog, mint hogy egy modul nem töltődik be a rendszermag verziószámának eltérése miatt. Ezt a rendszermag-verzió jelzésével kell megoldani, nem a szimbólumtáblával, ami változik az ugyanolyan verziójú rendszermagokon belül is!


11. Linux rendszer-adminisztrációs eszközök

Két igazán jó adminisztrációs eszköz létezik Linuxra, ezek a Linuxconf és a Webmin.

Linux rendszer-adminisztrációs eszközök:

Linux rendszer-adminisztrációval kapcsolatos felhasználói kézikönyvek:

Rendszer-adminisztrációs System Administration magazin:

Linux rendszer-adminisztrációs tanfolyamok:


12. Telepítés, frissítés fénysebességgel, az apt-get segítségével (Redhat, Debian, Suse, Mandrake, egyéb)

Automatizálható a Linux rendszer karbantartása egy olyan használható segédprogrammal, mint az apt-get. Az apt-get roppant hatékony, világszerte milliónyi linuxos gépen használják. Az apt-get RedHat és Debian Linux alapokon működik. Az RPM és Deb csomagokat támogató disztribúciókon használható. A disztribúciók legtöbbjén használható; ha mégsem, nagyon könnyen átszabhatod a forráskódját. A Mandrake-ben használt eszköznek urpmi a neve.

Többet szeretnél tudni az apt-get parancsról? Csak nézd meg a súgóját a következő bash shell-ben kiadott paranccsal:

		$ apt-get -h  | more
			  
		apt 0.5.5cnc6 for linux i386 compiled on Jul 19 2003 21:23:24
		Usage: apt-get [options] command
			   apt-get [options] install|remove pkg1 [pkg2 ...]
			   apt-get [options] source pkg1 [pkg2 ...]
			  
		apt-get is a simple command line interface for downloading and
		installing packages. The most frequently used commands are update
		and install.
			  
		Commands:
		   update - Retrieve new lists of packages
		   upgrade - Perform an upgrade
		   install - Install new packages (pkg is libc6 not libc6.rpm)
		   remove - Remove packages
		   source - Download source archives
		   build-dep - Configure build-dependencies for source packages
		   dist-upgrade - Distribution upgrade, see apt-get(8)
		   clean - Erase downloaded archive files
		   autoclean - Erase old downloaded archive files
		   check - Verify that there are no broken dependencies
			  
		Options:
		  -h  This help text.
		  -q  Loggable output - no progress indicator
		  -qq No output except for errors
		  -d  Download only - do NOT install or unpack archives
		  -s  No-act. Perform ordering simulation
		  -y  Assume Yes to all queries and do not prompt
		  -f  Attempt to continue if the integrity check fails
		  -m  Attempt to continue if archives are unlocatable
		  -u  Show a list of upgraded packages as well
		  -b  Build the source package after fetching it
		  -D  When removing packages, remove dependencies as possible
		  -c=? Read this configuration file
		  -o=? Set an arbitary configuration option, eg -o dir::cache=/tmp
		See the apt-get(8), sources.list(5) and apt.conf(5) manual
		pages for more information and options.
							   This APT has Super Cow Powers.
	  

A kézikönyv oldal a következő módon tekinthető meg:

			man apt-get
	  In the bottom of manual page, look at "See Also" section
			man apt.conf
			man apt-cache
			man apt-cdrom
	  

Egy példa az apt-get használatára:

			apt-get -f  upgrade postgresql-contrib
			apt-get  upgrade postgresql-contrib
			apt-get  install postgresql-contrib
			apt-get  install gaim
			apt-get dist-upgrade
		


13. Haladóknak szóló témák - A Linux rendszerindítási folyamata

Ez a rész nem igazán érdekes az átlagos "Józsi, otthoni PC-felhasználó" számára, inkább irányul azok felé, akik számítógép-tudományos háttérrel rendelkeznek.

A betöltési folyamat a következő: CPU-> VGA-> Power-On-Self-Test-> SCSI-> Boot Manager-> Lilo boot loader-> kernel-> init-> bash. A firmware és szoftver programok különböző üzeneteket adnak, amikor a számítógép és a Linux életre kel.

A Linux betöltési folyamatának részletes bemutatása:

  1. Az alaplapon lévő BIOS előidézi a videokártya BIOS inicializálását

  2. Az alaplapon lévő BIOS inicializálja önmagát

  3. Az SCSI vezérlőn lévő BIOS inicializálja önmagát

  4. Hardveres összegzés: az alaplapi BIOS ezután kiírja a következő összegzést a hardver tartalmáról. Majd futtatja a vírusellenőrző kódját, ami megváltozott indítószektorokat (boot sector) keres (ha engedélyezve van - a lektor).

  5. BootManager menü : a Master Boot Record (MBR) kiolvasásra kerül az első merevlemezen, a DOS hagyományaihoz híven, a 0x00007c00 címre, és a processzor elkezdi végrehajtani az ott leírt utasításokat. Ez az MBR betöltőkód beolvassa az aktív DOS partíció első szektorában lévő kódot.

  6. A Lilo elindul: ha a Linuxot választottad és ha azt a LILO-val telepítetted, akkor betöltődik a 0x00007c00 címre. A Lilo kiírja a LILO üzenetet az előrehaladásáról, egyenként írva ki a betűket. Az első "L" betűt akkor írja ki, miután a Lilo átmozgatta magát egy jobb helyre, mint például a 0x0009A000 címre. Az "I" jelenik meg, mielőtt elkezdené a másodszintű betöltőkódját. A másodszintű betöltő írja ki a következő "L"-t, betölti a rendszermag részeire mutató leírókat, és végül kiírja a végső "O" betűt. A leírók a 0x0009d200 címen helyeződnek el. A rendszerindítási üzenet és a parancssor, ha úgy adták meg, kiíródik. A "tab" megnyomása a promptnál teszi lehetővé, hogy a felhasználó rendszert válasszon, és parancssori opciókat adjon át a rendszermagnak, a meghajtóinak és az "init" programnak. Ezen kívül környezeti változók is megadhatók ennél a pontnál.
    
A következő sor a /boot/message fájlból származik:
    >
    >
    >
     Press  to list available boot image labels. 
     (Nyomj Tab-ot a kiválasztható rendszerindító fájlok (boot image) címkéinek megtekintéséhez)
    A következő sor az /sbin/lilo promptjából származik:
    boot:
    Figyelem: ha a Lilo-t nem használjuk, akkor a rendszermag elejébe, 
    a linux/arch/i386/boot/bootsect.S-be épített kód kiírja a "Loading" 
    üzenetet és folytatja.
    A Lilo kiírja a következőt, amint tölti be a rendszermag kódját. 
    A "Linux-2.2.12" szöveget a "label=..." megadásából veszi a lilo.conf-ból.
    Loading linux-2.2.12..........
    		

  7. A /linux/arch/i386/boot/setup.S fájlban található rendszermag-kód végzi el az átkapcsolást a processzor valós (DOS) módjából a védett (teljes 32 bites) üzemmódba. A Trampoline.S és Trampoline32.S nevű kódrészek segítik az átkapcsolást. A kisebb rendszermag fájlok (zImage) kitömörítődnek, és betöltődnek a 0x00010000 címre. A nagyobb fájlok (bzImage) ehelyett a 0x00100000 címre töltődnek. Ez a kód állítja be a regisztereket, kicsomagolja a tömörített rendszermagot (aminek az elején a linux/arch/i386/head.S található), kiírja a következő két sort a linux/arch/i386/boot/compressed/misc.c fájlból:
    
Uncompressing Linux... Ok. 
    Booting the kernel. 
    	    
    Az i386-specifikus setup.S most már bevégezte dolgát, és elugrik a 0x00010000 (vagy 0x00100000) címre, hogy elindítsa az általános Linux kódot.

  8. Init Program (Process 1) Startup : The program /sbin/init is started by the "idle" process (Process 0) code in linux/init/main.c and becomes process 1. /sbin/init then completes the initialization by running scripts and forking additional processes as specified in /etc/inittab. It starts by printing: INIT: version 2.76 booting and reads /etc/inittab.

  9. A Bash parancsértelmező indulása: a bash shell, a /bin/bash indul el ezek után. A feléledése az /etc/profile szkript végrehajtásával kezdődik, ami beállítja a rendszerszintű környezeti változókat:


13.1. Hivatkozások a betöltési folyamat témájában

Nézd meg a következő forrásokat:


14. Eme dokumentum más formátumai

Ezt a fejezetet Al Dev írta, (a "http://milkyway.has.it" és a "http://www.milkywaygalaxy.freeservers.com" webhelyen, tükrözései megtalálhatók a angelfire , geocities , virtualave , Fortunecity , Freewebsites , Tripod , 101xs és 50megs webhelyeken)

Ezt a dokumentumot 14 különböző formátumban terjesztik, ezek a következők: DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF (Rich Text Format), egyszerű szöveg, Unix man oldal, egyoldalas HTML fájl, SGML (Linuxdoc formátum), SGML (Docbook formátum), MS WinHelp formátum.

A dokumentum megtalálható a

A következő tüköroldalakon is megtalálhatod ezt a dokumentumot:

(Ez a rész mára elavult - a lektor) A dokumentum az "SGML-Tools" nevű eszköz segítségével készült, amely letölthető a "http://www.sgmltools.org" webhelyről. A forrás lefordítása után a következő parancsot használhatod a konvertáláshoz:


14.1. Acrobat PDF formátum

PDF fájlt a postscript fájl felhasználásával lehet készíteni, vagy az acrobat distill illetve Ghostscript segítségével. A postscript fájlt DVI-ből lehet elkészíteni, ami viszont közvetlenül LaTex fájlból készül. A distill szoftver letölthető a "http://www.adobe.com" webhelyről. Alább egy egyszerű példa látható:

	bash$ man sgml2latex
	bash$ sgml2latex filename.sgml
	bash$ man dvips
	bash$ dvips -o filename.ps filename.dvi
	bash$ distill filename.ps
	bash$ man ghostscript
	bash$ man ps2pdf
	bash$ ps2pdf input.ps output.pdf
	bash$ acroread output.pdf &
        
Esetleg használhatod a következő Ghostscript parancsot: ps2pdf . A ps2pdf hasonlóan működik mint az Adobe Acrobat Distiller program, és majdnem minden funkcióját tudja: konvertálja a PostScript fájlokat Portable Document Format (PDF) formátumba. A ps2pdf konvertálást egy nagyon kicsi parancsszkriptben (batch fájlban) valósították meg, ami meghívja a GhostScript programot, kiválasztva egy speciális "kimeneti eszközt", amely a pdfwrite . A ps2pdf használatához a pdfwrite eszközt be kell szúrni a Makefile-ba, a GhostScript programfordításakor; olvasd a fordítási dokumentációt továbi részletekért.


14.4. A különböző formátumok olvasása

A dokumentum dvi formátumban történő olvasásához használd az xdvi programot. Az xdvi a tetex-xdvi*.rpm csomagban van a RedHat Linuxban, amit meg lehet találni a Control Panel | Applications | Publishing | TeX menüpontokon keresztül. Az olvasáshoz add ki a

          xdvi -geometry 80x90 howto.dvi man xdvi 
        
parancsot. Méretezd át az ablakot egérrel. A navigáláshoz használd a nyílbillentyűket, a Page Up/Down gombokat, de az "f", "d", "u", "c", "l", "r", "p", "n" billentyűket is a fel/le mozgáshoz, középre igazításhoz, következő/előző oldal kéréséhez stb. A haladó menü kikapcsolásához nyomj "x"-et.

A postscript fájlt a "gv" (ghostview) vagy a "ghostscript" programmal nézheted meg. A ghostscript program a ghostscript*.rpm csomagban van, a gv pedig a gv*.rpm-ben a RedHat Linux alatt, ami elérhető a ControlPanel | Applications | Graphics menüpontokon keresztül. A gv program sokkal felhasználóbarátabb, mint a ghostscript. Ezenkívül a ghostscipt és a gv is elérhető más platformokon, mint OS/2, Windows 95 és NT, még ezeken is megnézheted ezt a doksit.

A postscipt dokumentum olvasásához add ki a

          gv howto.ps ghostscript howto.ps 
        
parancsot.

A HTML formátumú doksit olvashatod a Netscape Navigator, Microsoft Internet explorer, Redhat Baron és vagy 10 másik böngészőprogram segítségével.

A latex, LyX kimenet olvasásához használd a LyX X-Window előtétprogramot a latex programmal.


15. "A" függelék - initrd.img fájl készítése

Az initrd az "initial ramdisk" (kezdeti RAM-lemez) rövidítése. Egy RAM-lemezen elegendő fájl fér el a szükséges eszközmeghajtók tárolásához. Ezek a meghajtók kellenek ahhoz, hogy a rendszermag fel tudja csatolni a / könyvtárat, és el tudja indítani az init-et. Az initrd-t tipikusan a hardver átmeneti "beindítására" használjuk, ezután a valódi rendszermag (vmlinuz) folytatja a betöltési folyamatot. Például, ha a rendszermag nem tudja olvasni az scsi merevlemezt az scsi eszközmeghajtó betöltése előtt. (Megoldás: tölts be egy initrd rendszermagot, amely majd betölti az igazi rendszermagot és használd az initrd-t az scsi betöltési problémájának megoldására.)

Megszabadulhatsz az "initrd.img" fájltól és nem szükséges akkor, ha az SCSI eszközvezérlőket fixen a rendszermagba fordítod, nem pedig modulba rakod. (Sokan ajánlják ezt).


15.3. Linuxman Book

Egy részlet a "http://www.linuxman.com.cy/rute/node1.html" 31.7. fejezetéből.

Az SCSI telepítésének buktatói és az initrd

A következő leírás némelyike nehezen lesz érthető anélkül, hogy tudnál valamit a rendszermag-modulokról, amiket a 42. fejezetben mutat be. Később térj vissza erre a fejezetre.

Képzeljünk el egy rendszert, amiben egyetlen IDE lemez sincs, csak egy SCSI lemez tartalmazza a telepített Linuxot. Vannak az SCSI lemezt olvasó BIOS megszakítások, ugyanúgy, mint az IDE-hez, tehát a LILO vígan hozzá tud férni egy SCSI partíción lévő rendszermaghoz. Azonban a rendszermag "el fog veszni" a rendszermag-modulok nélkül [lásd 42. fejezet. A rendszermag magától nem tudja az összes létező hardver elemet támogatni. Ez általában egy fő részre (a rendszermag fájlra, amit ebben a fejezetben tárgyalunk) és modulok százaira (betölthető részek, amik a /lib/modules alatt találhatók) tagolható szét [ amik támogatják a sokféle típusú SCSI, hálózati, hangeszközt stb. ], amely képes vezérelni azt a bizonyos SCSI meghajtót. Így bár a rendszermag be tud töltődni és el tud indulni, de nem tudja felcsatolni a gyökér fájlrendszert az SCSI modul előzetes betöltése nélkül. Viszont a modul maga a gyökér fájlrendszeren foglal helyet a /lib/modules-ban. Ez egy trükkös helyzet, és kétféle módon lehet megoldani: (a) vagy előre engedélyezett (preenabled) SCSI támogatású rendszermagot, vagy (b) egy initrd előzetes gyökér fájlrendszernek nevezett fájlt használunk.

Az első módszert ajánlom. Magától értetődő (bár időigényes) folyamat egy olyan rendszermag elkészítése, ami beépített támogatást nyújt az SCSI kártyádhoz (és nem egy külön modulban). A beépített SCSI és hálózati meghajtók legtöbbször automatikus detektálást is végeznek, lehetővé téve az eszközhöz való időközbeni hozzáférést - mindenféle kapcsoló megadása nélkül működnek. [lsqb ] A 42. fejezet tárgyalja.] és ami még fontosabb, anélkül, hogy olvasnod kéne a beállításukról. Ennek befordított hardvertámogatás a neve (a modulos támogatással szemben). Az így készült rendszermag a modul méretével lesz nagyobb. A 42. fejezet taglalja az ilyen fajta programfordítást.

A második módszer gyorsabb, de trükkösebb. A Linux támogat egy olyan dolgot, amit initrd (initial RAM disk) néven ismernek. Ez egy kicsi, +1.5 MB méretű fájlrendszer, amit a LILO tölt be, és a rendszermag a valódi gyökér fájlrendszer helyett csatol fel. A rendszermag RAM-lemezként csatolja fel ezt a fájlrendszert, végrehajtja a /linuxrc fájlt, majd felcsatolja a valódi fájlrendszert.

31.6 fejezet initrd fájl készítése

Kezdjük egy kis fájlrendszer elkészítésével. Készíts egy könyvtárat [nbsp ]/initrd néven és másold át a következő fájlokat oda:


	drwxr-xr-x    7 root     root         1024 Sep 14 20:12 initrd/
	drwxr-xr-x    2 root     root         1024 Sep 14 20:12 initrd/bin/
	-rwxr-xr-x    1 root     root       436328 Sep 14 20:12 initrd/bin/insmod
	-rwxr-xr-x    1 root     root       424680 Sep 14 20:12 initrd/bin/sash
	drwxr-xr-x    2 root     root         1024 Sep 14 20:12 initrd/dev/
	crw-r--r--    1 root     root       5,   1 Sep 14 20:12 initrd/dev/console
	crw-r--r--    1 root     root       1,   3 Sep 14 20:12 initrd/dev/null
	brw-r--r--    1 root     root       1,   1 Sep 14 20:12 initrd/dev/ram
	crw-r--r--    1 root     root       4,   0 Sep 14 20:12 initrd/dev/systty
	crw-r--r--    1 root     root       4,   1 Sep 14 20:12 initrd/dev/tty1
	crw-r--r--    1 root     root       4,   1 Sep 14 20:12 initrd/dev/tty2
	crw-r--r--    1 root     root       4,   1 Sep 14 20:12 initrd/dev/tty3
	crw-r--r--    1 root     root       4,   1 Sep 14 20:12 initrd/dev/tty4
	drwxr-xr-x    2 root     root         1024 Sep 14 20:12 initrd/etc/
	drwxr-xr-x    2 root     root         1024 Sep 14 20:12 initrd/lib/
	-rwxr-xr-x    1 root     root           76 Sep 14 20:12 initrd/linuxrc
	drwxr-xr-x    2 root     root         1024 Sep 14 20:12 initrd/loopfs/
        

Az én rendszeremen, a initrd/bin/insmod fájl statikusan linkelt [ami azt jelenti, hogy nem igényel megosztott könyvtárakat ], a /sbin/insmod.static fájlból - ez a modutils-2.3.13 csomag része. Az initrd/bin/sash egy statikusan linkelt parancsértelmező a sash-3.4 csomagból. Az insmod-ot újra is fordíthatod forrásból, ha nincs statikus verziód. Esetleg másold be a szükséges DLL-eket a /lib-ből az initrd/lib könyvtárba. (A szükséges DLL-ek listáját megkapod, ha az "ldd /sbin/insmod" parancsot kiadod. Ne felejtsd el átmásolni a szimbolikus linkeket sem, valamint futtatni a "strip -s {lib}" parancsot, a DLL-ek méretének csökkentéséhez.

Most másold át az initrd/lib/ könyvtárba a szükséges SCSI modulokat. Például, ha egy Adaptec AIC-7850 SCSI adaptered van, akkor az aic7xxx.o modul kell a /lib/modules/{version}/scsi/aic7xxx.o fájlokból. Ezek után rakd be ezt a initrd/lib/ könyvtárba.


	-rw-r--r--    1 root     root       129448 Sep 27  1999 initrd/lib/aic7xxx.o
        

Az initrd/linuxrc fájlnak egy szkriptet kell tartalmaznia, hogy betöltse az összes modult a rendszermag számára, hogy hozzáférhessen az SCSI partícióhoz. Ebben az esetben, csak az aic7xxx modul kell [ az insmod az eszköz IRQ-ira és IO-címeire vonatkozó paramétereket is megkaphat, lásd a 42. fejezetet.]:


	#!/bin/sash
	 
	aliasall
	 
	echo "Loading aic7xxx module"
	insmod /lib/aic7xxx.o 
        

Alaposan ellenőrizd az összes jogosultságot, majd futtasd a chroot parancsot a fájlrendszer teszteléséhez.


	chroot ~/initrd /bin/sash
	/linuxrc
        

Ezután készíts egy "fájlrendszer-fájlt" (file system image), hasonlóan a 19.9 fejezetben leírtakhoz:

	dd if=/dev/zero of=~/file-inird count=2500 bs=1024
	losetup /dev/loop0 ~/file-inird
	mke2fs /dev/loop0
	mkdir ~/mnt
	mount /dev/loop0 ~/mnt
	cp -a initrd/* ~/mnt/
	umount ~/mnt
	losetup -d /dev/loop0
        

Végül tömörítsd össze a fájlrendszert a gzip programmal, valamilyen néven:

	gzip -c ~/file-inird > initrd-<kernel-version>
        

31.7 fejezet A lilo.conf módosítása az initrd használatához

A lilo.conf fájlt annak megfelelően kell megváltoztatni, hogy az initrd fájlrendszert töltse be. Egyszerűen add hozzá az initrd kapcsolót. Például:


	boot=/dev/sda
	prompt
	timeout = 50
	compact
	vga = extended
	linear
	image = /boot/vmlinuz-2.2.17
	        initrd = /boot/initrd-2.2.17
	        label = linux
	        root = /dev/sda1
	        read-only
        

Figyeld meg a "linear" kapcsoló használatát. Ez egy BIOS trükk, amiről a lilo(5) kézikönyv oldalán olvashatsz. Ez gyakran szükséges, viszont azt eredményezheti, hogy az SCSI lemezek nem lesznek átvihetők különböző BIOS-al rendelkező gépekre (azt jelenti, hogy újra le kell futtatni a lilo-t, ha egy másik gépbe rakod át a lemezt).


16. "B" függelék - lilo.conf mintafájl

16.1. LILO forrásanyagok

A következő dokumentumokban olvashatsz a témáról:


16.2. LILO hibaelhárítás

A csipogó (beeper) hibakód-táblázata:

2 rövid csipogás: a POST nem megfelelő. Hiba a hardver tesztben. 1 rövid és 2 hosszú csipogás: video hiba. 1) Video ROM BIOS, paritás hiba. 2) Probléma a videokártya vízszintes visszatérésével. 1 hosszú és 3 rövid csipogás: video hiba. 1) videokártya hiba. 2) a monitor hibás detektálása. 3) Video RAM hiba. 1 hosszú csipogás: a POST rendben lefutott. Ha a POST-ban hiba lép fel, akkor hardverprobléma van. Ellenőrizd a bővítőkártyák érintkezését

A témáról olvashatsz a http://www.preggers.easynet.be/lilo.html honlapon.

Ha a LILO-val vannak problémák, olvasd el a következő tippeket. Ha a betöltés közben a "L0101010101010101 ...." hibával találkozol, akkor a következőket tedd:

  • A kedvenc szövegszerkesztőddel nyisd meg a /etc/lilo.conf fájlt:
    
# keresd meg a következő sort:
    linear
    # tegyél elé megjegyzés jelet (kettős keresztet - a lektor), hogy így nézzen ki:
    # linear
    Mentsd el és futtasd a lilo-t.
          

  • A boot-partíciónak a 8GB-os határon belül kell lennie. Ha problémád van, olyan programokkal, mint a Partition Magic vagy a Mandrake-féle DiskDrake, könnyen orvosolhatod.

  • A 01 a DRAM frissítési hiba. Ha csak szimplán "L 01"-et látsz, indíts újra a gépet a CTRL+ATL+DEL kombinációval (viszont ne kapcsold ki a gépet, csak CTRL+ATL+DEL-t nyomj). Ez javíthatja a problémát.


17. "C" függelék - GRUB részletesen, grub.conf mintafájl

17.1. GRUB forrásanyagok

Olvasd a


	bash# man grub
	bash# man grubby   # (parancssoros eszköz a grub, lilo, és elilo beállításához)
	bash# man grub-install
      
Szerkeszd az /etc/grub.conf fájlt, az új rendszermagok bejegyzéseinek létrehozásához. Lásd az alábbi mintafájlt:


17.2. GRUB tippek

A RedHat Linuxban a grub képernyőjénél állva nyomj egy c-t a parancssori kapcsolók megtekintéséhez:

	A Linux betöltéséhez tedd ezt:
    grub> help
	  
    grub> root
        (hd1,1): Filesystem is type ext2fs, partition type 0x83
    grub> root (hd1,0)
	  
    grub> kernel / <Nyomj-TAB-ot>
    Kilistázza az összes fájlt.
	  
    grub> kernel /boot <Nyomj-TAB-ot>
    Kilistázza a /boot könyvtár tartalmát.
	  
    grub> kernel /boot/vmlinuz
	  
    grub> boot
      

Erről a GRUB Manual (GRUB kézikönyv) dokumentációban is olvashatsz. A MS Windows 95/2000 stb. betöltéséhez tedd ezt: ha nem támogatott operációs rendszert (például Windows 95) akarsz betölteni, csinálj betöltési láncot (chain-load) az operációs rendszer betöltőjéhez. Normál esetben a rendszerbetöltőt annak a partíciónak a boot szektora tartalmazza, amelyikre az operációs rendszert telepítettük.

	grub> help
	grub> help rootnoverify
	grub> rootnoverify (hd0,0)
	grub> makeactive
	grub> chainloader +1
	grub> boot
      


17.3. Egy GRUB beállítófájl minta


	# grub.conf generated by anaconda
	#
	# Figyeld meg, hogy nem kell ujrafuttatni a grub-ot, ha valtoztatsz a fajlon
	# FIGYELEM: nincs /boot particiod. Ez azt jelenti, hogy minden rendszermag es
	# initrd utvonal a / könyvtárhoz viszonyitott, például: 
	#          root (hd0,8)
	#          kernel /boot/vmlinuz-version ro root=/dev/hda9
	#          initrd /boot/initrd-version.img
	#boot=/dev/hda
	# Alapertelmezesben a masodik bejegyzes inditasa.
	default=1
	# Az elso bejegyzes a biztonsagi tartalek.
	fallback 0
	# Automatikus betoltes 2 perc elteltevel.
	timeout=120
	splashimage=(hd0,8)/boot/grub/splash.xpm.gz
	title Windows 2000 
	unhide (hd0,0)
	hide (hd0,1)
	hide (hd0,2)
	rootnoverify (hd0,0)
	chainloader +1
	makeactive
	title Red Hat Linux (2.4.18-19.8.0.19mar2003)
		root (hd0,8)
		kernel /boot/bzImage.2.4.18-19.8.0.19mar2003 ro root=LABEL=/ hdd=ide-scsi
		initrd /boot/initrd-2.4.18-19.8.0custom.img.19mar03
	title Red Hat Linux (2.4.18-19.8.0custom)
		root (hd0,8)
		kernel /boot/vmlinuz-2.4.18-19.8.0custom ro root=LABEL=/ hdd=ide-scsi
		initrd /boot/initrd-2.4.18-19.8.0custom.img
	title Red Hat Linux (2.4.18-14)
		root (hd0,8)
		kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ hdd=ide-scsi
		initrd /boot/initrd-2.4.18-14.img
	title MyKernel.26jan03 (Red Hat Linux 2.4.18-14)
		root (hd0,8)
		kernel /boot/bzImage.myker.26jan03 ro root=LABEL=/ hdd=ide-scsi
		initrd /boot/initrd-2.4.18-19.8.0.img
	title Windows 98
	hide (hd0,0)
	hide (hd0,1)
	unhide (hd0,2)
	rootnoverify (hd0,2)
	chainloader +1
	makeactive
	title DOS 6.22
	hide (hd0,0)
	unhide (hd0,1)
	hide (hd0,2)
	rootnoverify (hd0,1)
	chainloader +1
	makeactive
	title Partition 2 (floppy)
	hide (hd0,0)
	unhide (hd0,1)
	hide (hd0,2)
	chainloader (fd0)+1
	title Partition 3 (floppy)
	hide (hd0,0)
	hide (hd0,1)
	unhide (hd0,2)
	chainloader (fd0)+1
      


18. "D" függelék - utólagos rendszermag fordítás

Miután sikeresen felépítettük (build) és betöltöttük a Linux-rendszermagot, a következő kiegészítő lépésekre azért van szükség, hogy bizonyos eszközöket működésre bírjunk Linux alatt. (Az alábbi lépéseket RedHat Linuxon teszteltük, de más terjesztésekkel is működnie kell.)

Videokártya/Monitor beállítása:

Ha a legújabb Linuxot (2.4 vagy későbbi) használod, kattints a KDE/GNOME munkaasztalon belül a Start->"System Settings"->Display menüpontra.

A Linux régebbi verzióinál kövesd az alábbi lépéseket:

A videokártyát és a monitort a következő parancsokkal állíthatod be:

	bash$ su - root
	bash# man Xconfigurator
	bash# /usr/bin/X11/Xconfigurator --help
	bash# /usr/bin/X11/Xconfigurator 
	bash# /usr/bin/X11/Xconfigurator --expert
	See also:
	bash# man xf86config
	bash# /usr/bin/X11/xf86config
      
Ha a kártyádat nem ismerte fel automatikusan a rendszer, akkor használhatod a --expert opciót, és válaszd az "Unlisted card" (fel nem sorolt kártya) menüpontot. Ha a monitorod nincs felsorolva, akkor válaszd az általános SVGA 1024x768 típust.

Hangkártya beállítása:

Ha a legújabb Linuxot (2.4 vagy későbbi) használod, kattints a KDE/GNOME munkaasztalon belül a Start->"System Settings"->Soundcard Detection menüpontra.

A régebbi Linux verzióknál kövesd az alábbi lépéseket:


	bash$ su - root
	bash# man sndconfig
	bash# /usr/sbin/sndconfig
      
Majd indítsd el az X-Window rendszer "KDE-munkaasztalát" a "startx" paranccsal. Kattints a "K Start->ControlCenter->SoundServer->General->Test Sound" menüpontra. Ennek le kell játszania a teszthangot. Aztán kattints a "K Start->MultiMedia->SoundMixer->SoundVolumeSlider" menüpontra és állítsd be a hangerőt.

Hálózati kártya beállítása: Ha a legújabb Linuxot (2.4 vagy későbbi) használod, kattints a KDE/GNOME munkaasztalon belül a Start->"System Settings"->Network menüpontra.

A régebbi Linux verzióknál kövesd az alábbi lépéseket:

Tűzfal és IP-álcázás beállítása: A rendszermag 2.4-es és a feletti verzióinál a tűzfal és az IP-álcázás a NetFilter csomaggal lett megvalósítva. Ezért a rendszermag beállítása közben engedélyezned kell a Netfilter-t és futtatni a tűzfal/IPmaszk szkripteket. Töltsd le a szkripteket a Firewall-IPMasq scripts honlapról, a NetFilter címoldalát a "http://netfilter.samba.org" webhelyen találod. Idevágó anyagokat találsz a firewalling-matures és Netfilter-FAQ honlapokon (valamint magyarul, a Firewall LDP Team webhelyén - a lektor).

A 2.4 alatti verziókhoz telepítheted a tűzfal rpm csomagjait a rpmfind.net vagy a firewall.src.rpm honlapról.

Egyéb eszközök beállítása: Olvasd az ezzel foglalkozó HOGYANokat a "http://www.tldp.org" webhelyen (továbbá a "HOGYAN-INDEX - Hardver" honlapon - a lektor).


19. "E" függelék - a gyakori hibák elhárítása

19.1. A rendszermag rendben elkészül, de a "make modules" nem sikerül

Jelenség: A rendszermag elkészül, és elkészül a bzImage, de a "make modules" már nem sikerül.

Megoldás: Ez a legtrükkösebb probléma, számos oka lehet. Ilyenek például a Linux terjesztés maga, nem frissített csomagfüggőségek. Ez nagyon jellemző a RedHat terjesztésre, de másiknál is előfordulhat. Okozhatja továbbá néhány "ott felejtett" fájl is, amelyek felfüggesztik a programfordítási folyamatot, ezáltal problémát okoznak. Ennek ellenszere a "make mrproper" és "make clean", majd a "make modules" parancs kiadása. Szükséged lehet a beállítási fájlok mentésére, alább látható ennek menete:

bash# cd /usr/src/linux 
bash# mkdir /usr/src/kernelconfigs ;
bash# cp /usr/src/linux/.config  /usr/src/kernelconfigs/.config.save;
bash# cp /usr/src/linux/.config  /usr/src/linux/configs/.config.save  # Különösen biztonságos
bash# cp /boot/config*  /usr/src/linux/configs/  # Különösen biztonságos
bash# make clean
bash# make mrproper  # "EL KELL VÉGEZNED ezt az mrproper-t", különben pokolian sok problémával 
                     # kell szembenézned
bash# make clean
bash# cp /usr/src/kernelconfigs/.config.save .config  # abban az esetben, ha újra fel akarod 
                                                      # használni a beállítófájlt ??
	  	


19.2. A programfordítás rendben megtörténik, de a rendszermag nem indul

Jelenség: ha a rendszermag rendben lefordul, de nem töltődik be és mindig rendszermag pánikra panaszkodik valahol az /sbin/modprobe körül.

Megoldás: nem készítetted el az initrd fájlt. Olvasd el az "A" függelék - initrd.img fájl készítése fejezetet.

Az initrd elkészítésén kívül, ki kell adnod egy "make modules" és "make modules_install" parancsot. Még ha ki is adtad a "make modules" parancsot előtte, próbáld meg másodszor is lefuttatni (nem árthat). Add ki a "make modules" és "make modules_install" parancsokat még egyszer, hogy teljesen megbizonyosodj arról, miszerint a betölthető modulok a helyükre kerültek.


19.16. Elfelejtetted futtatni a LILO-t, vagy a rendszered egyáltalán nem indul el

Hoppá! A legjobb dolog, amit ekkor tehetsz, hogy hajlékonylemezről vagy CD-ROM-ról indítasz, és készítesz egy másik indítólemezt (amit a " make zdisk " paranccsal is megtehetsz). Tudnod kell, hol van a gyökér ( / ) fájlrendszered és milyen típusú (tehát például ext2, minix). Az alábbi példában azt is tudnod kell, milyen fájlrendszeren van a /usr/src/linux forrásfád, ennek típusát, és normál esetben hova csatolódik fel.

A következő példában a / a /dev/hda1 , és a fájlrendszer, ami tartalmazza a /usr/src/linux könyvtárat, a /dev/hda3 , normál esetben a /usr alá van felcsatolva. Mindkettő second extended (ext2) fájlrendszer. A működő rendszermag helye a /usr/src/linux/arch/i386/boot könyvtár, és bzImage a neve.

Az ötlet az, hogy ha van egy működő bzImage , akkor azt használhatod egy új hajlékonylemez készítéséhez. Egy másik lehetőséget, ami vagy jobban működik, vagy nem (attól az egyedi módszertől függ, amivel szétbarmoltad a rendszered) beszélünk meg a példa után.

Először indíts egy boot/root lemezpárosról vagy mentőlemezről, és csatold fel a működő rendszermagot tartalmazó fájlrendszert:

mkdir /mnt mount -t ext2 /dev/hda3 /mnt

Ha az mkdir azt írja ki, hogy a könyvtár már létezik, ne törődj vele. Most a cd paranccsal lépj be arra a helyre, ahol a működő rendszermag van. Figyeld meg, hogy /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot. Helyezz egy formázott lemezt az "A" meghajtóba (ne a boot vagy root lemezed!), másold ki a fájlt a lemezre, és állítsd be a gyökér fájlrendszeredhez:

cd /mnt/src/linux/arch/i386/boot dd if=bzImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1

A cd paranccsal lépj be a / könyvtárba és válaszd le a normál /usr fájlrendszert:

cd / umount /mnt

Most már képesnek kell lenned normál módon újraindítani a rendszert erről a hajlékonylemezről. Ne felejtsd el futtatni a lilo-t (vagy bármi volt, amit elrontottál) az újraindítás után!

Amint fentebb említettük, van egy másik általános lehetőség. Ha véletlenül van egy működő rendszermag a / könyvtárban ( /vmlinuz például), használhatod azt is a indítólemezhez. Feltéve, hogy teljesül az összes fenti feltétel, és a rendszermagod a /vmlinuz , csak ezeket a változásokat tedd meg a fenti példához képest: változtasd meg a /dev/hda3 -at /dev/hda1 -re (a / fájlrendszerre), az /mnt/src/linux -ot a /mnt -re, és a if=bzImage -et if=vmlinuz -ra. A jegyzet arról, hogyan származtatjuk a /mnt/src/linux -ot, figyelmen kívül hagyható.

A LILO használata nagy meghajtókkal (több mint 1024 cilinderrel) problámákat okozhat. Olvasd a LILO mini-HOWTO (LILO mini HOGYAN) , vagy egyéb dokumetációt ennek a kivédéséről.


19.22. Úgy néz ki, hogy nem fordíthatók le dolgok a rendszermag frissítése után

A Linux-rendszermag forrása tartalmaz számos ún. include fájlt (azok a dolgok, amik .h -val végződnek), amikre a standard /usr/include könyvtárban lévő fájlok is hivatkoznak. Általában a következő módon hivatkoznak rájuk (ahol a xyzzy.h valamilyen fájl a /usr/include/linux könyvtárban): #include <linux/xyzzy.h> Normál esetben van egy linux nevű link a /usr/include könyvtárban az include/linux könyvtárra, ami a forráson belül van ( /usr/src/linux/include/linux egy tipikus rendszeren). Ha ez a link nincs ott, vagy rossz helyre mutat, a legtöbb dolog egyáltalán nem fordítódik le. Ha úgy döntesz, hogy a rendszermag forrása túl sok helyet foglal és letörlöd, ez bizony probléma lehet. Egy másik dolog, ami rossz lehet, a fájlok tulajdonjogai; ha a root felhasználónak olyan fájlmaszkja van, ami nem engedi meg alapértelmezésben a többi felhasználónak, hogy lássa a fájljait, és a rendszermag forrását a p (preserve filemodes) opció nélkül csomagoltad ki, ezek a felhasználók nem tudják használni a C fordítót sem. Bár használhatod a chmod parancsot ennek kijavítására, valószínűleg egyszerűbb újra kicsomagolni az include fájlokat. Ezt ugyanúgy teheted meg, ahogy a teljes forrást az elején, csak egy kiegészítő argumentummal:

blah# tar zxvpf linux.x.y.z.tar.gz linux/include Figyelem: a " make config " újra létrehozza a /usr/src/linux linket, ha az nincs ott.