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.3. Az új kiadás változásai: dokumentáció

Ha letöltötted az új rendszermag forrását, olvasd el a következő fájlokat az /usr/src/linux/Documentation könyvtárban

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.6. Hibaelhárítás

Problémád van? Olvasd el az "E" függelék - a gyakori hibák elhárítása fejezetet.

2.7. A rendszermaghoz kapcsolódó utólagos fordítások

Olvasd el az "D" függelék - utólagos rendszermag fordítás fejezetet.

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.