Linux kernel konfigurálása
A HupWiki-ből...
Tartalomjegyzék |
Előszó
A dokumentum célja lépésről-lépésre elmagyarázni a linux kernel konfigurálását, lefordítását és használatba vételét. Elsősorban a kezdőknek készült, ezért csak az alapokon fog részletese végigvezetni.
(A dokumentum eredeti változatát fellow követte el.)
Ráhangolódás
Kérdés: Miért érdemes kernelt fordítani?
Válasz: Csodát ne várj tőle (kétszeresre gyorsult gép, feltörhetetlen rendszer, ...). Ha gyakorlott leszel a kernel-fordításban, akkor jobban fogod érteni a rendszer működését és jobban hozzá tudod igazítani az igényeidhez. Tehát leginkább új ismereteket nyersz vele.
K: Hol kapok részletesebb információt valamilyen témában?
V: Kereshetsz itt a HupWikin, a Wikipedián vagy a Google segítségével.
K: A fordításhoz vanilla forrást használjak vagy a disztrómhoz elérhetőt? Egyáltalán mi az a "vanilla"?
V: A vanilla a linux kernel eredeti változata, bővebben a Vanilla szócikkben. Magánhasználatra fordított kernel esetén talán ez ajánlható, mivel a disztribúciókhoz mellékelt kernelekbe számos külső patchet illesztenek be, a jobb hardware-kompatibilitás és egyéb okok miatt, de ezekre nagyrészt nem lesz szükség.
K: Fixen vagy modulba tegyem a dolgokat? Egyébként mi az a kernel modul?
V: Alapozásnak olvasd el a kernelmodul szócikket. Az, hogy az adott driver moduláris vagy fix legyen, végülis ez izlés kérdése, mivel egy 64 mega ramnál több memóriával rendelkező gép esetén elhanyagolható a moduláris kernel használatával nyerhető plusz memória. Saját kernel fordításakor a modulok legnagyobb haszna, hogy könnyen végig lehet próbálni több drivert, hogy megtudd, melyik kell valójában a rendszeredhez.
(Amikor arról írok, hogy "forgasd be a kernelbe", akkor arra utalok, hogy ne modulba rakd.)
K: Áttérnék a 2.6-os ágra.
V: Érdemes ezt átolvasni: http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
K: Érdemes a kernel forrást patchelni?
V: Patchben általában az utoljára kiadott stabil vanilla kernelhez képest elvégzett fejlesztéseket terjesztenek. Ezek egy része előbb-utóbb bekerül a vanillába, más része soha. Patchet használva új funkciókat, jobb stabilitást / teljesítményt kaphatsz, de ezekhez nem kapsz hivatalos támogatást a vanilla fejlesztőitől, csak a patch készítőitől. (Elterjedt patchek)
Fontos!
Mindig legyen kéznél egy grub boot lemez ('grub-install /dev/fd0') és a disztribúciód telepítő cdje (vagy bármilyen karbantartásra alkalmas cd). Egy bootképtelen rendszer jelentős idegeskedéshez vezet, ha nem vagy erre az eshetőségre felkészülve. Nagyon jó karbantartó live cd a Recovery Is Possible.
Kezdő lépések
K: Honnan lehet letölteni a kernel forrását?
V: The Linux Kernel Archives vagy egy mirror szerverről
Megj.: a foo.sign állományok digitális aláírást tartalmaz a foo állomány eredetiségének ellenőrzéséhez, lásd PGP.
K: Hova és hogyan kell kitömöríteni a kernelt?
V: A források szabványos helye az /usr/src és a kitömörítés menete: tar xvfj kernel-verzio.tar.bz2 -C /usr/src/. Kitömörítés után az /usr/src-n belül az aktuális kernelre mutasson egy symlink linux néven (nem kötelező, de problémát jelent a hiánya). (Ha ezek a dolgokat eddig nem tudtad, akkor _most ne olvass tovább_, inkább ismerkedj meg az alapokkal: Pingvin Füzetek)
K: Hogyan tudom ellenőrizni a kernel eredetiségét (PGP aláírás)?
V: Lépések:
- töltsd le a kernel forrásának (pld.: linux-2.4.25.tar.bz2) megfelelő signaturet (pld.: http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.25.tar.bz2.sign)
- szedd le a kernel nyilvános kulcsát: gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
- ellenőrizd: gpg --verify linux-2.4.25.tar.bz2.sign
(A "gpg: Jó aláírás (...)" jelzi, hogy minden rendben; a "gpg: FIGYELEM: Ez a kulcs nincs hitelesítve megbízható aláírással!" figyelmen kívül hagyható.)
K: Ellenőrzés MD5 értékek segítségével.
V: Példa: wolk esetén a főlapról kiindulva (http://sourceforge.net/projects/wolk/) a letölthető állományokat szűrd le a használni kívánt változat verziójára és a listában szerepelni fog pld. egy 2.4-WOLK-md5sums állomány, ami az md5 hasheket tartalmazza. Ezt rakd be ugyanabba a könyvtárba, ahol az ellenőrizni kívánt wolk patch (pld.: linux-2.4.20-wolk4.12s-fullkernel.tar.bz2) van, majd ellenőrizd le: md5sum -c -v 2.4-WOLK-md5sums; ha az ellenőrizni kívánt állományra OKt ad vissza, akkor minden rendben.
K: Hogyan tudom felrakni a patcheket?
V: Linux_kernel_patchelés
K: A fordítás lépései?
V: 2.4 esetén:
- make clean - letöröl minden generált állományt: .o, .tmp, stb. (a mrproper a .config-ot is törli)
- make menuconfig - karakteres beállító-felület indítása; grafikushoz: 'make xconfig' (Tcl/Tk)
- make dep - a függőségi viszonyok ellenőrzése
- make bzImage - a kernel image elkészítése (az arch/architektúra/boot-ba kerül)
- make modules - a modulok fordítása
- make modules_install - a modulok telepítése (a /lib/modules/kernel_verzio/kernel-be kerülnek)
2.6 esetén:
- make clean
- make menuconfig - az xconfig itt Qt felületet használ, a gconfig pedig GTKt
- make bzImage
- make modules
- make modules_install
K: Van tényleges különbség a beállító-felületek közt?
V: Elméletileg nem lehet, de gyakorlatilag néhány elvadult patch nem működik együtt az xconfiggal, csak a menuconfiggal. Érdemes megszokni az utóbbit.
K: Milyen csomagok kellenek a fordításhoz és üzemben tartáshoz?
V: gcc, make, binutils, module-init-tools (2.4-hez elég a modutils), procps, libc6-dev / glibc-dev; patch, bzip2, libncurses5-dev (menuconfig), tk8.4 (2.4 xconfig), libgtk2.0-dev & libglade2-dev & libglib2.0-dev (2.6 gconfig), libqt3-dev (2.6 xconfig); e2fsprogs, reiserfsprogs, sysfsprogs, stb.
Részletesebben tárgyalja a kernelhez adott Documentation/Changes állomány "Current Minimal Requirements" része.
A scripts/ver_linux kilistázza a fontos programok telepített verzióit.
K: Melyik gcc ajánlott?
V: Hivatalosan csak a 2.95.3 támogatott, az ezt megelőző vagy követő verziók nem. A 3-as széria a 3.3-tól kezdve általában teljesen stabil kódot generál; már ha a disztribúciódban nem kerül bele egy hibás változat (pld. fordítás közben "cc: Internal error" / "Internal compiler error" vagy gyakori, hogy boot elején lemerevedik pld. az scsi résznél). A patchek egy része 3-as gcct igényel.
K: Hogyan tudom az alapértelmezettnél ('file /usr/bin/gcc') eltérő ('ls /usr/bin/gcc*') gccvel lefordítani a kernelt?
V: A legegyszerűbb módszer a fő 'Makefile' átírása:
HOSTCC = gcc CC = $(CROSS_COMPILE)gcc
sorokban a "gcc"t írd át értelem szerint (pld. 2.95 esetén: "gcc-2.95"-re).
K: A 'make bzImage' után egy hibaüzenet ad: "warning: kernel is too big for standalone boot from floppy".
V: Figyelmen kívül hagyhatod, hacsak nem boot floppyt akarsz csinálni.
K: Kernel használatba vétele.
V: Az aktuális kernel forrásra mindig mutasson egy linux symlink az '/usr/src'-ben, különben néhány külső modul nem fordul le.
A forrás arch/architektúra/boot könyvtárában (ha fogalmad sincs, hogy milyen architektúrát használsz, akkor valszínüleg i386 ;-) elkészült egy "bzImage" állomány, ezt másold át a '/boot' könyvtárba és állítsd be a bootloadert, hogy ezt használja alapértelmezett kernelként.
GRUB gyostalpaló (van részletes ismertető is):
A '/boot/grub/menu.lst' így nézzen ki: "kernel (hdx,y)/boot/bzImage-now root=/dev/hdAa ro"
(A "hdx" az a meghajtó legyen, amin a rendszer van ('/boot/grub/device.map') az "y" a root partíció, a "root=" szintén a rootfs legyen ('df /').)
Ajánlott a grubot: 'grub-install /dev/hdA' módon telepíteni.
Megj.: a grubot elég egyszer telepíteni, ha új kernelt akarsz használatba venni, akkor alkalmazd a "bzImage-now" technikát, lásd pár sorral lejjebb.
Fontos!
Nagyon ajánlott rendet tartani a kernel körül:
Configok: '/ahol_jol_esik/config_backup/[kernel_verzio]/.config-[forditas_datuma]_[valtozat]'
Pld.: "2.4.20/.config-20040321_5"
Lefordult bzImagek a '/boot'ban: 'bzImage-[kernel_verzio]_[valtozat]'
Pld.: "bzImage-2.4.20-grsec_5"
Én úgy egyszerűsítettem le a különböző kernel fordítások közti váltást, hogy a grub konfigjában két bejegyzés van: bzImage-now és bzImage-old. A -now egy symlink az új kernel imagera, az -old pedig az előző _stabilan_ működőre.
Ha jót akarsz magadnak (és nem elvadult bugokra vadászni), akkor egy új kernel _verzió_ felkonfiguráláshoz ne a régi '.config'ot használd, hanem gyakorold be a rendszeredet és utólag hasonlítsd össze az előző '.config'gal (pld. a tkdiff jól használható erre; karakteres megoldás a wdiff, ami pagerre küldi olvasható állapotban a különbségeket: 'wdiff -a .config-20040424 .config-20040428').
A konfigurálás
Azokról az opciókról lesz szó, amik az _alapértelmezett_ állapothoz képest változtatni érdemes (persze ez hardware és software környezet függvénye) vagy egyszerűen megjegyzésem van róluk. Amihez a 2.4 részben már írtam megjegyzést, nem biztos, hogy külön kitérek a 2.6-ban is, tehát a részek egymásra épülnek. Sorry, nem érdemes kétszer ugyanarról az opcióról / opciócsoportról ugyanazt leírni.
A FIXME azt jelenti, hogy az adott dolgot megfelelő hardware / software hiányában nem tudtam kipróbálni, ezért ha tudsz róluk, mindenképp írj.
Miért nincs részletes információ minden opcióról?
Az adott opcióról általában elegendő információt találsz a "Help"jében, vmint a kernelhez adott '/Documentation' alkönyvtárban, vagy a neten (lásd "Ráhangolódás" részt). Sorry, az összes "Help" lefordítása és a fordítás karbantartása rendkívül erőforrás- és időigényes lenne.
A kernel konfigurációs felülete fordítás alatt van, a patch elérhető itt: The Linux Kernel Translation Project
2.4
(Ez a rész a vanilla 2.4.29 kernel alapján készült, lehetséges, hogy más verzióknál kisebb eltérések lesznek.)
- Code maturity level options
- Prompt for development and/or incomplete code/drivers - ha nincs szükséged egy még fejlesztés alatt lévő (vagy már elavultnak számító) dologra, akkor kapcsold ki; az irományban nem fogok külön kitérni ezekre és az EXPERIMENTALnak nyilvánított részekre, mivel "ha nem tudod, hogy mire jó, akkor valszínüleg nincs rá szükséged"
- Loadable module support
- Enable loadable module support = Y - akkor van rá szükség, ha szeretnél külső kernelmodulokat (pld. nvidia bináris modul) használni
- Set version information on all module symbols = N - lehetővé teszi az ezzel a kernellel fordított modulok használatát más kernelekkel (FIXME: tapasztalat?)
- Kernel module loader = Y - a kernel maga próbáljon meg a megfelelő modulokat betölteni; vagy intézd kézzel ('modprobe' + '/etc/modules')
- Processor type and features
- Processor family - válaszd ki a legmegfelelőbbet (dmidecode- "Processor Information")
- Machine Check Exception = Y - a hardware jelezze a kernelnek, ha problémát észlel; néhány konfigurációnál túl paranoid, ilyenkor kapcsold ki
- /dev/cpu/microcode - Intel IA32 CPU microcode support = Y - microcode
- /dev/cpu/*/msr - Model-specific register support - egyprocis gépeken nem kell
- /dev/cpu/*/cpuid - CPU information support = Y - rendszerfigyelő programoknak kellhet
- BIOS Enhanced Disk Drive calls determine boot disk = N - ha támogatja a merevlemezed, akkor kapcsold be (lásd: merevlemez kézikönyv, gyártó honlapja)
- MTRR (Memory Type Range Register) support = Y - pld. az MPlayer használja
- Symmetric multi-processing support - több processzoros gépeken van rá szükség; (egy HyperThreading processzor két valódinak felel meg; a kétmagos proci is)
- General setup
- Support for hot-pluggable devices - pcmcia kártya és társai
- BSD Process Accounting = Y - néhány program használja ezeket az információkat
- Sysctl support = Y - a kernel néhány változóját lehet valós időben manipulálni a 'sysctl' programmal (lásd "Tanácsok: kernel paraméterek valós idejű beállítása")
- Kernel core (/proc/kcore) format = ELF - linuxon alapértelmezett
- Kernel support for a.out binaries = Y - egy régi, ma már rendkívül ritkán használt bináris formátum; kompatibilitási okokból bent lehet hagyni
- Kernel support for ELF binaries = Y - modern bináris formátum, ma már minden ezt használja
- Kernel support for MISC binaries = Y - lehetővé teszi, hogy bármilyen futtatható formátumhoz egy wrappert rendeljünk és ezután ugyanúgy indítható, mintha egy a.out/elf bináris lenne; de önmagában a bekapcsolása nem elég, a beállításáról olvasd el a 'Documentation/binfmt_misc.txt' állományt
- Select task to kill on out of memory condition = N - hogyan viselkedjen a kernel, ha elfogy a fizikai memória és a swap? eredeti módszer: kilövi az éppen memóriát foglalni akaró taszkot, mivel vszínüleg ez okozza a problémát; ha bekapcsoljuk ezt az opciót, akkor az új módszer lép életbe: megpróbálja beazonosítani a problémát okozó taszkot
- ACPI Support = Y - az ACPI az APMnél modernebb energiagazdálkodási rendszer
- Button = Y - a házon helyet foglaló gombok használata (pld.: a power gomb szabályosan kapcsolja le a gépet)
- Fan = Y - a ventilátor szoftveres szabályozása, ha lehetséges
- Processor = Y - szoftveres processzorhűtés
- Thermal Zone = Y - ártani nem árthat meg
- Memory Technology Devices (MTD) - beágyazott gépekhez kell
- Parallel port support - pld. párhuzamos portra kötött nyomtatók igénylik
- Plug and Play configuration - kapcsold be és a kernel belövi a pnp pci / isa kártyákat, egyébként kézzel lehet
- Block devices
- Loopback device support = Y - lehetővé teszi egy állomány block deviceként használatát és így felmountolhatsz tetszőleges, a kernel által támogatott állományrendszert tartalmazó imaget (cd: .iso, floppy: .img, lementett partíció image)
- Per partition statistics in /proc/partitions = Y - rendszerfigyelő programok használják
- RAM disk support = N - fix méretű területet foglal le a memóriában, amit fel lehet mountolni; ha ilyen kell inkább tmpfst használd
- Multi-device support (RAID and LVM) - RAID FIXME
- Networking options
- Packet socket = Y - néhány alacsony szintű hálózati program igényli
- Network packet filtering = Y - iptables nem árt egy tűzfalhoz
- Socket Filtering = Y - szintén tűzfal
- Unix domain sockets = Y - unix környezetben elterjedt eljárás a hálózat elérésére; pld. Xnek kell
- TCP/IP networking = Y
- IP: multicasting = N - a syncookie supportot leszámítva desktop géphez nincs szükség ezekre
- IP: advanced route = N
- IP: kernel level autoconfiguration = N
- IP: tunneling = N
- IP: GRE tunnels over IP = N
- IP: TCP Explicit = N
- IP: TCP syncookie support = Y - "syn flooding" ellen véd, használata a "Help"ben
- IP: Netfilter Configuration - szintén tűzfal, legegyszerűbb, ha mindent bekapcsolsz
- Appletalk protocol support = N - Apple gépekkel közvetlen hálózati kapcsolathoz kell
- DECnet Support = N - DECnet háló
- 802.1d Ethernet Bridging = N
- The IPX protocol = N - novell háló
- Telephony Support - spec hardwarerrel rákapcsolhatod a hagyományos telefont a gépre
- ATA/IDE/MFM/RLL support
- IDE, ATA and ATAPI Block devices
- Include IDE/ATA-2 DISK support = Y
- Use multi-mode by default = N - akkor van rá szükséged, ha a "Help"ben jelzett hibával bootol a gép
- Auto-Geometry Resizing support = N - régi alaplapok nem kezelik megfelelően a 32gigánál nagyobb merevlemezeket
- Include IDE/ATAPI CDROM support = N - ide interface a cd-/dvdrom/-rw hez; ha cdt akarsz írni, akkor scsi emu kell, egyébként kapcsold be
- SCSI emulation support = Y - cd íráshoz kell, lásd Cdrecord
- IDE Taskfile Access = N - adatvesztést okozhat
- IDE chipset support/bugfixes - válaszd ki az alaplapi chipsetednek megfelelőt ('lspci' - "IDE interface") és a következőket kapcsold be:
- PCI IDE chipset support
- Generic PCI IDE Chipset Support = N - felesleges, ha van az alaplapodhoz megfelelő támogatás
- Sharing PCI IDE interrupts support - unmaskirq, a merevlemez irqját más is használhassa (gyorsabb)
- Generic PCI bus-master DMA support - DMA, a prockó kihagyásával képes a merevlemez a memóriába adatot szállítani (gyorsabb)
- Use PCI DMA by default when available - alapból kapcsolja be a dmat
- Include IDE/ATA-2 DISK support = Y
- IDE, ATA and ATAPI Block devices
- SCSI support - (csak a cdírásról lesz most szó)
- SCSI disk support = N - nem, mi cdt írunk, nincs scsi merevlemezünk; de ha usb használatát tervezzük, akkor kell
- SCSI CD-ROM support = Y - cd támogatás viszont kell
- Enable vendor-specific extensions = N - scsi emuláláshoz nincs rá szükség
- SCSI generic support = Y - szintén kell
- Some SCSI devices (e.g. CD jukebox) support multiple LUNs - a következő opciókat nyugodtan kapcsold ki
- SCSI low-level drivers - néha bekapcsolva felejt itt modult a kernel, kapcsold ki
- PCMCIA SCSI adapter support -
- Fusion MPT device support - spec. scsi egység
- I2O device support - spec kártya
- Network device support
- Network device support = Y - hálózati kártya nem megy nélküle
- Dummy net driver support = Y - diagnosztika céljára jól jöhet
- ARCnet support = N - ilyen típusú hálózati kártyák támogatása
- Ethernet (10 or 100Mbit) - ha 10/100 ethernet kártyád van keresd ki a megfelelőt
- Ethernet (1000 Mbit) - 1000 kártyák
- PPP (point-to-point protocol) support = Y - Modem, ISDN, ADSL (PPPhez, nem DHCPhez) kapcsolathoz kell; nyugodtan kapcsold be az összes alfunkcióját
- Amateur Radio support - netezés amatőr rádió adóval
- IrDA (infrared) support - infra port használhatóvá tétele
- ISDN subsystem - isdn kártyák
- Old CD-ROM drivers (not SCSI, not IDE)
- Input core support - usb input eszközök
- Character devices
- Virtual terminal = Y - virtuális terminál nélkül nem tudsz bejelentkezni sem
- Support for console on virtual terminal = Y - a rendszer konzol futhat virtuális terminálon; szintén alap
- Standard/generic (8250/16550 and compatible UARTs) serial support = Y - soros port használatához kell
- Unix98 PTY support = Y - terminál emulátorokhoz kell
- I2C support = N - hardware szenzorok elérése, de inkább az lm_sensorst használd; de néhány speciális hardware igényli (pld. video for linux)
- Mice - válaszd ki, hogy Serial / PS/2 / egyéb egeret használsz;
- Enhanced Real Time Clock Support = Y - nagypontosságú óra (RTC), pld. MPlayer használja
- /dev/agpgart (AGP Support) - az alaplapodnak megfelelő agp támogatást rakd be ('lspci'); megj.: Nvidia videokártya driverének telepítése
- Direct Rendering Manager (XFree86 DRI support) - a dri project keretében elérhető driverek beforgatása (3dfx, ati)
- PCMCIA character devices
- Virtual terminal = Y - virtuális terminál nélkül nem tudsz bejelentkezni sem
- Multimedia devices
- Video For Linux - TV / rádió kártyák támogatása; i2ct igényel
- File systems - nagyon fontos, hogy a root állomány-rendszert (mount | grep " / ") mindenképp statikusan forgasd be, különben nem bootol be a rendszer; lásd még: fstab
- Quota support = N
- Kernel automounter = N - jobb kézzel mountolni
- Kernel automounter version 4 support (also supports v3) = N
- Reiserfs / Ext3 / DOS FAT / Second extended / JFS / XFS / egyéb - kapcsold be amelyiket használni fogod (a debugging általában nem kell); a FAT minden pontját érdemes bekapcsolni (umsdoshoz olvasd el a Helpet)
- Compressed ROM file system support = N - pld. live cdken használják
- Virtual memory file system support (former shm fs) = Y - tmpfs, bővebben a függelékben
- ISO 9660 - cdk állományrendszere, érdemes minden alpontját bekapcsolni
- /proc file system support = Y - virtuális állományrendszer, amiből információt lehet kinyerni a rendszerről; rengeteg program használja
- /dev file system support = N - nem statikus /dev-et használó rendszerek esetén (nincs '/dev/MAKEDEV') kell; az opció megjelenéséhez kapcsold be a "Prompt for development and/or incomplete code/drivers"t
- Automatically mount at boot = N - ha devfst használsz kapcsold be (azonos a "devfs=mount" boot paraméterrel)
- /dev/pts file system for Unix98 PTYs = Y - terminál emulátorokhoz kell
- Network File Systems
- Partition Types = N - nem kell piszkálni, a "PC BIOS (MSDOS partition tables) support" alapból be van kapcsolva, a többi csak nem x86 környezetben használatos partíció fajták támogatásához kell;
- Native Language Support
- Default NLS Option: = a rendszered kódlapjával egyezzen meg (utf8 vagy iso8859-2)
- Codepage 852 (Central/Eastern Europe) = Y - kell magyar fat16 támogatáshoz (a fat32 is így tárol, amit tud)
- Windows CP1250 (Slavic/Central European Languages) = Y - magyar fat32
- NLS ISO 8859-1 (Latin 1; Western European Languages) = Y - biztonság kedvéért, nyugat európai nyelvek
- NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages) = Y - magyar iso
- NLS UTF8 = Y - unicode
- Console drivers - framebuffert csak akkor, ha tényleg szükséged van rá (X nélkül grafikus kimenet)
- Video mode selection support = Y - 80x25-től különböző felbontást is ki lehet választani a karakteres kimenethez; lásd függelék
- Sound
- Sound card support = Y - ha osst akarsz, akkor is kell; válaszd ki (Y) a hangkártyádnak megfelelő oss drivert ('lspci' "Multimedia audio controller"); ha később külső alsa modult (lásd függelék) akarsz, akkor modulba tedd (M)
- USB support - USB
- Bluetooth support
- Kernel hacking
- Kernel debugging = Y
- Magic SysRq key = Y - lásd MagicSysRQ
- Kernel messages buffer length shift - állítsd a Helpben javasoltnál eggyel magasabb értékre (tehát pld. egy procis gépen 15-re)
- Cryptographic options - kapcsolj ki mindent, ha vminek kell, akkor felülbírálja
- Library routines - kapcsolj ki mindent, ha vminek kell, akkor felülbírálja
2.6
(Ez a rész a vanilla 2.6.10 kernel alapján készült, lehetséges, hogy más verzióknál kisebb eltérések lesznek.)
Az opciók egy részét az előző részben letárgyaltuk, legfeljebb most más helyre kerültek.
- Code maturity level options = Y - ha szükséged van a 2.6 kernel néhány még nem véglegesített (pld. lm_sensors) ill. már elavulóban lévő (pld.: devfs) részére, akkor ajánlott bekapcsolni
- Select only drivers expected to compile cleanly = Y
- General setup
- Support for paging of anonymous memory (swap) = Y
- BSD Process Accounting = Y
- Auditing support = N - pld. SELinux igényli
- Kernel log buffer size = 16 - nyugodtan emeljük a "Help" ben ajánlott felé eggyel (az opció megjelenéséhez kapcsold be: Kernel hacking - Kernel debugging)
- Support for hot-pluggable devices
- Kernel .config support = Y
- Enable access to .config through /proc/config.gz = Y - a fordításhoz használt .configot lehet elérni utólag a /proc alól, hasznos lehet, ha gyakran fordítasz
- Configure standard kernel features (for small systems) - a doksiban szereplő opciók egy része (pld. "virtual terminal") csak akkor fog megjelenni, ha ezt bekapcsolod; alapértelemezés szerint ezek be vannak kapcsolva
- Loadable module support
- Enable loadable module support = Y
- Module unloading = Y - ha futásidőben akarsz modulokat kiszedni (rmmod)
- Forced module unloading = N - használatban lévő modulokat is el lehet távolítani (rendszerhalálhoz vezethet)
- Module versioning support = N
- Automatic kernel module loading = N
- Module unloading = Y - ha futásidőben akarsz modulokat kiszedni (rmmod)
- Enable loadable module support = Y
- Processor type and features
- Subarchitecture Type - válaszd ki a megfelelőt
- Processor family - válaszd ki a megfelelőt
- HPET Timer Support = N - modernebb időzítő; alaplapi és bios támogatás kell hozzá
- Symmetric multi-processing support
- Preemptible Kernel = Y - nagy terhelés esetén kevésbé akadnak a programok (néhány konfigurációnál a kikapcsolása hoz jobb eredményt)
- Local APIC support on uniprocessors = Y - csak akkor van jelentősége, ha a processzor támogatja
- IO-APIC support on uniprocessors = Y - szintén
- Machine Check Exception = Y
- Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 = Y
- /dev/cpu/*/cpuid - CPU information support = Y
- Firmware Drivers
- High Memory Support = off
- MTRR (Memory Type Range Register) support = Y
- Use register arguments = N - nem minden zárt forrású modul támogatja
- Power management options (ACPI, APM)
- Power Management support - ACPIt vagy APMt használj, egyszerre a kettő nem megy
- Software Suspend = N - kiírja a memória tartalmát a swapba és a következő indításkor ugyanonnan lehet folytatni a működést
- ACPI - lásd a 2.4 részben
- APM - szintúgy
- CPU Frequency scaling = N - leginkább a laptopokban helyet foglaló procik lehetővé teszik az órajel futás közbeni manipulálását (csökkentve az energiafogyasztás és a melegedést), ellenőrizd, hogy a processzorod szerepel-e a felsoroltak közt ('dmidecode')
- Power Management support - ACPIt vagy APMt használj, egyszerre a kettő nem megy
- Bus options
- Executable file formats
- Device Drivers
- Plug and Play support
- Plug and Play support = Y - bios helyett a linux konfigurálja fel a pnp eszközöket; (biosban "pnp os installed" bekapcs)
- Block devices
- Normal floppy disk support = Y
- Loopback device support = Y
- Network block device support = N
- RAM disk support = N - fix méretű területet lefoglal a memóriában, de hasznosabb a tmpfs (initrdnek kell, ami nem sok vizet zavar saját kernelnél)
- Low Performance USB Block driver = N - az sub-storage támogatásnak bekavar
- Support for Large Block Devices - 2 terrabytenál nagyobb eszközök támogatása
- ATA/ATAPI/MFM/RLL support
- Include IDE/ATAPI CDROM support = Y - a 2.6 kernelnél már nem kell scsi emuláció a cdíráshoz, lásd Cdrecord
- Include IDE/ATAPI FLOPPY support = N - csak spec. esetben van erre szükség (ha nem tudod mi ez, neked valószínűleg a Normal floppy disk support kell)
- IDE chipset support/bugfixes - válaszd ki az alaplapodnak megfelelő chipkészletet ('lspci' - "IDE interface"); az unmasrqt és a dmat ne kapcsold ki
- SCSI device support
- IEEE 1394 (FireWire) support
- Networking support - ethernet kártya, ppp, stb. (a hálózattal kapcsolatos beállítások a 2.4 részben vannak tárgyalva)
- Networking options - tcp/ip, stb.
- Network packet filtering (replaces ipchains)
- IP: Netfilter Configuration - tűzfallal (iptables) kapcsolatos beállítások
- Network packet filtering (replaces ipchains)
- Networking options - tcp/ip, stb.
- Input device support - a 2.4-hez képest ide lett összegyűjtve minden bemeneti eszköz
- Input devices (needed for keyboard, mouse, ...) = Y
- Userland interfaces = Y
- Mouse interface = Y - egér elérése /dev/input/mouseX alatt; a /dev/input/mice egy egységes egér interface
- Provide legacy /dev/psaux device = Y - kompatibilitási okokból a ps/2 egér elérhető a régi helyén is
- Serial i/o support = Y - ps/2, soros port, stb.
- PCI PS/2 keyboard and PS/2 mouse controller = N - neve megtévesztő, csak speciális esetben van rá szükség (lásd help)
- i8042 PC Keyboard controller = Y - alap bill., a köv. 3 opcióra csak spec. esetekben van szükség
- Keyboards = Y
- AT keyboard support = Y - pck alapértelmezett billentyűzete (tehát nem pld. usb); a többi spec. hardwaret igényel
- Mice = Y - válaszd ki a megfelelő egeret
- Character devices
- Virtual terminal = Y
- Support for console on virtual terminal = Y
- Unix98 PTY support = Y
- Legacy (BSD) PTY support = N - vszínűleg nem lesz rá szükség és néhány esetben a terminálok / konzolok használhatatlanná válnak
- QIC-02 tape support = N
- Intel/AMD/VIA HW Random Number Generator support = N - ha a "Help"ben felsorolt hardwarerrel rendelkezel
- Enhanced Real Time Clock Support = Y
- /dev/agpgart (AGP Support) - válaszd ki az alaplapi chipkészleted a listáról
- Direct Rendering Manager - ha a listában szereplő videókártyával rendelkezel és dri-vel szeretnéd használni az Xet kapcsold be
- Virtual terminal = Y
- I2C support = Y - Alaplapi szenzorok
- I2C device interface = Y
- Graphics support
- Support for frame buffer devices = N - csak ha pld. X nélkül akarsz grafikus kimenetet, egyébként csak gond van vele
- Console display driver support
- VGA text console = Y
- Video mode selection support = Y
- MDA text console (dual-headed) = N
- VGA text console = Y
- Sound - egyszerre nem lehet ALSA és OSS
- Advanced Linux Sound Architecture = Y - az ossnél modernebb
- Advanced Linux Sound Architecture
- Sequencer support = Y
- Sequencer dummy client = N
- OSS Mixer API = Y - az alsa képes nagyon jó oss emulációra; a /dev/mixer támogatása;
- OSS PCM (digital audio) API = Y - a /dev/dsp támogatás
- OSS Sequencer API = Y - a /dev/sequencer és a /dev/music támogatása
- RTC Timer support = Y - nagypontosságú hardware időzítő használata
- Verbose printk = Y - bőbeszédűbb hibaüzenetek
- Debug = N
- Generic devices
- Dummy (/dev/null) soundcard = N - lesz egy álhangkártyád, ami minden bejövő jelet a /dev/null-ba irányít; bekavarhat
- Virtual MIDI soundcard = N - midi hardwarehez kellhet (a maradék opciók szintúgy)
- ISA & PCI &; ALSA USB devices - válaszd ki a megfelelő drivert ('lspci' "Multimedia audio controller"); ha rendelkezel külön hangkártyával, akkor az alaplapra integráltat nem kell bekapcsolni
- Generic devices
- Sequencer support = Y
- Advanced Linux Sound Architecture
- Open Sound System = N
- Advanced Linux Sound Architecture = Y - az ossnél modernebb
- Plug and Play support
- File systems - a részletekért lásd a 2.4 részt
- CD-ROM/DVD Filesystems = Y
- DOS/FAT/NT Filesystems = Y
- MSDOS fs support = Y = 8.3 állománynevek
- VFAT (Windows-95) fs suppor = Y - hosszú állománynevek
- Default codepage for FAT = 852 - magyar kódlap a 8.3 állományokhoz
- Default iocharset for FAT = iso8859-2 - magyar kódlap a hosszú állománynevekhez
- NTFS file system support = N - az ntfs írás nagyon korlátozott, lásd "Help"
- Pseudo filesystems
- /proc file system support = Y
- sysfs file system suppor = Y
- /dev file system support - devfs
- Automatically mount at boot - ha devfst használsz kapcsold be (azonos a "devfs=mount" boot paraméterrel)
- /dev/pts Extended Attributes - acl a /dev/pts-hez
- Virtual memory file system support (former shm fs) = Y
- HugeTLB file system support = N
- Miscellaneous filesystems = N
- Network File Systems = N - ha Windowsos fájl/nyomtatómegosztást szeretnél használni, akkor az SMB-t válaszd e menüpont alatt
- Partition Types = N
- Native Language Support
- Kernel hacking
- Kernel debugging = Y
- Magic SysRq key = Y
- Use 4Kb for kernel stacks instead of 8Kb = N - problémát okozhat külső kernel modulokkal
- Cryptographic options - kapcsolj ki mindent, ha vminek kell, akkor felülbírálja
- Library routines - kapcsolj ki mindent, ha vminek kell, akkor felülbírálja
Függelék
Hibák
Ha bármilyen problémád lenne a kernel bootolása folyamán, akkor a kernel boot paramétereit egészítsd ki egy "debug"gal, ekkor részletesebb információkat fog kiírni.
Boot elején hibaüzenet: "VFS: Unable to mount root fs on xx:xx"
Ellenőrizd:
- a bootloadernek helyes root állományrendszer legyen megadva ("kernel (...) root=/dev/hdXY")
- a root állományrendszer ne modulban legyen, hanem fixen
- megfelelő ide támogatás és chipkészlet legyen bekapcsolva
- "devfs"t használó disztribúciók esetén azt sem árt fixen beforgatni: ("/dev file system support" + "Automatically mount at boot")
Boot idején hibaüzenet: "VP_IDE: not 100% native mode: will probe irqs later"
Több módszer létezik az ide eszközök IRQjának kiderítésére, ez csak egy jelzés, hogy az egyik nem elérhető. (Mindenesetre érdemes egyszer összevetni a "IDE chipset support/bugfixes" beállításait az 'lspci' eredményével. A DMA állapotának lekérdezése: 'hdparm -i /dev/hdX', ha *-gal egy dma mód van jelölve, akkor oké.)
log buffer
Előfordulhat, hogy nem lehet visszakeresni ('var/log/syslog', stb.) a boot üzeneteinek elejét, mert megtelik a buffer; ekkor érdemes a "log_buf_len=n" boot paramétert használni, 64k elég szokott lenni. (Ugyanez érhető el a "General setup - Kernel log buffer size" beállításával.)
Sikertelen egy program indítása és a következő üzenetet kapom: "FATAL: kernel too old"
Az adott program futtatásához (lásd: 'file program': "(...): ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped") az általad használt kernelnél (lásd: 'cat /proc/version': "Linux version 2.0.20 (...)") frissebbet kell használnod.
Tippek
Nvidia videókártya esetén ajánlott az agpart helyett az nvidia saját agp támogatását használni, amennyiben támogatja az alaplapot; bővebben erről az '/usr/share/doc/NVIDIA_GLX-1.0/README' "APPENDIX F: CONFIGURING AGP" részében. (Megj.: ha instabil lenne a bináris nvidia driver ("esélyes" erre a via vagy sis alaplapi chipkészlet, amd processzor, stb.) akkor kapcsold ki az agp támogatást; 3d így is lesz, persze szerényebb teljesítménnyel.)
túl gyors egér és egyéb input problémák a 2.6-ban:
http://lwn.net/Articles/69107/
NLS (native language support):
A mountoláskor az állomány-/könyvtárnevek kezeléséhez használatos karakter-kódkészletet határozza meg. Nem az állománynevek tárolási módját, hanem azt, hogy hogyan férsz hozzá (pld. a terminálon keresztül). Az unicode a jövő, ezért érdemes ezt rakni alapértelmezettnek, de ha eddig iso8859-2-t használtál, az problémákhoz vezethet, ezért áttérés előtt ékezetteleníts minden állományt (pld. krename, detox). A mountolásról lásd az fstab szócikket.
A kernelnek átadható paraméterek (pld. video=...)?
Nézd át a 'Documentation/kernel-parameters.txt'-t.
"Video mode selection support" használatba vétele:
a bootloadernek kell átadni a "vga=" paramétert; először "vga=ask" segítségével kérdezd le, az elérhető felbontásokat, majd pld. "vga=10" állítja be minden indításkor (megj.: a "10" az ask listájánál "a" ként szerepel, stb.)
Gyakori kérdések a kernellel kapcsolatban.
Megváltoztattam az aktuális kernel forrásának könyvtárnevét, ezért pld. nem fordulnak a modulok.
Ellenőrizd, hogy a '/lib/modules/kernel_verzio/build' a megfelelő könyvtárra mutasson ('/usr/src/linux-kernel_verzio').
Olyan külső kernelmodulok telepítése, amelyek nem tartalmaznak "make" fordítórendszert, vagy - ha tartalmaznak - nem ismerik a 'make install' parancsot.
A lefordult .o állomány(oka)t másold át a '/lib/modules/[verzio]/kernel/drivers/' megfelelő alkönyvtárába, utána már kezeli a 'modprobe'; vagy kézi betöltése: 'insmod modul.o', majd 'depmod -a' a függőségek miatt.
Állítólag szükség van az "initrd"re.
Mire jó? Initrd
Ha nem moduláris kernelt készítesz, akkor biztos, hogy nem kell ilyesmivel foglalkoznod.
Mi a helyzet a "System.map"pal?
Alapesetben nincs rá szükség. A debugolást segíti azzal, hogy a kernel hivatkozási címeit helyettesíti a funkció nevével.
Ha mindenképp be akarod üzemelni, akkor így a legegyszerűbb: ln -s /usr/src/linux/System.map /boot/
Úgy hallottam hogy ...
- a 2.4 fordításakor a 'make dep' után futtatni kell egy 'make clean't is.
Ez a lépés felesleges, mert a 'make clean' nem töröl semmi olyat, amit a 'make dep' létrehozott. (lásd: Makefile: "dep-files", "MRPROPER_FILES")
- kézzel kell létrehozni az 'include/asm' symlinket.
Szintén felesleges lépés, majd 2.6 esetén a 'make bzImage', 2.4 esetén a 'make menuconfig' létrehozza. (lásd: Makefile 2.6: "SYMLINK", "ARCH" és "SUBARCH"; 2.4: "symlinks")
DE amennyiben a disztródhoz nem járnak alapértelmezetten a kernel headerjei (pld.: debian alatt a 'linux-kernel-headers' csomag, amitől függ a 'libc6-dev'), akkor valóban kézzel kell létrehozni:
lépj be az 'include/' könyvtárba, majd az architektúrádnak megfelelő ('uname -m') symlinket hozd létre; pld.: 'ln -s asm-i386/ asm'
mi a helyzet a "kernel: spurious 8259A interrupt: IRQ7." üzenettel?
ami biztos, hogy nem okoz problémát, csak egy figyelmeztetés; nagyon ritkán jön elő, így nem tudom körbelőni mi okozza; googleztam, úgy néz ki, hogy egyrészt via chipkészletnél fordul elő (de van ahol más gyártmánynál is), másrészt az apic okozza (de van ahol ennek hiányába is előjön);
egyszerűen hagyd figyelmen kívül;
(megj., hátha segít: a 8259a az intel programozható megszakítás vezérlője, a 7. irqn a paralel port van)
Miért nincs 'include/linux/version.h' állományom?
A kernel fordítása során fog létrejönni, vagy futtass egy 'make include/linux/version.h't.
kernel paraméterek valós idejű beállítása:
Lásd: Linux kernel
kernel modulnak átadható paraméterek: kézi modulbetöltéskor: 'modprobe snd-emu10k1 index=0' automata kernelmodul töltésnél szerkeszd az '/etc/modules.conf' állományt: "options snd-emu10k1 index=0" (FIXME: fixen fordított dolgok esetén a kernel boot paramétere: "kernel (...) snd-emu10k1=index=0" ?)
Boot közben a következő figyelmeztetést kapom: " Probing IDE interface ide2... / ide2: Wait for ready failed before probe !"
Kapcsold ki a "Generic PCI IDE Chipset Support"ot, ha van támogatás az alaplapi chipsetedhez.
2.6 kernelre váltottam és nincsenek termináljaim és konzoljaim.
Kapcsold ki a "Legacy (BSD) PTY support"ot. (Főleg udev esetén jelentkezik.)
Mindig a legújabb kernelt szeretném fordítani, de az apró patchek után is leforog az egész és ez sokáig tart. Telepítsd a ccache csomagot (debian) és készíts symlinket a binárisára /bin/gcc néven (további infó a ccache man oldalán)
Ez bug?
sound/core/init.c: In function `snd_card_free': sound/core/init.c:257: warning: `pm_unregister' is deprecated (declared at include/linux/pm.h:111)
Az adott függveny hamarosan eltávolításra kerül és ez egy figyelmeztetés az arra illetékeseknek; problémát nem okoz, csak figyelmeztetés.
Linkek
Hol találok további információt egy adott opcióról / patchről / akármiről? Wikipedia HupWiki Google
Konkrét ismertetők (rég volt frissítve, lehet, hogy a lista és a linkek tartalma már nem aktuális):
a linux processz ütemező - http://www.hup.hu/modules.php?name=News&file=article&sid=4745 http://www.hup.hu/modules.php?name=News&file=article&sid=4839 http://www.hup.hu/modules.php?name=News&file=article&sid=4938
(1) sheduler - http://www.hup.hu/modules.php?name=News&file=article&sid=591
anticipatory io scheduler - http://www.hup.hu/modules.php?name=News&file=article&sid=2613
badram/badmem - http://www.hup.hu/modules.php?name=News&file=article&sid=3907 http://www.hup.hu/modules.php?name=News&file=article&sid=5657
cdfs - http://www.elis.rug.ac.be/~ronsse/cdfs/
cpu affinitás - http://www.hup.hu/modules.php?name=News&file=article&sid=4482
elevator váltás valós időben - http://www.hup.hu/modules.php?name=News&file=article&sid=4461
cpufrq - http://www.hup.hu/modules.php?name=News&file=article&sid=1852
futex - http://www.hup.hu/modules.php?name=News&file=article&sid=2418
huge tlb pages - http://www.hup.hu/modules.php?name=News&file=article&sid=1681
io sheduler - deadline, anticipatory, cfq, noop - http://www.hup.hu/modules.php?name=News&file=article&sid=4461
kexec - http://www.hup.hu/modules.php?name=News&file=article&sid=5970
laptop mode - http://www.hup.hu/modules.php?name=News&file=article&sid=4532
large block devices (>2tb) - http://www.hup.hu/modules.php?name=News&file=article&sid=963
low latency - http://www.hup.hu/modules.php?name=News&file=article&sid=2555
module_alias - http://www.hup.hu/modules.php?name=News&file=article&sid=4302
nmap megtévesztés - http://hup.hu/modules.php?name=News&file=article&sid=5483
oom killer (régi és új) - http://www.hup.hu/modules.php?name=News&file=article&sid=4896
nptl - http://www.hup.hu/modules.php?name=News&file=article&sid=2029
preemtivitás - http://www.hup.hu/modules.php?name=News&file=article&sid=229
request barriers - http://www.hup.hu/modules.php?name=News&file=article&sid=6087
rmap vm - http://www.hup.hu/modules.php?name=News&file=article&sid=557 http://hup.hu/modules.php?name=News&file=article&sid=5711
shell file system - http://www.hup.hu/modules.php?name=News&file=article&sid=3577
staircase process scheduler - http://www.hup.hu/modules.php?name=News&file=article&sid=5676
stealth ip stack - http://www.hup.hu/modules.php?name=News&file=article&sid=344
systrace - http://www.hup.hu/modules.php?name=News&file=article&sid=1036
udev - http://www.hup.hu/modules.php?name=News&file=article&sid=4597
user mode linux - http://www.hup.hu/modules.php?name=News&file=article&sid=2992 http://www.hup.hu/modules.php?name=News&file=article&sid=3053
variable scheduling timeouts - http://www.hup.hu/modules.php?name=News&file=article&sid=4620
voluntary kernel preemption - http://www.hup.hu/modules.php?name=News&file=article&sid=6419
FIXME: usb, sata, raid, ... egyéb kimaradt részek