Kernel (Debian)
A HupWiki-ből...
Debian HOWTO-k, írások: Útmutató (egyszerű)
Tartalomjegyzék |
Kernel
A Debian szempontjából a kernel is csak egy csomag; pontosabban több:
- kernel-doc-verzio: dokumentációk
- kernel-headers-verzio: csak a header állományok (külső modulok fordításához kell); hogy forditani lehessen életbe kell léptetni: hozz létre egy /usr/src/linux könyvtárat, majd ln -s /usr/src/kernel-headers-$(uname -r)/include/ /usr/src/linux/
- kernel-image-verzio: maga a kernel image és modulok (valamint a fordításhoz használt .configot is tartalmazza: /boot/config-verzio)
- kernel-patch-foo: a foo kernel patch (kiegészíti a kernel alap funkcióit) a "kernel-source"-hoz
- kernel-pcmcia-modules: pcmcia modulok külön szedve
- kernel-source-verzio: adott verziójú kernel forrás, ebből lehet saját kernelt fordítani
- kernel-tree-verzio: vanilla kernel és a hozzá tartozó debian patch (kernel-patch-debian-verzio)
- linux-kernel-headers: a libc6-devvel együtt települ, (mindíg a legfrissebb) kernel headereket tartalmazza, de csak felhasználói programok fordítására alkalmas
Fontos! A 2.6.12-től kezdve megváltozott a csomagok neve: linux-doc, linux-headers, linux-image, linux-patch-debian, linux-source, linux-tree. (A változás oka egyszerű: a régi csomagnevek megtévesztőek voltak, mivel a Debian egy kernelfüggetlen disztribúció.)
Nagyrészt ezekre lehet szükséged:
- kernel-image:
- kernel-image-2.4.27-2-386: ez az eredeti kernel a Sargeban, ami egy sima telepítéskor felkerül; nincs benne semmi extra, se optimalizáció, de nem is igényel plusz munkát; ha ez az első telepítésed, vagy egyszerűen nem akarsz a kernel témával foglalkozni, akkor ezt hagyd fenn
- kernel-image-2.4-proci: adott processzorra optimalizált, friss 2.4 kernel debian változata (leggyakrabban használt "proci"k: 386, 686, k6, k7; 'uname -m'); (az Etchben valószínüleg meg fog szűnni a 2.4-es kernel széria támogatása)
- kernel-image-2.6-proci: ez pedig az új, 2.6 kernelhez; adódhatnak még vele problémák
- modulok:
- modutils: a 2.4 kernel használja
- module-init-tools: 2.6 kernel
- kernel-headers: ha külső kernel modult akarsz fordítani, akkor tedd fel a kernelnek (uname -r) megfelelőt. (Pld.: ha 2.6.15-1-686 az eredmény, akkor kernel-headers-2.6.15-1-686ra lesz szükség)
Kérdések kernel-image-2.4-proci és kernel-image-2.6-proci telepítésekor:
- dash: "Install dash as /bin/sh?" inkább nem, még nem teljesen kompatibilis a bashhal és ez a scriptek egy részét zavarja
- "You are attempting to install an initrd kernel image (...)": ezután figyelmeztet, hogy initrdt használó kernelt telepítesz, ezt most hagyd figyelmen kívül ("n"), mindjárt megtesszük a szükséges lépéseket)
- végül jelzi, hogy nem létezik a '/initrd.img' symlink, létrehozza az új kernelnek megfelelően? igen
Fontos! A 2.6.14től kezdve a kernel-image-2.6 a yaird programot használja az initrd elkészítéshez, de ez csak 2.6 alatt működik (sysfs kell neki). Ezért ha 2.4-es kernelről akarsz friss 2.6-ra váltani, akkor előszőr telepítsd az initramfs-tools csomagot (lásd bővebben: Debian Wiki: InitrdReplacementOptions). (Alternatív megoldás, ha telepítesz egy 2.6.14 előtti kernelt, majd bebootolsz és csak ezután telepíted az új kernel-imaget.)
Kernelmodulok (hardware beállítása)
Alapozás: Kernelmodul, Hardware
Gyorstalpaló (kernel modulok kezelése):
- lsmod = betöltött modulok listája
- modprobe modul = elérhető modul betöltése, ha szükséges paraméterezhető; (bash programmable completion ezt is kiegészíti)
- rmmod modul = betöltött modul eltávolítása; (nem lehet olyan modult eltávolítani, amit vmi használ)
- modinfo modul = a modul elérési útja, rendeltetése (Tipp: az összes betöltött modul információjának kigyűjtése: modinfo $(lsmod | grep -v Module | cut -b1-20) | less)
Debiános módszer a modconf, ami egy guit biztosít a fenti parancsokhoz. (Megj.: a modconf gyakran lassú, még modern rendszereken is; légy türelmes és várd meg mindig a felület visszatérését, ha dolgozik vmin.)
Debian alatt a boot idején automatikusan betöltendő modulok az /etc/modules-ban vannak felsorolva; a modconf is ezzel dolgozik, de kézzel is szerkeszthető.
A gépben lévő hardware beazonosítása: Hardware: Hardware beazonosítása
Fontos, főleg kezdőknek:
A folyamat megkönnyítésére debian alatt is léteznek hardware felismerő programok, alapból a discover és hotplug kerül telepítésre, ezek bőven ellátják a feladatukat (kivéve néhány felismerhetelen dolgot, mint a szoftveres watchdog, ez az adott hardwarenél ki lesz emelve). Alapból a hotplug és discover van telepítve, ez általában elég.
- hotplug: főleg az eltávolítható hardwarek kezelésében jeleskedik (pld.: USB)
- kudzu (Red Hat): a kudzu parancs hatására összeveti a hardware információkat a betöltött modulokkal, és javasol modul telepítést vagy eltávolítást; használata nem ajánlott, mivel nincs karbantartva és így már 2.6 kernellel nem kompatibilis (ha mégis megtetted: töröld az /etc/modprobe.confot)
- discover (Mandriva): a discover-modprobe felismerést és telepítést végez
- hwinfo (SuSE): az előzőnél nagyobb adatbázissal rendelkezik (Debian jelenleg csak részlegesen támogatja)
Kernel paraméterek kezelése
Lásd: Linux kernel
Kernel fordítás
K: Miért érdemes .deb csomagba fordítani a kernelt?
V: A sima kernelfordításhoz képest jobban fog illeszkedni a meglévő Debian rendszeredbe és egyszerűbbé teszi ugyanannak a kernelnek több gépen telepítését és karbantartását. Az előnyökről és hátrányokról részletesebben lásd a kernel-package csomaghoz járó /usr/share/doc/kernel-package/Rationale.gz állományt.
Általános leírás a kernelforgatásról és a szükséges programokról: Linux_kernel_konfigurálása (a build-essentials csomag minden fontos programot tartalmaz)
Az ott felsoroltakon kívül még szükség lesz a kernel-package csomagra a Debian kompatibilis kernel csomagok készítéséhez. (A csomag információt tárol a kernel fordítójáról, ezeket az információkat az /etc/kernel-pkg.conf állományban lehet átírni.)
Fordítás előtt választhatsz, hogy vanilla forrásból fordítasz vagy hivatalos Debian csomagforrásból. A vanilla előnye, hogy mindíg a legfrissebb, módosítások nélküli forrást tudod használni, a Debian kernel forrásé pedig épp a benne lévő patchek (biztonsági javítások, bugfix, kompatibilitás, DFSG). A friss vanillát természetesen a kernel.org-ról lehet beszerezni, a Debian változatot pedig a kernel-source-x.y.z (illetve 2.6.12 után linux-source-x.y.z) feltelepítésével (az /usr/src könyvtárba pakolja a 'kernel-source-x.y.z.tar.bz2' állományt, innen a fordítás menete megegyezik a vanilla kernelével).
Fontos! A kernel forrását a 2.95-ös gcchez fejlesztik, ezért újabbakkal nem biztos, hogy lefordul; gyakorlatilag a 3-as széri .2 fölöti tagjaival fordul, a 4.0 szériával nem nagyon; az alapértelmezett gcc felülbírálásához így add ki a parancsokat: MAKEFLAGS="CC=gcc-3.3" make-kpkg (...)
A csomag elkészítésének lépései:
- a kernel kitömörítése, felkonfigurálása
- hosszabb út: kézzel konfigurálod fel, így kisebb kernelt kapsz, ami gyorsabban fordul és csak azt tartalmazza, amire (szerinted) szükséged van
- gyors menet: a hivatalos Debian kernelhez használt konfigot használod, így nem kell kézzel konfigolni, de sokkal több ideig tart majd a fordítás (mivel szinte minden befordul modulba)
- a hivatalos .configot a /boot-ba telepíti a kernel imaget tartalmazó csomag config-x.y.z néven, figyelj arra, hogy subversionig (x.y) mindenképp egyezzen a leendő kernellel (és az extraversion .z is a lehető legközelebb essen); egyébként a make-kpkg kernel_image fordítás előtt lefuttat egy make oldconfigot, tehát a fontos változásokra rákérdez
- amit lehet modulba kapcsoltak, a debug és veszélyes (DANGEROUS, EXPERIMENTAL) dolgokat kikapcsolták
- két fontos megjegyzés: a processzort állítsd be és az IDE támogatás fix legyen (2.4 esetén: Processor type and features - Processor family és ATA/IDE/MFM/RLL support - IDE, ATA and ATAPI Block devices - Include IDE/ATA-2 DISK support)
- a kernel forrásának megtisztítása: make-kpkg clean
- kernel image (modulokat is tartalmazza): make-kpkg kernel_image
- az initrds kernel fordításához az előző parancsot egészítsd ki egy "--initrd" kapcsolóval; ha nem vagy biztos benne, vagy a hivatalos .configból fordítasz akkor mindenképp használd
- kernel headerek: make-kpkg kernel_headers
- kész, lehet telepíteni
Megj.:
- az összes csomag az előző könyvtárszinten fog materializálódni
- ha több változatot is akarsz ugyanabból a kernelből kezelni egészítsd ki a fenti parancsokat egy "--revision=sorszam"-mal
További információk: make-kpkg --help és man make-kpkg