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)

Konkrét hardware beállítások.

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:

  1. 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)
  2. a kernel forrásának megtisztítása: make-kpkg clean
  3. 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
  4. kernel headerek: make-kpkg kernel_headers
  5. 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

Külső hivatkozások

Merre tovább?

X (Debian) és Desktop alkalmazások