Ehhez szükségünk lesz az eredeti kernel kódra. Ahhoz, hogy a legfrissebb fájlt szerezhessük meg tudnunk kell annak verziószámát. Jelen pillanatban a 2.4.x-es széria a stabil változatok legfrissebbike, azon belül pedig az alábbi file letöltésével tudhatjuk meg, hogy melyik az aktuális:
wget "ftp://ftp.hu.kernel.org/pub/linux/kernel/v2.4/LATEST*"
Eredményként én a következő file-t kaptam: LATEST-IS-2.4.4
Ennek megfelelően a letöltendő file elérési útvonala:
ftp://ftp.hu.kernel.org/pub/linux/kernel/v2.4/linux-2.4.4.tar.bz2
vagy
ftp://ftp.hu.kernel.org/pub/linux/kernel/v2.4/linux-2.4.4.tar.gz
Ajánlatos a bz2 filet letölteni, mivel átlagosan 20%-al kisebb a fájl mérete, így a letöltés ideje is rövidebb, igaz kibontásnál jobban igénybe veszi a processzort, de általában az adatforgalom, vagy online töltött idő és nem a processzoridő után fizetünk. Az adott fájl jelen esetben 20Mb, ez egy átlagos 128kbps bérelt vonalon optimális esetben 20 perc alatt érkezik meg.
A letöltött fájlt helyezzük a /usr/src könyvtárba, majd bontsuk ki:
tar -xIf linux-2.4.4.tar.bz2
(A tar 1.13.18 verziójától a bzip2 fájlok kitömörítése
-I helyett -j -vel történik: tar -xjf linux-2.4.4.tar.bz2
)
Sajnos a forráskódok terjesztése során sosem elég körültekintőek a biztonságot illetően, ami annyit tesz, hogy a forráskód a terjesztő rendszerén használt UID és GID alkalmazásával kerül becsomagolásra, így a mi rendszerünkön is azokkal a jogosultságokkal fog létrejönni. Ha szerencsénk van, akkor nincs olyan felhasználó, vagy csoport akinek egyezne az azonosítója az előbb leírtakkal, de ez nem garancia semmire. nálam például a kibontást követő állapot:
drwxr-xr-x 15 burzum inact 816 May 9 21:04 linux
Ezt sürgősen orvosoljuk: chown root.src -R linux
Első lépésben egy "normál" kernelt fogunk fordítani, azaz IPSec patch-től mentesen. Belépve a linux könyvtárba konfiguráljuk be a kernelt (make menuconfig) az igényeinknek megfelelően. Az ehhez szükséges eszközök:
make, as86, libncurses header file-ok, cpp, gcc.
Ajánlott opciók:
Ha végeztünk, mentsük el a konfigurációt. Ha elég stabil és nagy teljesítményű gépünk van, kellő mennyiségű memóriával, akkor illesszük be a következő sort a Makefile-ba:
MAKE = make -j20
ahol 20 a fordítás során engedélyezett feladatok száma. Egy PI osztályú gép minden gond nélkül elvisel 10-es értéket, egy PIII kategóriájú gépnek pedig 30-40-es értéket is lehet választani. Ha biztosak vagyunk a dolgunkban és a gépet nem kívánjuk egyéb célra használni a fordítás ideje alatt, valamint nem nyújt mások számára szolgáltatást, akkor el is hagyhatjuk a j utáni számot (vigyázat, ekkor végtelen).
A fenti sor hatására a fordítás jobban megterheli a gépet, viszont jóval hamarabb végez vele.
Ha nem Debian rendszerünk van kövessük a következő lépést:
make dep && make bzImage modules install modules_install
Debian rendszer esetén a kernel-package csomag segítségével:
make-kpkg kernel-image --revision normal1
ahol normal1 szabadon választott, egyetlen megkötés, hogy tartalmazzon számot, erre azért van szükség, hogy az apt-get upgrade ne írja felül a saját kernelünket. Ennek hatására az /usr/src könyvtárba létrejön a .deb kernel csomag, amit jelen esetben a
dpkg -i /usr/src/kernel-image-2.4.4_normal1_i386.deb
paranccsal telepíthetünk, vagy ami ennek a módszernek az előnye, hogy nem azon a gépen fordítjuk a kernelt, amelyiken alkalmazni fogjuk, hanem egy másikon és az így elkészült bináris csomagot könnyen átvihetjük a két gép között. További előny, hogy ezzel a módszerrel biztosabb, hogy nem veszítjük el a kernel config fájlt, mert egyrészt a .deb is tartalmazza, valamint installálás után a /boot-ba is bekerül, nem csak az /usr/src/linux-ban marad, ami viszonylag gyakran kerül felülírásra, törlésre. Az
echo "kernel-package-2.4.4 hold"|dpkg --set-selections
paranccsal pedig biztosíthatjuk magunkat, hogy egy upgrade nem írja felül a saját változatunkat.
Állítsuk be, hogy a boot folyamat a friss kernelt töltse be, ha eddig nem tettük volna. (esetlegesen lilo vagy grub config file-ok módosítása)
Indítsuk újra a rendszert. Ellenőrizzük, hogy biztosan az új kernellel bootoltunk azaz a verziószám és a fordítás dátuma stimmel-e :
uname -a
Linux host 2.4.4 #1 Fri Apr 27 10:28:11 CEST 2001 i686 unknown
Ellenőrizzük, hogy jól funkcionál-e a rendszer (hálózati interface-k működnek-e, a kapcsolat megvan-e a többi géppel, minden szükséges szolgáltatás elindult-e, ...). Ha minden rendben akkor kezdhetünk neki a patch-nek.