Bei www.kernel.org die Sourcen saugen, im Ordner ftp://ftp.kernel.org/pub/linux/kernel/v2.4/ gibts alle 2.4er. 2.4.22 kernel source hier klicken um den 2.4.22er zu saugen (bzip2 gepackt).
Die Kernel gibt es doppelt. Einmal als gzip (.gz) und als bzip2 (.bz2). Dafür gibts dann jeweils noch eine .sign Datei. Mit der kann man Überprüfen ob die Sourcen im Orginalzustand sind, also nicht gehackt wurden oder beim download beschädigt.
Mit der Befehlsfolge:
gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
gpg --verify linux-2.4.20.tar.bz2.sign linux-2.4.20.tar.bz2
lässt sich das überprüfen. Der erste Befehl muss nur einmal eingeben werden, dadurch holt sich das Programm irgendeinen Key. Es sollte soetwas wie
gpg: Signature made Wed Feb 17 09:12:57 2003 CEST using DSA key ID 517D0F0E
gpg: Good signature from "Linux Kernel Archives Verification Key "
ausgegeben werden.
Nachdem man den Kernel gesaugt hat kann muss man ihn entpacken. Am besten alles als root.
Bei bzip2 mit: tar xjvf linux-2.4.22.tar.bz2
Bei gzip mit: tar xzvf linux-2.4.22.tar.gz
Dabei entsteht ein neues Verzeichnis im aktuellen Verzeichnis, linux-2.4.22. Das Kopiert man in /usr/src/ also cp linux-2.4.22 /usr/src/ Nun in das /usr/src verzeichnis wechseln. Viele Programme brauchen die Kernelsourcen und erwarten diese in /usr/src/linux Also macht man sinnvollerweise einen link auf /usr/src/linux-2.4.22
root@debian:/usr/src/# ln -s linux-2.4.22 linux
mit ls -l das ganze überprüfen, da sollte eine zeile linux -> linux-2.4.22 zu finden sein.
Die Sourcen des SuSE-Kernels sind auf der Installations-CD/-DVD zu finden. Einfach über YAST nachinstallieren. Da der Standard-SuSE-Kernel (k_deflt oder k_athlon) nicht für die PCTV Sat-Karte funktioniert, muss dieser neu kompiliert werden.
Für Nutzer der Debian Distribution sieht das ergattern des Kernels etwas anders aus. Hier verwendet man die Commandline Apt Tools. Als root sind folgende commandos auszuführen.
apt-get update
apt-get install kernel-package
apt-get install kernel-source-2.4.21
cd /usr/src
tar xvjf kernel-source-2.4.21.tar.bz2
ln -f -s kernel-source-2.4.21 linux
Fertig! Das Kompilieren machen wir später durch.
Also root in das Verzeichnis /usr/src/linux wechseln (denkt an den link) Nun gibt es 3 Möglichkeiten den Kernel zu konfigurieren:
make config
Hier kriegt man ca 9823749837 Fragen gestellt, nicht wirklich sinnvoll.
make menuconfig
Die wohl am häufigst verwendete Möglichkeit. Hiervon wird ausgegangen.
make xconfig
Hierfür braucht man einen laufenden XServer. Dann ist das zu bevorzugen
Nachdem man eine Wahl getroffen hat gehts los. Module die mit einem * gekennzeichnet sind werden in den Kernel kompiliert, M steht für Modul. Folgende Module werden für den Betrieb der DVB-S Karte benötigt.
i2c-core, i2c-algo-bit: fintet man in Character Devices -> I2C-Support
videodev, bttv: findet man in Multimedia -> Video For Linux (einfach eine TV Karte auswählen, zB BT848)
Man kann auch eine funktionierende Konfiguration unter /boot/ laden und diese nach seinen Bedürfnissen bzw. wie oben beschrieben anpassen. Das hat den Vorteil, dass man nicht alles neu bearbeiten muß. Die Konfigurationsdatei heißt leider je nach Distribution verschieden. Unter Debian setzt sich der name aus "config" + der Versionsnummer des Kernels zusammen. Unter SuSE heißt der laufende Kernel immer vmlinuz, deswegen seine Konfigurationsdatei "vmlinuz.config".
Die Konfiguration sollte man auf jedenfall speichern :) Ihr landet nach einem menuconfig wieder in der Konsole. dort tippt man:
root@debian:/usr/src/linux/# make clean
root@debian:/usr/src/linux/# make -s dep bzlilo modules modules_install
Das -s steht für silent, nur Warnungen und Fehler werden ausgegeben. bzlilo richtet den neuen kernel gleich unter /vmlinuz ein und kopiert den alten nach /vmlinuz.old. Dadurch bleibt euch bei einer fehlerhaften Konfiguration der alte Kernel noch erhalten. modules kompiliert die module und modules_install installiert sie in /lib/modules/<versionsnummer>/. In unserem fall ist das 2.4.22.
Bei GRUB als Bootmanager: Hier sieht der Befehl etwas anders aus:
cd /usr/src/linux
wechsel zum linux kernel source directory
make dep clean bzImage
Kann man auch getrennt aufrufen
cp /boot/vmlinuz /boot/vmlinuz.old
cp arch/i386/boot/bzImage /boot/vmlinuz
make modules_install
make clean
Damit der alte Kernel (jetzt vmlinuz.old) noch gebootet werden kann, sollte die Datei /boot/grub/menu.lst noch editiert werden.
Für Nutzer der Debian Distribution sieht auch das Kompilieren des Kernels etwas anders aus. Als root sind folgende Kommandos auszuführen. Genauere Dokumentation dazu findet sich im Verzeichnis /usr/share/doc/kernel-source-2.4.21 in der Datei debian.README.gz.
cd /usr/src/linux
wechsel zum linux kernel source directory
make-kpkg clean
Aufräumen des Kernels, temporäre Dateien werden gelöscht
make xconfig
oder make menuconfig, make oldconfig. Konfigurieren des Kernels wie vorher beschrieben.
make-kpkg --revision=mykernel.1.0 kernel_image
Kompilieren des Kernels. --revision ist nicht notwendig, aber praktisch um verschiede Kernel mit gleicher Version (zB 2.4.21) außeinander zu halten.
cd ..
Wechsel zu /usr/src
dpkg -i kernel-image-2.4.21_mykernel.1.0_i386.deb
Installation des neuen Kernel mit dpkg ("d package")
update-grub
Den grub Bootloader auf Vordermann bringen, falls man diesen verwendet (Empfohlen!).
Fertig! Im Notfall noch lilo oder grub anpassen, je nachdem welchen Bootmanager man verwendet. Grub ist übrigens zu bevorzugen (und zwar ziemlich).