A Linux Kernel HOGYAN
  Brian Ward, bri@blah.math.tu-graz.ac.at
  1997. május 26. Verzió: 0.80

  Részletes útmutató kernel konfiguráláshoz, fordításhoz, frissítéshez
  és hibakereséshez x86 alapú gépeken.
  ______________________________________________________________________

  Tartalom:

  1.      Bevezetés

  1.1.    Ezt olvasd el először! (Komolyan)

  1.2.    A stílusról

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

  2.1.    Egyáltalán mit csinál a kernel?

  2.2.    Miért kell frissíteni a kernelt?

  2.3.    Milyen hardvert támogatnak az újabb kernelek?

  2.4.    A gcc és libc melyik verziójára van szükség?

  2.5.    Mi a betölthető modul?

  2.6.    Mennyi lemezterületre van szükség?

  2.7.    Mennyi ideig tart?

  3.      Hogyan kell konfigurálni a kernelt ?

  3.1.    A forrás beszerzése

  3.2.    A forrás kibontása

  3.3.    A kernel konfigurálása

  3.3.1.  Kernel math emulation

  3.3.2.  Enhanced IDE/MFM/RLL disk/cdrom/tape support

  3.3.3.  Networking support

  3.3.4.  Limit memory to low 16MB

  3.3.5.  System V IPC

  3.3.6.  Processor type (386, 486, Pentium, PPro)

  3.3.7.  SCSI support

  3.3.8.  Network device support

  3.3.9.  Filesystems

  3.3.9.1.        De én nem tudom milyen fájlrendszer kell nekem!

  3.3.10. Character devices

  3.3.11. Sound card

  3.3.12. Egyéb konfigurációs opciók

  3.3.13. Kernel hackelés

  3.4.    Na most mi legyen? (A Makefile)

  4.      A kernel fordítása

  4.1.    Törlések és függőségek

  4.2.    Fordítási idő

  4.3.    A ``make'' egyéb opciói

  4.4.    A kernel installálása

  5.      A kernel patch-elése

  5.1.    Patch-elés

  5.2.    Ha valami nem megy

  5.3.    Az .orig fájloktól való megszabadulás

  5.4.    Egyéb patch-ek

  6.      További csomagok

  6.1.    kbd

  6.2.    util-linux

  6.3.    hdparm

  6.4.    gpm

  7.      Néhány kelepce

  7.1.    make clean

  7.2.    Nagy vagy lassú kernel

  7.3.    A kernel nem fordul le

  7.4.    Az új kernel nem bootol

  7.5.    Elfelejtetted futtatni a LILO-t, vagy egyáltalán nem bootol

  7.6.    Azt mondja `warning: bdflush not running'

  7.7.    Mond valamit ``undefined symbols''-okról és nem fordul le

  7.8.    Nem működik az IDE/ATAPI CD-ROM meghajtó

  7.9.    Furcsa üzenetek ``obsolete routing requests''-ről

  7.10.   A tűzfal (firewall) nem működik az 1.2.0 kernellel

  7.11.   ``Not a compressed kernel Image file''

  7.12.   Problémák a konzollal 1.3.x-ra való frissítés után

  7.13.   Nem lehet semmit lefordítani kernel upgrade után

  7.14.   Korlátok megemelése

  8.      A 2.0.x kernelekre történő frissítés

  9.      Modulok

  9.1.    A segédprogramok telepítése

  9.2.    Kernellel terjesztett modulok

  10.     Egyéb konfigurációs opciók

  10.1.   Általános beállítások

  10.2.   Hálózati opciók

  11.     Tippek és trükkök

  11.1.   A make és patch parancsok kimenetének átirányítása

  11.2.   Feltételes kernel installálás

  11.3.   Kernel frissítések

  12.     Egyéb idevágó HOWTO-k, amik hasznosak lehetnek

  13.     Egyebek

  13.1.   A szerző

  13.2.   Tennivalók

  13.3.   Hozzájárulások

  13.4.   Copyright, licensz és ilyesmi
  ______________________________________________________________________

  1.  Bevezetés

  Neked szól ez a doukumentum? Igen, ha illik rád a következők
  valamelyike:

  ·  ``Grrr''! Ennek a wizzo-46.5.6 programcsomagnak az 1.8.193-as
     kernel verzió kell, nekem meg még mindig csak 1.0.9-es van!"

  ·  Az újabb kernelek egyikében van egy olyan eszközmeghajtó, amelyre
     égetően szükséged van.

  ·  Tényleg fogalmad sincs arról, hogy hogyan kell kernelt fordítani.

  ·  ``Tényleg csak annyi az egész, amit a README-ben írnak?''

  ·  Jöttél, láttál, nem sikerült.

  ·  Mutatnod kell valamit azoknak, akik ragaszkodnak hozzá, hogy Te
     installálj nekik kernelt.

  1.1.  Ezt olvasd el először! (Komolyan)

  A példák feltételezik hogy van a gépeden GNU tar, find, és xargs. Ezek
  eléggé szabványosak; ez nem okozhat problémát.  Továbbá feltételezem,
  hogy ismered a géped fájlrendszerének felépítését; ha nem, akkor
  nagyon fontos, hogy legyen egy másolatod a mount parancs normál
  működés melletti outputjáról (vagy az /etc/fstab tartalma, ha el tudod
  olvasni). Ez az információ fontos, és csak akkor változik meg, ha
  újraparticionálják a merevlemezt, installálnak egy újat, újratelepítik
  a rendszert vagy valami hasonló.

  Az aktuális ``stabil'' kernel verzió a dokumentum megírásnak idején a
  2.0.30 volt, tehát a hivatkozások és példák erre a verzióra
  vonatkoznak. Bár megpróbáltam annyira verziófüggetlen lenni, amennyire
  lehetséges, a kernel állandóan fejlesztés alatt áll, így minden újabb
  verzióban elkerülhetetlenül lesznek bizonyos különbségek. Ez sem
  okozhat nagy problémákat.

  A linux kernel forrásnak két változata van: ``stabil'' és
  ``fejlesztői''.  A stabil verziók az 1.0.x -től kezdődtek és páros
  számot viselnek. Tehát az 1.0.x, az 1.2.x és a 2.0.x is stabil. Ezeket
  tartják a legstabilabb, legkevésbé hibás kernelnek a kibocsátás
  idején. A fejlesztői kernelek (1.1.x, 1.3.x, 2.1.x, stb.) tesztelésre
  valók és olyanoknak szánják, akik hajlandóak új és esetleg sok hibával
  teli kerneleket kipróbálni. Ne mond, hogy nem szóltam.

  1.2.  A stílusról

  Az a szöveg ami így néz ki, az vagy olyasmi ami megjelenik a
  képernyőn, vagy amit közvetlenül be kell gépelni, mint például egy
  parancs, vagy egy parancs opciói, vagy egy fájlnév. (A sima szöveges
  változatban nem látszik semmi különbség.) A parancsok álltalában `'
  jelek között vannak.

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

  2.1.  Egyáltalán mit csinál a kernel?

  A Unix kernel a közvetítő a programok és a hardver között. Menedzseli
  a memóriát az összes futó program (processz) számára és biztosítja,
  hogy mind egyenlően (vagy egyenlőtlenül, ha úgy  tetszik)
  részesüljenek a processzor ciklusaiból. Továbbá egy kényelmes,
  hordozható felületet nyűjt a programoknak, amelyen át kommunikálhatnak
  a hardverrel.

  Ennél persze jóval több szót érdemelne a kernel működése, de ezeket az
  alapvető funkciókat a legfontosabb ismerni.

  2.2.  Miért kell frissíteni a kernelt?

  Az újabb kernelek álltalában többféle hardverrel tudnak együttműködni
  mint a régebbiek (azaz több eszközmeghajtójuk van). Lehet hogy az új
  kernelnek jobb a processz-kezelése, gyorsabb vagy stabilabb mint a
  régi verzió, és már ki van benne javítva az előző ismert hibája. A
  legtöbben az eszközmeghajtók és a kijavított hibák miatt frissítenek
  kernelt.

  2.3.  Milyen hardvert támogatnak az újabb kernelek?

  Lásd a Hardware-HOWTO-t.  Továbbá megnézheted a `.config' fájlt a
  linux forrásában, vagy kiderül, ha kiadod a `make config', a `make
  menuconfig' vagy a `make xconfig' parancsot.  Ez megmutatja az összes
  hardvert amit a szabványos kernel csomag támogat, de nem mindent amit
  a linux támogat. Sok elterjedt eszközmeghajtó (mint például a PCMCIA
  kártyák és némely szalagos egység meghajtója) betölthető modulként
  vannak megírva, amelyeket külön gondoznak és terjesztenek.

  2.4.  A gcc és libc melyik verziójára van szükség?

  Linus ajánl egy gcc verziót a linux forráshoz mellékelt README
  fájlban.  Ha neked nincs meg ez a verzió, a gcc ajánlott verziójának
  dokumentációja megmondja, hogy kell-e frissíteni a libc-t. Ez nem egy
  bonyolult eljarás, de fontos betartani az  utasításokat.

  2.5.  Mi a betölthető modul?

  Ezek a kernel program olyan részei, amelyek nincsenek közvetlenül
  beillesztve a kernelbe. Külön kell lefordítani, és szinte bármikor be
  lehet illeszteni a futó kernelbe illetve ki lehet venni onnan. A
  rugalmassága miatt már ez a legelterjedtebb módszer bizonyos kernel-
  szolgáltatások programozására. Sok népszerű eszközmeghajtó, mint
  például a PCMCIA meghajtók és a QIC-80/40 szalagos egység meghajtója
  betölthető modulként van megírva.

  2.6.  Mennyi lemezterületre van szükség?

  Ez az adott konfigurációtól függ. Először is a tömörített linux forrás
  majdnem 6 megabájt a 2.0.10 -es verziónál. A legtöbb helyen ezt a
  kicsomagolás után is megtartják. Kibontva 24 MB helyett foglal. De még
  nincs vége: ennél is több kell, hogy le is lehessen fordítani. Ez
  attól függ mennyi mindent akarsz betenni a kernelbe. Például az egyik
  gépemen van hálózat, a 3Com 3C509 meghajtója, három fájlrendszer, így
  összesen majdnem 30 MB lesz. A tömörített forrással együtt körülbelül
  36 MB kell ehhez a konfigurációhoz. Egy másik gépen, hálózati eszköz
  támogatás nélkül (de hálózati támogatással) és hangkártya támogatással
  még többet foglal. Egy újabb kernelnek biztosan nagyobb a forrása mint
  egy réginek, és ha sok hardvered is van, akkor gondoskodj egy
  megfelelően nagy merevlemezről. (És a mai árak mellett csak ajánlani
  tudom, hogy egy újabb merevlemez beszerzéséval oldd meg a tárolási
  problémákat.)

  2.7.  Mennyi ideig tart?

  A többség számára a válasz: "elég sokáig". Alapvetően a gép sebessége
  és a memória mennyisége határozzák meg a fordítási időt, de kis
  mértékben függ a kernelbe konfigurált dolgok mennyiségétől is. Egy
  486DX4/100-es gépen 16 MB RAM-mal egy 1.2-es kernel fordítása öt
  fájlrendszerrel, hálózati támogatással, hangkártya meghajtóval
  körülbelül 20 percig tart. Egy 386DX/40-en (8 MB RAM) hasonló
  konfigurációval majdnem másfél óra. Amíg a gép fordítja a kernelt főzz
  egy kávét, nézz tévét, kötögess vagy hódolj egyéb kedvteléseknek. Ha
  tényleg nagyon lassű géped van akkor megkérhetsz valakit, akinek gyors
  gépe van, hogy fordítsa le neked a kernelt.

  3.  Hogyan kell konfigurálni a kernelt ?

  3.1.  A forrás beszerzése

  A forrást anonymous ftp-vel lehet beszerezni az ftp.kernel.org-on a
  /pub/Linux/ könyvtárból, egy tükrözésről, vagy egyéb helyről.
  Általában linux-x.y.z.tar.gz a neve, ahol x.y.z a verziószám. Az újabb
  (jobb?) verzók és patch-ek általában `v2.0' és `v2.1' nevű
  alkönyvtárakban vannak. A legnagyobb szám a legújabb verzió (jelenleg
  v2.1), és ezek "fejlesztői verziók".  Ha félsz az  alfa és béta
  verzióktól, akkor inkább maradj egy stabil verziónál (v2.0).

  Nyomatékosan ajánlom, hogy használj egy tükör ftp-helyet az
  ftp.kernel.org helyett. Itt egy rövid lista a tükrözésekről:

  USA:             sunsite.unc.edu:/pub/Linux/kernel
  USA:             tsx-11.mit.edu:/pub/linux/sources/system
  UK:              sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
  Ausztria:        ftp.univie.ac.at:/systems/linux/sunsite/kernel
  Németország:     ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
  Németország:     sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
  Franciaország:   ftp.ibp.fr:/pub/linux/sources/system/patches
  Ausztrália:      sunsite.anu.edu.au:/pub/linux/kernel

  Magyarország:    ftp.kfki.hu:/pub/linux/kernel
                   ftp.aszi.sztaki.hu:/pub/Linux/kernel
                   ftp.bme.hu:/pub/OS/Linux/kernel
                   ftp.jate.u-szeged.hu:/pub/linux/kernel

  Általában a sunsite.unc.edu tükrözésein érdemes keresni. A
  /pub/Linux/MIRRORS fájl tartalmazza az ismert tükrözések listáját.  Ha
  általános Linux információkat keresel, próbáld meg a következő
  címeken: http://www.linux.org (angolul), http://www.cab.u-
  szeged.hu/linux/ (magyarul).

  3.2.  A forrás kibontása

  Lépj be `root'-ként (vagy válts át su-val) és menj át (cd-vel) a
  /usr/src-be. Ha a linux telepítésekor a forrást is felrakattad (ahogy
  a legtöbben), akkor már lesz ott egy `linux' nevű könyvtár, ami
  tartalmazza az egész forrás-hierarchiát.  Ha van elég lemezterületed
  és biztosra akarsz menni, akkor tartsd meg ezt a könyvtárat. A legjobb
  ha kideríted melyik verzió fut éppen és a könyvtárat annak megfelelően
  nevezed át. A `uname -r' parancs kiírja az aktuális verziószámot.
  Tehát ha az `uname -r' azt válaszolta, hogy `2.0.17', akkor nevezd át
  a `linux'-ot (`mv'-vel) `linux-2.0.17'-re. Ha szeretsz kockáztatni,
  akkor csak töröld ki az egész könyvtárat. A lényeg, hogy ne legyen
  `linux' nevű könyvtár a /usr/src-ben amikor kibontod a forrást.

  Most (még mindig a /usr/src-ben) bontsd ki a forrást a `tar zxpvf
  linux-x.y.z.tar.gz' paranccsal. (Ha csak egy `tar xpvf linux-
  x.y.z.tar' paranccsal.) Az archivum tartalma el fog száguldani a
  képernyőn. Amikor vége, lesz egy új `linux' könyvtár a /usr/src-ben.
  Menj bele és nézd át a README fájlt. Lesz benne egy `INSTALLING the
  kernel' című rész. Hajtsd végre az utasításait, ha szükséges --
  például a szimbolikus linkek elkészítése a megfelelő helyre, stb.

  3.3.  A kernel konfigurálása

  Megjegyzés: Az itt következők egy része a Linus-féle README egy
  hasonló fejezetének megismétlése, részletezése.

  A /usr/src/linux-ból kiadott `make config' parancs elindít egy
  konfiguráló scriptet, amely sok kérdést tesz fel. A bash kell hozzá,
  ezért ellenőrizd, hogy létezik-e a /bin/bash, a /bin/sh a /bin/bash-ra
  mutat-e, vagy a $BASH tartalmazza-e a /bin/bash-t.

  A `make config'-nak van két könnyebben és kényelmesebben használható
  alternatívája. Azok akik X alatt dolgoznak, megpróbálhatják a `make
  xconfig'-ot, ha van Tk installálva. A `make menuconfig' azoknak való,
  akik jobban szeretnének egy szöveges menüt; (n)curses kell hozzá.
  Ezeknek a felületeknek van egy határozott elönyük: Ha elrontasz
  valamit a konfigurálás közben, akkor egyszerűen vissza lehet menni
  kijavítani.

  A kérdésekre általában igennel (`y' (yes)) vagy nemmel (`n' (no)) kell
  válaszolni. Az eszközmeghajtókhoz általában van `m' opció is. Ez azt
  jelenti ``modul'', azaz a rendszer le fogja fordítani, de nem
  közvetlenül a kernelbe, hanem betölthető modulként. Néhány nyilvánvaló
  és nem fontos opciót itt nem magyarázok el, néhány egyéb opció
  leírását lásd az ````Egyéb konfigurációs opciók'''' című fejezetben.

  A 2.0.x verziótól kezdve van egy `?' opció is. Ennek hatására az adott
  paraméter egy rövid leírását kapjuk. Ez a legnaprakészebb információ
  az adott opcióról.

  3.3.1.  Kernel math emulation

  Társprocesszor emuláció.  Ha nincs matematikai társprocesszor a
  gépedben (egy sima 386 vagy 486SX esetén) akkor erre igennel kell
  válaszolni. Ha van társprocesszor és mégis igennel válaszolsz, ne
  aggódj -- a kernel használni fogja a társprocesszort és figyelmen
  kívül hagyja az emulációt. Az egyetlen következmény az, hogy a kernel
  nagyobb lesz, fogyasztva a memóriát. Úgy hallottam, hogy a
  társprocesszor emuláció lassú. Bár nincs sok köze ehhez a fejezethez,
  jó ha ez eszedbe jut, ha azt tapasztalod, hogy nagyon lassú az X.

  3.3.2.  Enhanced IDE/MFM/RLL disk/cdrom/tape support

  Megnövelt IDE/MFM/RLL disk/cdrom/szalagos egység támogatás.  Erre
  valószínűleg szükség lesz. Ez azt jelent, hogy a kernel támogatni
  fogja a szabványos PC merevlemezeket; a legtöbb gépben ilyen van.
  Ebbe nem tartoznak bele az SCSI maghajtók, ezek konfigurálására később
  kerül sor.

  Amennyiben nem a fenti kell, választhatod még az `Old harddisk
  (MFM/RLL/IDE) driver'-t (régi MFM/RLL/IDE lemez meghajtó). Csak az
  egyiket lehet választani. A fő különbség az, hogy a régi meghajtó csak
  két lemezegységet tud kezelni egy csatolón, míg az előbbi egy második
  csatolót is tud kezelni illetve az IDE/ATAPI CD-ROM és szalagos
  egységeket is. Az új meghajtó 4k-val nagyobb, mint a régi és
  feltételezhetôen ``javított'', ami azt jelenti, hogy amellett, hogy
  több hibajavítást is tartalmaz, megnöveli a lemezek teljesítményét,
  különösen az újabb (EIDE) hardver esetén.

  3.3.3.  Networking support

  Hálózati támogatás.  Elméletileg erre csak akkor kellene igennel
  válaszolni, ha géped egy hálózaton van, mint amilyen az Internet, vagy
  éppen SLIP, PPP, term, stb. segítségével telefonvonalon akarsz
  hálózatra kapcsolódni.  De mivel sok programcsomag (mint például az X
  ablakozó rendszer) akkor is igényel hálózati támogatást, ha a gép
  nincs igazi hálózatra kötve, mindenképpen igennel kell válaszolni.
  Később megkérdezi, hogy akarsz-e TCP/IP támogatást; itt is y' a
  válasz, ha nem vagy teljesen biztos az ellenkezőjében.

  3.3.4.  Limit memory to low 16MB

  Memória korlátozása az alsó 16 MB-ra.  Vannak hibás 386-os DMA
  vezérlők, amelyek nem tudnak 16 MB fölé eső memóriát megcímezni. Csak
  abban a ritka esetben kell igennel válaszolni, ha ilyened van.

  3.3.5.  System V IPC

  Az IPC (Interprocess Communication = ``processzek közötti
  kommunikáció'') egyik legjobb definicója a Perl könyv
  szómagyarázatában található.  Nem meglepő, hogy néhány Perl programozó
  ennek segítségével küld üzeneteket processzek között, csakűgy mint sok
  más programcsomag (pl. a DOOM, hogy a legismertebbet említsem). Ezért
  nem ajánlatos n-nel válaszolni, hacsak nem tudod pontosan mit
  csinálsz.

  3.3.6.  Processor type (386, 486, Pentium, PPro)

  Processzor típusa.  Régebben ez befordított bizonyos optimalizációt az
  adott processzorhoz; a kernel simán futott más processzorokon is, csak
  egy kicsit nagyobb volt.  Az újabb kernelek esetén ez már nem így van,
  ezért annak a processzornak a tipusát kell beírni, amelyhez a kernel
  készül. Egy ``386-os'' kernel minden gépen menni fog.

  3.3.7.  SCSI support

  SCSI támogatás.  Ha van SCSI eszközöd, válaszolj `y'-t. További
  kérdéseket fog feltenni CD-ROM támogatásról, a lemezegységek és az
  SCSI adapter típusáról.  Lásd az SCSI-HOWTO-t részletes információért.

  3.3.8.  Network device support

  Hálózati eszköz támogatás.  Ha van hálózati kártyád, vagy szeretnél
  SLIP-pel, PPP-vel vagy a párhuzmos porton át csatlakozni az
  Internethez, válaszolj igennel. A konfigurációs script megkérdezi a
  kártya tipusát és a használandó protokollt.

  3.3.9.  Filesystems

  Fájlrendszerek.  A konfiguráló script ezek után megkérdi, hogy akarod-
  e használni a következő fájlrendszereket:

  Minix - Az újabb disztribúciók nem hoznak létre minix
  fájlrendszereket, és sokan nem is használják, de ennek ellénére
  érdemes lehet bekonfigurálni.  Néhány ``mentőlemez''-program
  használja, és sok floppyn van minix fájlrendszer, mert floppyn sokkal
  kényelmesebb ezt használni (kevesebb helyet foglal maga a
  fájlrendszer).

  Extended (ext) - Ez volt az ext2 fájlrendszer első változata, ma már
  nem használják széles körben.  Ha szükséged van rá, akkor valószínüleg
  tudsz is róla; ha nem tudod, akkor nincs is rá szükséged.

  Second extended (ext2) - Ezt széles körben használják az újabb
  disztribúciók. Valószínűleg ilyened van, ezért igennel kell
  válaszolni.

  xiafs - Egy időben elterjedt volt, de most nem ismerek senkit aki
  használja.

  msdos - Ha használni akarod a meglévő MS-DOS winchester particiókat,
  vagy DOS alatt formázott floppykat akarsz mountolni, akkor válaszolj
  igennel.

  umsdos - Ez a fájlrendszer kibővít egy MS-DOS fájlrendszert a szokásos
  Unix-szerű tulajdonságokkal, mint például a hosszú fájlnevek.
  Haszontalan olyanoknak (mint én), akik nem használnak DOS-t.

  /proc - Az egyik legnagyszerűbb dolog a tejpor feltalálása óta. (Az
  ötletet azt hiszem a Bell Labs-tól lopták szégyentelen módon.) A proc
  fájlrendszer nem arra való, hogy létrehozzák a lemezen; ez egy
  fájlrendszer felület a kernel és a processzek felé. Sok processz-
  listázó (mint a `ps') használja. Egyszer próbáld ki a `cat
  /proc/meminfo' vagy `cat /proc/devices' parancsokat. Néhány
  parancsértelmező (különösen az rc) használja a /proc/self/fd-t (más
  rendszereken /dev/fd néven ismert) I/O műveletekre. Majdnem biztosan
  igennel kell válaszolnod erre, sok fontos linux segédprogram
  támaszkodik rá.

  NFS - Ha a géped hálózatra van kötve és szeretnél más gépeken lévő
  fájlrendszerereket használni NFS-sel, akkor válaszd ki.

  ISO9660 - A legtöbb CD-ROM-on ez található. Ha van CD-ROM meghajtód és
  szeretnéd linux alatt használni, válaszd ki.

  HPFS - Az írás idején egy csak olvasható fájlrendszer OS/2 HPFS-hez.

  System V and Coherent - System V és Coherent partíciókhoz. (Ezek más
  PC-s Unix változatok.)

  3.3.9.1.  De én nem tudom milyen fájlrendszer kell nekem!

  Jól van, írd be, hogy `mount'. A kimenet valami ilyesmi lesz:

           blah# mount
           /dev/hda1 on / type ext2 (defaults)
           /dev/hda3 on /usr type ext2 (defaults)
           none on /proc type proc (defaults)
           /dev/fd0 on /mnt type msdos (defaults)

  Nézd meg mindegyik sort. A `type' utáni szó a fájlrendszer típusa.
  Ebben a példában a / és a /usr fájlrendszerek típusa ext2 (second
  extended). Használok /proc fájlrendszert is, továbbá egy floppy be van
  mountolva msdos fájlrendszerként.

  Megpróbálkozhatsz a `cat /proc/filesystems' paranccsal, ha a /proc
  éppen támogatva van a futó kernelben és be van mountolva; ez ki fogja
  listázni az aktuális kernel fájlrendszereit.

  Ritkán használt, nem létfontosságú fájlrendszerek bekonfigurálása
  túlméretezett kernelt eredményezhet. A ``modulokról'' szóló fejezetből
  kiderül, hogy ezt hogy lehet elkerülni. A ````Néhány kelepce''''
  címűből pedig az, hogy miért nemkívánatos a nagy kernel.

  3.3.10.  Character devices

  Karakteres eszközök.  Itt állíthatók be a (párhuzamos) nyomtató, busz-
  egér (busmouse), PS/2 egér (sok notebook gép használ PS/2 egér
  protokollt a beépített trackballhoz), néhány szalagos egység és más
  hasonló ``karakteres'' eszközökhöz a meghajtók.  Nyomj `y'-t a
  megfelelő helyen.

  1. Megjegyzés: A selection egy program amely lehetővé teszi az egér
  használatát az X ablakozó rendszeren kívül is, virtuális konzolok
  közötti másolásra.  Ha soros egered van, elég kellemes, mert jól
  megfér az X-el, de ha másmilyen, akkor trükközni kel. A selection
  támogatása valamikor konfigurációs opció volt, de ma már szabványos.

  2. Megjegyzés: A selection már elavultnak számít. Az új program neve
  ``gpm''. Többet tud: például egér protokollok között fordítani, több
  egeret kezelni, stb.

  3.3.11.  Sound card

  Hangkártya. Ha nagyon vágysz arra, hogy halljad a biff-et ugatni,
  nyomj `y'-t, és a konfigurációs program részletesen ki fog kérdezni a
  hangkártyádról. Ha van hangkártyád, melegen ajánlom a Sound-HOWTO-t.

  3.3.12.  Egyéb konfigurációs opciók

  Nincs az összes konfigurációs opció felsorolva itt, egyrészt mert túl
  gyorsan változnak, másrészt mert magától értetődőek. (Például a ``3Com
  3C509 support'' az említett ethernet kártyához való támogatást
  jelenti.)  Axel Boldt (axel@uni-paderborn.de) összeállított egy
  meglehetősen széleskörű listát az összes opcióról (és egy módszert,
  amivel be lehet tenni őket a Configure scriptbe), amely a

       http://math-www.uni-paderborn.de/~axel/config_help.html

  címen található, vagy anonymous FTP-vel a

       ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz

  címen, ahol x.yz a verziószám.

  A későbbi kernelekben (2.0.x és e fölött) ez már be van integrálva a
  forrásba.

  3.3.13.  Kernel hackelés

  Linus írja a README-ben:

  A ``kernel hacking'' konfigurációs részletek általában nagyobb vagy
  lassabb (vagy mindkettő) kernelt eredményeznek, sőt akár kevésbé
  stabilabbá is tehetik a kernelt azáltal, hogy bekonfigurálnak néhány
  rutint, amelyek megpróbálják aktívan feltörni a hibás
  programrészleteket, hogy így találjanak problémákat. Ezért inkább
  `n'-t kell válaszolni az erre vonatkozó kérdésekre egy ``stabil''
  kernel esetén.

  3.4.  Na most mi legyen? (A Makefile)

  A make menuconfig vagy a make xconfig után egy üzenet tudatja, hogy a
  kernel konfigurálása megtörtént és felszólít, hogy ``check the top-
  level Makefile for additional configuration'', stb. (``További
  konfiguráláshoz ellenőrizd a felsőszintű Makefile-t'')

  Nézz bele tehát a Makefile-ba.  Valószínűleg nem kell megváltoztatni
  semmit, de megnézni sosem árthat. Az opciókat megváltoztathatod akkor
  is, amikor az új kernel már a helyén van az `rdev' paranccsal.
  4.  A kernel fordítása

  4.1.  Törlések és függőségek

  Amikor a konfiguráló script véget ér, azt is mondja, hogy add ki a
  `make dep' és a `make clean' parancsokat.  A `make dep' ellenőrzi,
  hogy az összes függőség, mint például az include fájlok, a helyükön
  vannak-e. Nem tart sokáig, hacsak a géped nem nagyon lassú. Egy `make
  clean'-t is csinálni kell.  Ez letörli az összes object fájlt és
  néhány egyéb dolgot, amit a régi verzió hátrahagy. Mindenesetre ne
  felejtsd el ezt a lépést, mielőtt megpróbálod újrafordítani a kernelt.

  4.2.  Fordítási idő

  A `make dep' és `make clean' után jöhet a `make zImage' vagy `make
  zdisk' (Ez az a rész, ami sokáig tart.)  A `make zImage' lefordítja a
  kernelt és (többek között) egy `zImage' nevű fált hagy maga után a
  arch/i386/boot-ban.  Ez az új tömörített kernel. A `make zdisk'
  ugyanezt teszi, de az új zImage-t rámásolja egy floppyra, amelyet
  addigra remélhetőleg már betettél az ``A:'' drive-ba. A `zdisk' nagyon
  kényelmes az új kernelek teszteléséhez. Ha lefagy (vagy egyszerűen
  csak nem működik jól), akkor csak kiveszed a floppyt és bootolhatsz a
  régi kernellel. Akkor is jól jön, ha véletlenül letörlöd a kernelt
  (vagy valami hasonló szörnyűség történik). Új rendszerek telepítésére
  is lehet használni; az egyik lemez tartalmát egyszerűen átmásolod a
  másikra.

  Minden valamirevaló újabb kernel tömörítve van, ezért van `z' a nevük
  előtt. A tömörített kernel automatikusan kicsomagolja magát, amikor
  végrehajtódik.

  4.3.  A ``make'' egyéb opciói

  A `make mrproper' alaposabb törlést végez. Néha szükség van rá,
  ajánlott minden patch alkalmával végrehajtani. A `make mrproper' a
  konfigurációs fájlt (.config) is letörli, ezért csinálj róla
  biztonsági másolatot, ha megtartásra érdemesnek találod.

  A `make oldconfig' megpróbálja egy régi konfigurációs fájl alapján
  konfigurálni a kernelt; elvégzi helyetted a `make config' lépést.  Ha
  még sosem fordítottál kernelt vagy nincs régi konfigurációs fájl
  kéznél, akkor ne tedd, mert minden bizonnyal meg kell változtatni az
  alapértelmezett konfigurációt.

  A `make modules' leírása a modulokról szóló fejezetben található.

  4.4.  A kernel installálása

  Ha kész van a kernel és az úgy is működik, ahogy szeretnéd, itt az
  ideje installálni. A legtöbben a LILO-t (Linux Loader) használják erre
  célra.  A `make zlilo' installálja a kernelt, lefuttatja rajta a LILO-
  t, és bootolásra kész állapotba hozza, DE CSAK AKKOR, ha a LILO a
  következőképpen van konfigurálva: a kernel /vmlinuz, a LILO az /sbin-
  ben van, és a LILO konfigurációs fájl (/etc/lilo.conf) tartalma is
  ennek megfelelő.

  Ellenkező esetben közvetlenül kell a LILO-t használni. Eléggé könnyű
  installálni és használni, de a konfigurációs fájl hajlamos
  összezavarni az embereket.  Nézd meg a konfigurációs fájlban (a
  régebbi verzióknál /etc/lilo/config, az újaknál /etc/lilo.conf), hogy
  mi az aktuális beállítás. A konfigurációs fájl így néz ki:

      ...
      image = /vmlinuz
          label = Linux
          root = /dev/hda1
          ...

  Az `image =' az aktuális kernelre mutat. A legtöbben /vmlinuz-t
  használnak. A `label' alapján dönti el a lilo, hogy melyik kernelt,
  vagy operációs rendszert indítsa el, és a `root' az adott operációs
  rendszert gyökérkönyvtára. Készíts biztonsági másolatot a régi
  kernelről és másold a frissen fordított zImage-t a helyére. (Például,
  ha `/vmlinuz'-t használsz, azt mondod, hogy `cp zImage /vmlinuz')
  Ezután futtasd a lilo-t -- az újabb rendszereken elég annyi, hogy
  `lilo', de régebbieken lehet, hogy /etc/lilo/install , vagy akár
  /etc/lilo/lilo -C /etc/lilo/config kell.

  Ha szeretnél többet tudni a LILO konfigurálásáról, vagy nincs is meg
  neked, akkor szerezd meg a legújabb verziót a kedvenc ftp helyedről és
  kövesd az utasításokat.

  Ha szeretnél egy régi kernelt bootolni a merevlemezről (így is
  megmenekülhetsz, ha az újat elrontottad), másold le a lilo
  konfigurációs fájlban az `image = xxx' sort és az utánna következő
  sorokat a fájl aljára, és változtasd meg az `image = xxx' sort `image
  = yyy'-ra, ahol `yyy' annak a fájlnak a teljes elérési útvonala,
  amelybe a régi kernelt mentetted. Azután változtasd meg a `label =
  zzz' sort `label = linux-backup'-ra és futtasd a lilo-t. Lehet, hogy
  be kell tenni egy `delay=x' sort is a konfigurációs fájlba, ahol x az
  az idő tizedmásodpercben megadva, amennyit a lilo vár mielőtt
  bootolna. Így meg lehet szakítani (például a shift billentyűvel) és be
  lehet írni a régi kernel címkéjét, ha valami kellemetlen történik az
  újjal.

  5.  A kernel patch-elése

  5.1.  Patch-elés

  A kernel inkrementális frissítéseit patch (``folt'') formában
  terjesztik.  Például, ha neked a 2.0.30 verzió van meg, és
  észreveszed, hogy van hozzá valahol egy `patch-2.0.31.gz', akkor ez
  azt jelenti, hogy upgrade-elhetsz a 2.0.31 verzióra a patch
  alkalmazásával. Először talán készíts egy biztonsági másolatot a
  forrásról. (`make clean' aztán `cd /usr/src; tar zcvf old-tree.tgz
  linux' csinál neked egy tömörített tar archivumot.)

  A fenti példát folytatva, tegyük fel, hogy a `patch-2.0.31.gz' az
  /usr/src-ben van. Menj át az /usr/src-be  (cd) és add ki a `zcat
  patch-2.0.31.gz | patch -p0' parancsot (vagy `patch -p0 <
  patch-2.0.31.gz', ha a patch nincs tömörítve).  Egy csomó minden fog
  elsuhanni elötted a képernyőn (vagy épp elvánszorogni, ha annyira
  lassú a gép).  Üzenetek jelennek meg arról, hogy a patch éppen mit
  csinál, és hogy sikerült-e neki vagy nem.  Ez általában túl gyors
  ahhoz, hogy bármit is el lehessen olvasni. Ha nem vagy biztos benne,
  hogy sikerült-e, használd a patch -s opcióját, aminek hatására csak a
  hibaüzeneteket írja ki.  Menj be a /usr/src/linux-ba és keress .rej
  (``reject'') kiterjesztésű fájlokat. A patch néhány verziója (olyan
  régebbi verziók, amelyeket gyengébb fájlrendszerhez fordítottak) #
  kiterjesztést ad a ``reject'' fájloknak. A `find' parancsot
  használhatod a keresésre:

      find .  -name '*.rej' -print

  Ez kiírja a standard outputra az összes olyan fájl nevét, amely az
  aktuális könyvtárban, vagy az abból nyíló alkönyvtárakban van és .rej
  a kiterjesztése.

  Ha minden simán ment, akkor add ki a `make clean', `config', és `dep'
  parancsokat a 3. és 4. fejezetben leírtaknak megfelelően.

  A patch parancsnak elég sok opciója van. Ahogy az előbb is szó volt
  róla, a patch -s kikapcsolja az üzeneteket, a hibák kivételével.  Ha a
  kernel forrását nem az /usr/src/linux-ben tartod, hanem valahol
  másutt, akkor a patch -p1 (az adott könyvtárban) fogja helyesen
  megpatchelni. A többi patch opció jól le van írva a manualban.

  A fenti folyamat akár automatizálható is a patch-kernel scripttel, ami
  szintén megtalálható a kernel forrásában. Meghatározza a kernel
  aktuális verziószámát, majd minden patch-et alkalmaz rá amit megtalál,
  s ami frissebb az aktuális kernel verziójánál.

      cd /usr/src
      . linux/scripts/patch-kernel

  A kernelforrás alapértelmezett könyvtára a /usr/src/linux, de első
  argumentumként más is megadható. Továbbá a patch-eket az aktuális
  könyvtárban keresi a script, hacsak a második argumantumban nem adsz
  meg egy másik könyvtárat.

  5.2.  Ha valami nem megy

  (Megjegyzés: ez a fejezet főként nagyon régi kernelekre vonatkozik)

  A leggyakrabban felmerülő probléma régebben az volt, hogy a patch
  módosított egy `config.in' nevű fájlt, és nem sikerült, mert a
  felhasználó megváltoztatta az opciókat, hogy illeszkedjen a gépéhez.
  Ezt azóta megoldották, de még lehet vele találkozni egy régebbi
  kibocsátás esetében. A következőképpen lehet megjavítani: Nézz bele a
  config.in.rej fájlba és keresd meg mi maradt az eredeti patch-ből.  A
  változásokat általában sor eleji `+' and `-' jelek jelzik. Nézd meg a
  körülötte lévő sorokat és jegyezd emg, hogy az állásuk `y' vagy `n'.
  Utánna szerkeszd át a config.in-t, és változtasd meg a `y'-t `n'-ra és
  az `n'-t `y'-ra a megfelelő helyeken. Addj ki egy

      patch -p0 < config.in.rej

  parancsot, és ha sikerül (nincs hibaüzenet), akkor lehet folytatni a
  konfigurálással és fordítással. A config.in.rej fájl megmarad, de le
  lehet törölni.

  Ha további problémák bukkannak elő, akkor lehet, hogy rossz sorrendben
  alkalmaztad a patch-okat. Ha azt mondja, hogy `previously applied
  patch detected: Assume -R?', akkor lehet, hogy az aktuális verzió
  előtti patchot próbálsz felrakni. Ha `y'-t válaszolsz, akkor
  megpróbálja lerontani a forrást, és nagy valószínűséggel kudarcot
  vall. Így aztán szerezni kell egy teljes vadonatúj forrást. (Lehet,
  hogy mindjárt ezzel kellett volna kezdeni.)

  Egy patch-et visszacsinálni a `patch -R' parancsal lehet.

  Ha a patch-ek tényleg nem működnek, akkor legjobban teszed, ha
  beszerzel egy érintetlen forrást (például egy linux-x.y.z.tar.gz
  fájlt) és elkezded elölről.

  5.3.  Az .orig fájloktól való megszabadulás

  Már néhány patch után az .orig fájlok kezdenek felhalmozódni. Például
  egyszer volt egy 1.1.51 forrásom, ami az 1.1.48. óta nem volt
  megtisztogatva.  Az .orig fájlok letörlése több mint fél megát
  szabadított fel. Egy

      find .  -name '*.orig' -exec rm -f {} ';'

  elintézi. A patch azon verziói, amelyek #-al jelölik a ``reject''
  fájlokat, tildét használnak .orig kiterjesztés helyett.

  Van egy jobb módja is az .orig fájloktól való megszabadulásnak, amihez
  kell a GNU xargs:

      find .  -name '*.orig' | xargs rm

  vagy a ``hosszú de biztos'' módszer:

      find . -name '*.orig' -print0 | xargs --null rm --

  5.4.  Egyéb patch-ek

  Linus Torvalds által terjesztette patch-eken kívül vannak másmilyenek
  is (nevezzük őket ``nem szabványos''-nak). Ha ezeket felrakod, akkor
  lehet, hogy a Linus féle patch-ek nem fognak jól működni, és akkor
  vagy visszacsinálod őket és megjavítod a forrást vagy a patchet, vagy
  felraksz egy új forrást, vagy a fentiek valamilyen kombinációja. Ez
  nagyon idegesítő lehet, tehát ha nem akarod módosítani a forrást
  (kockáztatva egy nagyon rossz végkimenetelt), csináld vissza a nem
  szabványos patcheket mielőtt felrakod Linus-éit, vagy rakj fel egy új
  forrást. Így ellenőrízheted, hogy a nem szabványos patch-ek működnek-e
  még. Ha nem, akkor vagy be kell érned egy régi kernellel, vagy addig
  bütykölöd vagy a forrást vagy a patch-et amíg nem működik, vagy vársz
  (esetleg könyörögsz), hogy kijöjjön a patch egy új verziója.

  Mennyire elterjedtek a nem szabványos patchek? Valószínűleg fogsz
  róluk hallani. Régebben használtam a noblink patchet a virtuális
  konzolokon, mert utálom a villogó kurzort. (Ezt gyakran frissítik
  (vagy legalábbis frissítették) a kernel új verzióihoz). De mivel a
  legtöbb új eszközmeghajtót betölthető modulnak fejlesztik, a nem
  szabványos patch-ek gyakorisága jelentősen csökken.

  6.  További csomagok

  A linux kernelnek sok olyan szolgáltatása van, amelyet nem említenek
  meg magában a forrásban. Ezeket a szolgáltatásokat általában külső
  programcsomagokon keresztül használnak. A leggyakoribbakból néhány:

  6.1.  kbd

  A linux konzolnak talán több szolgáltatása van, mint amennyit
  megérdemel.  Többek között betűkészletet tud váltani, átállítja a
  billentyűzetet, átváltja a video módot (az újabb kerneleknél), stb. A
  kbd csomagban olyan programok vannak, amelyekkel a felhasználó
  végezheti el mindezeket, plusz sok betűkészlet és beállítások szinte
  minden billentyűzethez. Ugyanazokról a helyekről lehet beszerezni,
  mint a kernel forrást.

  6.2.  util-linux

  Rik Faith (faith@cs.unc.edu) összeállított egy linux segédprogramokból
  álló nagy gyűjtemény, melynek neve, valami különös véletlen folytán,
  util-linux.  Ennek karbantartója azóta Nicolai Langfeldt (util-
  linux@math.uio.no).  Megszerezhető anonymous ftp-vel a
  sunsite.unc.edu-ról a /pub/Linux/system/misc könyvtárból. Tartalmazza
  többek között a setterm, rdev, és ctrlaltdel programokat, a kernellel
  kapcsolatosak közül. Ahogy Rik mondja, ne rakd fel ész nélkül.  Nem
  kell mindent installálni, ami a csomagban van, és könnyen okozhat
  komoly problémákat, ha megteszed.

  6.3.  hdparm

  Mint sok csomag, ez is egy kernel patch és hozzávaló segédprogramok
  gyüjteménye volt valaha. A patch bekerült a hivatalos kernelbe, a
  programokat, amelyekkel optimalizálni és bütykölni lehet a
  merevlemezt, külön terjesztik.

  6.4.  gpm

  gpm annyit tesz, mint ``general purpose mouse'' (``általános célú
  egér'').  Ezzel a programmal szöveget lehet másolni (``cut and
  paste'') az egyik virtuális konzolról a másikra, és még sok minden
  mást lehet csinálni, sokféle egértípussal.

  7.  Néhány kelepce

  7.1.  make clean

  Ha az új kernel egy rutinszerű kernelfrissítés után elkezd nagyon vad
  dolgokat művelni, akkor könnyen lehet, hogy elfeljtetted kiadni a make
  clean parancsot az új kernel lefordítása előtt. A tünetek változatosak
  lehetnek: egyszerűen összeomlik, furcsa I/O problémák jönnek elő vagy
  csak nagyon lassú lesz. Ne felejtsd el a make dep-et se.

  7.2.  Nagy vagy lassú kernel

  Ha a kernel sok memóriát foglal el, túl nagy, és/vagy egy
  örökkévalóságig tart lefordítani akkor is, ha a vadonatúj 786DX6/440
  gépeddel esel neki, akkor valószínűleg túl sok fölösleges dolog
  (eszközmaghajtók, fájlrendszerek, stb.) van belekonfigurálva. Ha nem
  használod, akkor ne is konfiguráld be, mert foglalja a memóriát. A túl
  nagy kernel legszembetűnőbb tünete a memória és diszk közötti túlzott
  swappelés. Ha a merevlemez sokat zörög, és nem egy régi Fujitsu
  Eagles, ami kikapcsoláskor olyan hangot ad, mint egy sugárhajtású
  repülőgép leszálás közben, akkor nézd át a kernel konfigurálást.

  Megtudhatod, hogy mennyi memóriát használ a kernel, ha fogod a
  gépedben levő összes memória mennyiségét és kivonod belőle a ``total
  mem'' mező értékét a /proc/meminfo-ból, vagy a `free' outputjából.
  Megtuthatod még úgy is, hogy kiadod a `dmesg' parancsot (vagy megnézed
  a kernel log fájlt, bárhol is legyen a gépeden -- általában ez a
  /var/log/messages).  Lesz benne egy ilyen sor:

  Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k
  data)

  A 386-osom (amelyen egy kicsit kevesebb plusz dolog van
  bekonfigurálva) ezt írja ki:

  Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k
  data)

  Ha nem bírsz élni nagy kernel nélkül, de a gép nem engedi, akkor
  próbáld ki a `make bzimage'-t. Könnyen lehet, hogy akkor a LILO egy új
  verzióját is installálnod kell.

  7.3.  A kernel nem fordul le

  Ha nem fordul le, akkor valószínűleg nem sikerült egy patch, vagy a
  forrás valahogy megsérült. Lehet, hogy nem jó a gcc adott verziója,
  vagy az is lehet sérült (például az include fájlok lehetnek hibásak).
  Ellenőrizd, hogy a szimbólikus linkek, amelyeket Linus említ a README-
  ben jól vannak-e beállítva. Általában elmondható, hogy ha a szabványos
  kernel nem fordul le, akkor valami komoly baj van a rendszerrel, és
  valószínűleg újra kell installálni bizonyos programokat.

  Vagy talán egy 1.2.x kernelt fordítassz egy ELF fordítóval (gcc 2.6.3
  és a fölött). Ha rengeteg ez-meg-az undefined üzenetet kapsz fordítás
  közben, akkor lehet, hogy ez a baj. A megoldás a legtöbb esetben
  nagyon egyszerű. Másold a következő sorokat a arch/i386/Makefile
  elejére:

  AS=/usr/i486-linuxaout/bin/as
  LD=/usr/i486-linuxaout/bin/ld -m i386linux
  CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

  Azután csinálj make dep-t és zImage-t újra.

  Ritka esetekben előfordul, hogy a gcc hardver okok miatt száll el.  A
  hibaüzenet valami olyasmi lesz, hogy ``xxx exited with signal 15'' és
  általában nagyon rejtélyesen néz ki. Talán nem is említeném, he nem
  történt volna meg velem is egyszer -- A cache memória hibás volt és a
  gcc időnként véletlenszerűen elszállt. Először próbáld meg
  újrainstallálni a gcc-t, ha ilyen gond merül fel. Csak akkor kell
  gyanakodni, ha a kernel hiba nélkül lefordul kikapcsolt külső cache,
  kevesebb RAM, stb. mellett.

  Az embereket általában nyugtalanítja, ha felvetődik, hogy a hardverük
  hibás lehet. Nos, nem én találtam ki. Itt van hozzá egy FAQ:
  http://www.bitwizard.nl/sig11/.

  7.4.  Az új kernel nem bootol

  Nem futtattad a LILO-t, vagy rosszul van konfigurálva. Egyszer az
  ``fogott'' meg, hogy hiba volt a konfig fájlban.  `boot =/dev/hda1'
  volt benne `boot = /dev/hda' helyett.  (Ez elsőre nagyon idegesítő
  lehet, de ha már van egy működő konfig fájl, nem kell hozzányúlni.)

  7.5.  Elfelejtetted futtatni a LILO-t, vagy egyáltalán nem bootol

  Hoppá! A legjobb amit ilyen helyzetben tehetsz az, hogy floppyról
  bootolsz és csinálsz egy másik bootolható floppyt (ahogy a `make
  zdisk' is csinálná). Tudnod kell, hogy hol van a root (/) fájlrendszer
  és az milyen típusú (pl. második kiterjesztett, minix). Az alábbi
  példában azt is tudni kell, hogy melyik fájlrendszeren van a linux
  forrás /usr/src/linux, annak a típusa és hogy rendszerint hova van
  mountolva.

  A következő példában a root a /dev/hda1, az /usr/src/linux a /dev/hda3
  fájlrendszeren van, normálisan az /usr-re mountolva. Mindkettő ext2
  fájlrendszer. A működő kernel a /usr/src/linux/arch/i386/boot-ban van
  és a neve zImage.

  Az alapötlet az, hogy ha van egy működőképes zImage, akkor lehet azt
  használni az új floppyn. Egy másik módszerről, ami vagy jobban
  műkődik, vagy nem (attól függően, hogy pontosan hogyan rontottad el a
  rendszert) a példa után lesz szó.

  Először bootolj egy boot/root lemezpárosról vagy mentőlemezről és
  mountold föl azt a fájlrendszert, ami a működő kernelt tartalmazza.

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

  Ha a mkdir azt mondja, hogy a könyvtár már létezik, ne törődj vele.
  Menj be abba a könyvtárba, amelyben a működő kernel volt. Ne feledd,
  hogy

  /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot

  Helyezz egy formattált lemezt az ``A:'' meghajtóba (ne a boot vagy
  root lemezt!), másold a kernelt a lemezre és konfiguráld a root
  fájlrendszernek megfelelően:

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

  Menj a root könyvtárba és csatold le a normálisan /usr fájlrendszert.

      cd /
      umount /mnt

  Ezek után a megszokott módon lehet bootolni erről a floppyról. Ne
  felejtsd el futtatni a LILO-t (vagy amit rosszul csináltál) az
  újrabootolás után.

  Ahogy az előbb említettem, van egy másik lehetőség. Ha van egy működő
  kernel a gyökérkönyvtárban (például /vmlinuz), akkor azt is lehet
  használni egy bootlemezen. Feltéve, hogy minden változatlan, /vmlinuz
  a kernel, a következő változtatásokat kell eszközölni a fenti példán:
  legyen /dev/hda3 helyett /dev/hda1 (a root fájlrendszer) az
  /mnt/src/linux-t mountold az /mnt-re, és az if=zImage paramétert írd
  át if=vmlinuz-re. A megjegyzést a /mnt/src/linux levezetéséről
  figyelmen kívül lehet hagyni.

  A LILO használata nagy merevlemezekkel (több, mint 1024 cilinder)
  gondot okozhat. Lásd a LILO mini-HOWTO-t vagy a dokumentációt
  segítségért.

  7.6.  Azt mondja `warning: bdflush not running'

  Ez súlyos probléma lehet. Az 1.0 kernel verzió kibocsátása után (1994
  április 20. táján) felfrissítették/lecserélték az `update' nevű
  programot, amely rendszeresen kiüríti a fájlrendszer puffereit.
  Szerezd meg a `bdflush' forrását (meg kell lennie ugyanott, ahol a
  kernel forrásnak), és installáld fel. (Ezt még a régi kernelt futtatva
  ajánlatos megtenni.) `update' néven installálja magát. Az újrabootolás
  után a kernel nem fog többet panaszkodni.

  7.7.  Mond valamit ``undefined symbols''-okról és nem fordul le

  Valószínüleg ELF fordítód van (gcc 2.6.3 és afölött) és 1.2.x (vagy
  korábbi) kernel forrás. A szokásos megoldás az, hogy az alábbi sorokat
  bemásolod a arch/i386/Makefile elejére:

  AS=/usr/i486-linuxaout/bin/as
  LD=/usr/i486-linuxaout/bin/ld -m i386linux
  CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

  Ez lefordítja az 1.2.x kernelt az a.out könyvtárakkal.

  7.8.  Nem működik az IDE/ATAPI CD-ROM meghajtó

  Különös módon sokan nem tudják használni az ATAPI meghajtókat, talán
  mert több oka lehet a hibának.

  Ha a CD-ROM meghajtó az egyetlen eszköz egy adott IDE csatolón, akkor
  a jumpereknek ``master'' vagy ``single'' állásban kell lenniük.
  Valószínűleg ez a leggyakoribb hiba.

  A Creative Labs (és mások is) IDE csatolókat építenek a hangkártyákra.
  Ebből következik az az érdekes probléma, hogy egyes gépeken csak egy
  csatoló van, másokon kettő beépítve az alaplapra (általában IRQ15),
  ezért a soundblaster csatolót a harmadik IDE portra teszik (IRQ11,
  állítólag).

  Ez problémákat okoz a linuxszal, mivel az 1.2.x kernelek nem
  támogatják a harmadik csatolót (az 1.3.x valamelyik tagjától kezdve
  már van,de az fejlesztői és nem detektálja automatikusan). Ezt
  többféleképpen lehet kikerülni.

  Ha már van második IDE port, könnyen lehet, hogy nem is használod,
  vagy még nincs rajta két eszköz. Vedd le az ATAPI meghajtót a
  hangkártyáról és rakd a második csatolóra. Ezután ki lehet kapcsolni a
  hangkártya csatolóját és még egy IRQ-t is megspórolsz.

  Ha nincs második IDE csatoló, akkor jumperold a hangkártya IDE
  csatolóját (ne a hangkártya hang részét) az IRQ15-re (második IDE
  csatoló).  Ennek működnie kell.
  Ha valamilyen okból nélkülözhetetlen az ún. ``harmadik'' csatoló, vagy
  más problémák vannak, szerezz egy 1.3.x kernelt ( az 1.3.57-ben van,
  például) és olvasd el a drivers/block/README.ide-t. Ott sokkal több
  információ van.

  7.9.  Furcsa üzenetek ``obsolete routing requests''-ről

  Szerezd be a route program, és minden más útvonalválasztást manipuláló
  program egy új verzióját. Az /usr/include/linux/route.h (ami valójában
  az /usr/src/linux-ban van) megváltozott.

  7.10.  A tűzfal (firewall) nem működik az 1.2.0 kernellel

  Upgrade-elj legalább az 1.2.1 verzióra.

  7.11.  ``Not a compressed kernel Image file''

  Nem tömörített kernel fájl.  Ne a /usr/src/linux könyvtárban keletkező
  vmlinux fájlt használd kernelnek. Az [..]/arch/i386/boot/zImage a jó.

  7.12.  Problémák a konzollal 1.3.x-ra való frissítés után

  Az /etc/termcap fálban a konzol termcap bejegyzésben írd át a dumb
  szót linux-ra. Lehet, hogy egy terminfo bejegyzést is kell csinálni.

  7.13.  Nem lehet semmit lefordítani kernel upgrade után

  A linux kernel forrás tartalmaz számos include fájlt (a .h végű
  fájlnevek) amelyekre a szabványos include fájlok hivatkoznak. A
  hivatkozások általában így néznek ki (ahol xyzzy.h egy fájl az
  /usr/include/linux-ban):

      #include <linux/xyzzy.h>

  Normális esetben van egy linux nevű link az /usr/include-ban, amely a
  kernel forrás include/linux könyvtárára mutat (általában
  /usr/src/linux/include/linux). Ha ez a link nincs a helyén, vagy rossz
  helyre mutat, akkor a legtöbb programot egyáltalán nem lehet
  lefordítani. Ha letörölted a kernel forrást, mert túl sok helyet
  foglalt, akkor nyilvánvaló, hogy ez a gond. Lehet baj a hozzáférési
  jogosultságokkal is.  Ha a root umask-ja alapértelmezés szerint nem
  engedi meg, hogy a többi felhasználó lássa a fájljait és a kernel
  forrást a p (preserve file modes) opció nélkül csomagoltad ki, akkor a
  felhasználók a C fordítót sem fogják tudni használni. Bár a chmod
  paranccsal is meg lehet ezt oldani, könnyebb újra kicsomagolni az
  include fájlokat. Ezt ugyanúgy kell csinálni, ahogy az elején
  kicsomagoltuk az egész forrást, csak még egy paraméter kell használni:

      blah# tar zxvpf linux.x.y.z.tar.gz linux/include

  Megjegyzés: a ``make config'' létrehozza a /usr/src/linux linket, ha
  nincs meg.

  7.14.  Korlátok megemelése

  A következő példa parancsok hasznosak lehetnek azoknak, akik szeretnék
  tudni hogyan lehet bizonyos, a kernel szabta korlátokat megemelni.

  echo 4096 > /proc/sys/kernel/file-max
  echo 12288 > /proc/sys/kernel/inode-max
  echo 300 400 500 > /proc/sys/vm/freepages

  8.  A 2.0.x kernelekre történő frissítés

  A kernel 2.0.x verziója elég sok változást hozott a kernel
  installálásában.  A forrásban található Documentation/Changes fájl
  tartalmazza a 2.0.x verzióra való átálláshoz szükséges tudnivalókat.
  Valószínűleg frissíteni kell több fontos programcsomagot, mint például
  a gcc, libc, és a SysVInit, és lehet, hogy meg kell változtatni néhány
  rendszerfájlt is. Ezekre készülj fel. De semmi pánik!

  9.  Modulok

  A betölthető kernel modulok memóriát takaríthatnak meg és
  megkönnyíthetik a konfigurálást. A modulok köre egyre bővül, magában
  foglal többek között fájlrendszereket, ethernet-kártya meghajtókat,
  szalagos egység és nyomtató meghajtókat.

  9.1.  A segédprogramok telepítése

  A modulok használatához szükséges segédprogramokat ugyanonnan lehet
  megszerezni, ahonnan a kernel forrást is, modules-x.y.z.tar.gz néven.
  Válaszd a legnagyobb x.y.z verziószámot, ami még kisebb-egyenlő a
  kerneled verziószámánál.  Csomagold ki a `tar zxvf modules-
  x.y.z.tar.gz' paranccsal, menj be a könyvtárba, amit létrehoz
  (modules-x.y.z), nézd át a README fájlt és hajtsd végre az
  installálási utasításokat (ami általában elég egyszerű, például make
  install). Ezután kell hogy legyenek insmod, rmmod, ksyms, lsmod,
  genksyms, modprobe és depmod nevű programok az /sbin könyvtárban. Ha
  akarod, kipróbálhatod őket az insmod-ban található ``hw'' példa-
  meghajtóval. Ebben az alkönyvtárban, az INSTALL fájlban olvashatóak a
  részletek.

  Az insmod beilleszt egy modult a futó kernelbe. A moduloknak általában
  drv_hello.o, ezt a `insmod drv_hello.o' paranccsal lehet beilleszteni.
  Az lsmod kilistázza az éppen használt modulokat.  Az output így néz
  ki:

      blah# lsmod
      Module:        #pages:  Used by:
      drv_hello          1

  `drv_hello' a modul neve, egy lap (``page'', 4k) memóriát használ és
  egyetlen másik kernel modul sem támaszkodik rá pillanatnyilag. A
  `rmmod drv_hello' távolítja el a modult. Figyeljük meg, hogy az rmmod
  egy modul nevet vár, nem egy fájlnevet. Az előbbit az lsmodlistájából
  lehet megtudni. A többi modul segédprogram is dokumentálva van a man­
  ual oldalakon.

  9.2.  Kernellel terjesztett modulok

  A 2.0.30 verziótól kezdve majdnem minden elérhető modul formában is.
  Használatuk a következő: ne konfiguráld bele a kernelbe, azaz ne mondj
  rá y-t a `make config' alatt. Fordíts egy új kernelt és bootolj vele
  újra. Menj be megint az /usr/src/linux-ba és add ki a `make modules'
  parancsot. Ez lefordítja az összes olyan modult, amely nem szerepelt a
  kernel konfigurációban és linkeket helyez el rájuk az
  /usr/src/linux/modules könyvtárban. Lehet őket közvetlenül innen is
  használni, vagy kiadhatod a `make modules_install' parancsot, ami
  elhelyezi őket a /lib/modules/x.y.z könyvtárban, ahol x.y.z a kernel
  verziója.

  Ez különösen a fájlrendszerek esetén lehet kényelmes. Bizonyos
  fájlrendszereket általában ritkán használnak. Például ha a kezembe
  kerülne egy msdos floppy, akkor annyit tennék, hogy insmod
  /usr/src/linux/modules/msdos.o, aztán rmmod msdos ha végeztem. Ez az
  eljárás kb. 50k memóriát szabadít fel a szokásos működés közben. Egy
  megjegyzést kell tenni a minix fájlrendszerrel kapcsolatban: a
  ``mentőlemeznek'' készített kernelbe mindig közvetlenül bele kell
  fordítani.

  10.  Egyéb konfigurációs opciók

  Ez a fejezet bizonyos, a konfigurációról szóló fejezetben nem említett
  opciók leírását tartalmazza. Az eszközmeghajtók nagy része nincs itt
  felsorolva.

  10.1.  Általános beállítások

  Normal floppy disk support (``Normál floppy lemez támogatás''). -
  Elolvashatod a drivers/block/README.fd fájlt is; ez különösen IBM
  Thinkpad felhasználóknak lehet fontos.

  XT harddisk support (``XT merevlemez támogatás'') - ha akarod
  használni azt a 8 bites XT vezérlőt, ami csak a port fogja a sarokban.

  PCI bios support (``PCI BIOS támogatás'') - kipróbálhatod, ha PCI
  alaplapod van, de légy óvatos, néhány régi PCI alaplap lefagy ezzel az
  opcióval. A PCI busz Linux alatti használatáról több információ
  található a PCI HOWTO-ban.

  Kernel support for ELF binaries (``ELF bináris támogatás'') - Az ELF
  egy erőfeszítés a bináris programok architektúrák és operációs
  rendszerek közötti hordozhatóságának megteremtésére. A Linux is ebbe
  az irányba halad, ezért ez minden bizonnyal kell.

  Set version information on all symbols for modules - a múltban a
  kernel modulokat újra le kellett fordítani minden új kernelhez.  Ha y-
  t választasz, akkor lehetővé teszi egy másik verzió alatt lefordított
  modulok használatát. Több információ a README.modules-ben van.

  10.2.  Hálózati opciók

  A hálózati opciók a NET-3-HOWTO-ban (vagy a NET-valami-HOWTO-ban)
  vannak leírva.

  11.  Tippek és trükkök

  11.1.  A make és patch parancsok kimenetének átirányítása

  Ha szeretnéd nyomonkövetni, hogy mit művelnek a `make' vagy `patch'
  parancsok, átirányíthatod a kimenetüket egy fájlba.  Először derítsd
  ki milyen shellt használsz: `grep root /etc/passwd' és keress valami
  olyasmit, hogy `/bin/bash'.

  Ha sh-t vagy bash-t használsz, akkor a

      (command) 2>&1 | tee (output file)

  parancs fog egy másolatot küldeni a (command) parancs kimenetéről az
  `(output file)' fájlba.

  csh vagy tcsh esetén használd a

      (command) |& tee (output file)

  parancsot.

  A zsh-t használókat nem éri váratlanul, hogy a fentiek közül bármelyik
  helyes ;-)

  rc esetén (megjegyzés: nem hiszem, hogy rc-t használsz):

      (command) >[2=1] | tee (output file)

  11.2.  Feltételes kernel installálás

  A floppy-k használatán kívül még több módszer van arra, hogy anélkül
  próbáljuk ki az új kernelt, hogy a régihez hozzányúlnánk. Sok más UNIX
  változattól eltérően a LILO képes arra, hogy bárhonnan a merevlemezről
  elindítson egy kernelt. (Ha nagy (500 MB vagy nagyobb) merevlemezed
  van, olvasd el a LILO dokumentácíót, mert ez gondot okozhat). Ha az
  alábbiakhoz hasonlót fűzöl a LILO konfigurációs fájl végére, akkor úgy
  választhatsz egy frissen fordított kernelt, hogy nem nyúlsz a régi
  /vmlinuz-hoz: (persze előbb futtatni kell a lilo-t.)

      image = /usr/src/linux/arch/i386/boot/zImage
      label = uj_kernel

  A legkönnyebben úgy lehet a LILO-t az új kernel indítására utasítani,
  hogy lenyomod a shift billentyűt bootoláskor (amikor csak annyi van a
  képernyőn, hogy LILO). Megjelenik egy prompt, ekkor be lehet írni,
  hogy `uj_kernel', hogy az új kernelt indítsa.

  Ha több különböző kernel forrását szeretnéd megtartani a gépeden
  egyszerre (ez nagyon sok helyet foglal, légy óvatos), akkor a
  legegyszerűbb elnevezni az őket tartalmazó könyvtárakat
  /usr/src/linux-x.y.z, formában, ahol x.y.z a kernel verziója. Ekkor
  egy szimbólikus linkkel lehet választani közöttük. Például az `ln -sf
  linux-1.2.2 /usr/src/linux' parancs az 1.2.2 verzió forrását teszi
  aktuálissá.  Mielőtt létrehozol egy ilyen szimbólikus linket,
  bizonyosodj meg arról, hogy az ln utolsó argumentuma nem egy létező
  könyvtár (régi szimbólikus link is lehet), mivel az eredmény nem az
  lenne amire számítasz.

  11.3.  Kernel frissítések

  Russell Nelson (nelson@crynwr.com) összefoglalja az új kernelverziók
  változásait. Ezek rövidek, érdemes beléjük pillantani egy upgrade
  előtt.  Letölthető anonymous ftp-vel a

      ftp.emlist.com/pub/kchanges

  címről, vagy a következő URL-ről:

      http://www.crynwr.com/kchanges

  12.  Egyéb idevágó HOWTO-k, amik hasznosak lehetnek

  ·  Sound-HOWTO: hangkártyák és segédprogramok

  ·  SCSI-HOWTO: minden az SCSI vezérlőkről és eszközökről

  ·  NET-2-HOWTO: hálózat

  ·  PPP-HOWTO: hálózatra kapcsolódás PPP-vel

  ·  PCMCIA-HOWTO: noteszgépekhez való meghajtók

  ·  ELF-HOWTO: ELF: mi ez egyáltalán, konvertálás

  ·  Hardware-HOWTO: a támogatott hardverek áttekintése

  ·  Module-HOWTO: további információ a kernel modulokról

  ·  Kerneld mini-HOWTO: a kernel démonról

  ·  BogoMips mini-HOWTO: ha kiváncsi vagy

  13.  Egyebek

  13.1.  A szerző

  A Linux Kernel-HOWTO angol eredetijének szerzője és karbantartója
  Brian Ward (bri@blah.math.tu-graz.ac.at). Kérem küldjetek véleményt,
  kiegészítéseket, javításokat. (Főleg a javítások a legfontosabbak
  nekem).  (A fordító megjegyzése: természetesen angolul írjatok neki,
  magyarul nem tud :-)

  Vethetsz egy pillantást a honlapomra az alábbi címek valamelyikén:

      http://www.math.psu.edu/ward/
      http://blah.math.tu-graz.ac.at/~bri/

  Bár igyekszem nagyon figyelmes lenni a levelezéssel, vedd figyelembe,
  hogy nagyon sokat kapok minden nap, ezért eltarthat egy darabig, amíg
  válaszolok.  Különösen, ha kérdéssel keresel meg, légy szíves próbálj
  meg minél világosabban és részletesebben fogalmazni. Ha arról írsz,
  hogy egy hardver-elem nem működik (vagy valami hasonló), tudnom kell
  mi a hardver-konfiguráció. Ha egy hibát jelentesz, ne csak annyit írj,
  hogy ``megpróbáltam ezt vagy azt, de hibát jelzett''; tudnom kell, mi
  volt a hiba. Azt is szeretném tudni, hogy a kernel, a gcc és a libc
  melyik verzióját használod. Ha csak annyit mondasz, hogy ezt vagy azt
  a disztribúciót használod, az nekem nem mond sokat. Az nem baj, ha
  egyszerű kérdést teszel fel; ne feledd: ha nem kérdezel, nem is kapsz
  választ! Mindenkinek szeretném megköszönni, akitől visszajelzést
  kaptam.

  Ha írsz nekem és nem kapsz választ elfogadható időn belül (három hét
  vagy több), akkor lehet, hogy véletlenül letöröltem a leveledet, vagy
  ilyesmi (bocs).  Kérem próbáld meg újra.

  Sok levelet kapok olyasmiről, ami valójában hardver probléma vagy
  téma. Ez rendben van, de ne feledd, hogy nem ismerem a világ összes
  hardverjét és nem tudom, mekkora segítséget tudok nyújtani. A gépeken,
  amelyeket személyesen használok vannak IDE és SCSI diskek, SCSI CD-
  ROM-ok, 3Com és WD ethernet kártyák, soros egerek, PCI-s alaplapok,
  NCR 810 SCSI-vezérlők, AMD 386DX40 Cyrix társprocesszorral, AMD 5x86,
  AMD 486DX4, és Intel 486DX4 processzorok. (Ez csak egy áttekintés
  arról, hogy miket használok és ismerek, és határozottan nem egy
  ajánlás, de ha olyat akarsz, kérdezz bátran :-) ).

  A 0.1 verzió 1994 október 3.-án készült. Ez a dokumentum elérhető
  SGML, PostScript, TeX, roff és sima szöveges formátumban.

  13.2.  Tennivalók

  A ``Tippek és trükkök'' fejezet egy kissé rövid. Remélem ki tudom
  bővíteni mások javaslatai alapján.

  A ``További csomagok'' is.

  Több hibakeresési és "katasztrófa" elhárító információ kell.

  13.3.  Hozzájárulások

  Linus README-jének egy kis része (kernel hackelés) át lett véve.
  (Kösz, Linus!)

  uc@brian.lunetix.de (Ulrich Callmeier): patch -s és xargs.

  quinlan@yggdrasil.com (Daniel Quinlan): sok javítás és kiegészítés

  nat@nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, sok egyéb
  dolog

  boldt@math.ucsb.edu (Axel Boldt): összegyüjtötte a kernel konfiguráció
  opcióinak leírását a hálózaton aztán átadta nekem a listát

  lembark@wrkhors.psyber.com (Steve Lembark): többszörös boot ötlet

  kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): néhány javítás és
  javaslat

  rmcguire@freenet.columbus.oh.us (Ryan McGuire): kiegészítések a make
  opcióihoz

  dumas@excalibur.ibp.fr (Eric Dumas): francia fordítás

  simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): japán fordítás

  jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): spanyol fordítás

  mva@sbbs.se (Martin Wahlen): svéd fordítás

  vamosi@freeside.elte.hu (Vámosi Zoltán): magyar fordítás

  bart@mat.uni.torun.pl (Bartosz Maruszewski): lengyel fordítás

  donahue@tiber.nist.gov (Michael J Donahue): sajtóhibák, a ``szeletelt
  kenyér verseny`` győztese.

  rms@gnu.ai.mit.edu (Richard Stallman): ``szabad'' dokumentáció
  koncepciója és a terjesztési engedély

  dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): NFS

  esr@snark.thyrsus.com (Eric Raymond): vegyes apróságok

  Azok is nagy segítségemre voltak, akik kérdésekkel és problémákkal
  kapcsolatban levelet küldtek.

  13.4.  Copyright, licensz és ilyesmi

  Copyright © Brian Ward, 1994-1997.

  Hungarian translation © Vámosi Zoltán, 1997.

  Ez a dokumentum szabadon másolható és terjeszthető, ha a copyright és
  az engedély szövegét minden másolaton megőrzik.

  E dokumentum módosított változatai a változatlan másolatokkal
  megegyező feltételek alapján másolhatók és terjeszthetők, ha a
  módosított változatot is az ezzel az engedéllyel megegyező
  feltételekkel terjesztik.  A fordítások is a ``módosított változat''
  kategóriájába tartoznak.

  Garancia: Nincs.

  Ajánlások: Az üzleti célú terjesztés megengedett és támogatott, de
  gyomatékosan ajánlott, hogy a terjesztő lépjen kapcsolatba a szerzővel
  a terjesztés előtt, a dolgok naprakészségének biztosítása végett.
  (Küldhetsz egy példányt abból, amit csinálsz, ha már úgyis csinálod).
  A fordítóknak is ajánlott kapcsolatba lépni a szerzővel mielőtt
  lefordítják. A nyomtatott változat jobban néz ki. A papírt használd
  fel újra.