Suse Linux 10.3 kernel fordítás rmp-be
Ha túl nagy a kernel, ha nincs benne ami kell, vagy ha csak sajátot szeretnénk…
A leírás SuSE 10.1-ről szól, de 10.3-ra is kiválóan alkalmazható. Nem megy bele abba, hogy milyen kernel modult kell fordítani a hájperszuper vidókarihoz, de ha tisztában vagy azzal, hogy mit szeretnél a kerneledbe, lehet hogy így egyszerűbb…
Az eredeti leírásban szereplő /usr/lib/rmp fájlok hekkelése 10.3 alatt nyugodtan elmaradhat, ez már az alap disztróban is rendben van.
Ami kell
ncurses-devel: root-ként
yast -i ncurses-devel
és meg is van…
Kernel: Beszerezhető a http://www.kernel.org címről. Aminek a végén pozitív szám van, az stabil. (valószínűleg ilyen kell.)A kernel forrás letölthető a /usr/src folderbe,
majd miután beléptünk a /usr/src könyvtárba (cd /usr/src)
tar xjf linux-<verzió>.tar.bz2
paranccsal ki kell csomagolni.
Megjegyzés: A kicsomagoláshoz kell a bzip2 csomag. Ha nincs meg
yast-i bzip2
Célszerű a kicsomagolt kernel forrásból egy symlinket csinálni a /usr/src/linux könyvtárba, a következő paranccsal (szintén a /usr/src könyvtárban):
ln -s linux-2.6.18.2 linux
Patchek telepítése
Előfordulhat, hogy bizonyos hardverek vagy funkciók támogatottsága a letöltött kernelben nem tökéletes, esetleg teljesen hiányzik. Abban az esetben, ha a felmerülő problámához áll rendelkezésre patch (folt, javítás), itt az ideje integrálni azt a kernel forrásba. A követekző parancsok futtatásához továbbra is feltételezzük, hogy az aktuális könyvtár a /usr/src/linux és a patch-et patch.bz2 néven töltöttük le.
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch.bz2 | patch -p1
Az első parancs semmilyen változtatást nem hajt végre a kernel forráson, csupán egy tesztet futtat. Abban az esetben, ha ez a teszt rendben lefutott, a patch ténylegesen alkalmazható a második paranccsal. Nem célszerű a második parancsot futtatni, ha az első hibát ír ki. (Semmi jó nem származik belőle…)
Ezen a ponton lehet un. kernel-prepatch-okat (kb előzetes kernel verzió) integrálni a kernel forrásába. (például ha egy olyan funkcióra van szükséged, 2.6.19-rc6 verzióban van meg, de az adott kernel verzióhoz teljes forrás még nem jelent meg) Ha prepatch már van, a prepatch-et az előző teljes verzióra alkalmazni lehet. (Tehát esetünkben csak a 2.6.18-ra, a 2.6.18-1-re nem!) Bővebb info itt:http://kernel.org/patchtypes/pre.html
A prepatch alkalmazásának a módja a következő (Fájlnevek és könyvtárnevek továbbra is értelemszerűen behelyettesítendőek):
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc6.bz2 cd /usr/src/linux bzip2 -dc /usr/src/patch-2.6.19-rc6.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch-2.6.19-rc6.bz2 | patch -p1
A kernel beállítása
A kernel beállítása során meghatározásra kerül minden fordításkor érvényes paraméter (milyen hardvereket támogasson, ezek közül melyeket csak modulként stb…)
A konfiguráció menüvezérelt, és a
make menuconfig
paranccsal tehető meg.
Hasznos lehet, ha a művelet megkezdése előtt a jelenlegi (működő!!!) kernelünk konfigurációs beállításait alkalmazzuk a kernel forrásán, így csak a módosításokat kell elvégeznünk. SuSE linux alatt a lefordított kernel konfigurációs állományai megtalálhatóak a /boot könyvtárban.
A meglévő kernel beállításainak alkalmazása:
make mrproper cp /boot/config-`uname -r` ./.config
ezután
make menuconfig
parancs kiadásával megjeleníthető a menüvezérelt konfigurációs felület. Itt válasszuk a “Load an Alternate Configuration File” menüpontot, majd a megjelenő beviteli mezőbe gépeljük be a következőt: .config
woila
megvan a jelenlegi kernel konfigurációka.
A kernel nevének megváltoztatása
Válasszuk ki a “General setup” -> “(-default) Local version – Append to kernel release” menüpontot.
Az itt lévő -default stringet írjuk át valami másra (-default1 -default2 akármi), mert az rpm kezelő nem fogja szeretni, ha két azonos nevű kernel lesz a rendszerben.
A konfigurálást ezek után mindenki kedve szerint elvégezheti.
Ha minden beállítás rendben megvan, a konfiguráció az “exit” menüponttal elhagyható, a kérdésre “Do you wish to save your new kernel configuration” a válasz természetesen “yes”!
A kernel lefordítása
A fordításhoz egyszerűen adjuk ki a
make rpm
parancsot!
A kernel fordítása a gép teljesítményétől függően nagyon sokáig is eltarthat, úgyhogy türelem!
A kernel telepítése
A fordítás után létrejönnek a .rmp és src.rmp csomagok.
Az src.rpm csomag a /usr/src/packages/SRPMS/ könyvtárban lesz megtalálható. a neve
ls -l /usr/src/packages/SRPMS/
paranccsal kideríthető.
Az rpm csomag helye architektúrától függően változik: /usr/src/packages/RPMS/i386/,/usr/src/packages/RPMS/i586/, /usr/src/packages/RPMS/i686/, /usr/src/packages/RPMS/x86_64/, stb.
Az architektúra a kernel konfigurációs beállításaiban megadható.
Feltételezve, hogy az elkészült rmp helye /usr/src/packages/RPMS/i386/ neve pedig kernel-2.6.18.2default-1.i386.rpm, a telepítés az alábbi parancsokkal hajtható végre:
cd /usr/src/packages/RPMS/i386/ rpm -ivh kernel-2.6.18.2default-1.i386.rpm
Természetesen az elkészült kernelt akár másik SuSE rendszerre is át lehet másolni, és ott már fordítás nélkül telepíthető!
A következő lépés, hogy készítsünk egy initrd image-t a kernelünkhöz. Ennélkül nem fog elindulni. A parancs:
mkinitrd
Az mkinird paraméter nélkül meghívva minden telepített kernelhez létrehozza az initd-t.
GRUB beállítás
A kernel használatba vételéhez konfigurálni kell a GRUB rendszerbetöltőt.
A beállításokhoz minden SuSE-s kedvencét, a yast-ot fogjuk használni.
parancssorból, rendszergazdaként a
yast
parancs kiadásával indítahtjuk.
A beállítások helye: System -> Boot loader. A megjelenő képernyőn látahtóak a már létező bejegyzések. Válasszuk az “Add” funkciót.
Válasszuk a Clone selected settings-et hogy lemásoljuk egy már működő konfigurációt!
Adjunk az új kernelhez tartozó bejegyzésnek egy tetszőleges nevet, majd kattintsunk a “Kernel” bejegyzésnél a browse gombra! megjelenik a /boot könyvtár tartalma, ahonnan kiválaszthatjuk az új kernelt. A kernel neve vmlinuz-zal kezdődik. A név további részéből következtetni lehet a kernel verziójára. Válasszuk ki a megfelelőt.
Az “Initial ram disk” bejegyzésnél a kernellel megegyező módon kell eljárni, a ramdisk fájl neve initrd-vel kezdődik.
Az Ok gombbal elmenthető az új kernel bejegyzés.
A Set ad Default gombbal beállítható, hogy automatikusan az új kernel induljon el, ne kelljen kiválasztani.
Ha minden hiba nélkül lezajlott, a rendszer
shutdown -r now
paranccsal újraindítható.
A rendszerbetöltés során válasszuk ki az újonnan telepített kernelt. Indulás után
uname -r
paranccsal ellenőrizhető, hogy valóban az új kernel indult el.
És a credits:
A cikk eredetileg, angol nyelven itt található meg: