% master: kernel_und_module.tex
% Kernel und Module v0.3
% 2022-05-09 (Rx)

\section{Kernel und Module}
%--------------------------
\begin{verbatim}
http://www.kernel.org/          http-Adresse für den Kernel und Kernel-Patches
http://www.de.kernel.org/pub/linux/kernel/      Spiegel für den Kernel
\end{verbatim}

\subsection{Kernel 2.4}
%----------------------
\index{bzip2}\index{gzip}\index{zcat}\index{make}
\begin{verbatim}
tar xvfj kernel.tar.bz2                         entpackt den Kernel
tar xvfz kernel.tar.gz                          entpackt den Kernel
cd kernel                                       Verzeichnis wechseln
bzip2 -dc ../patch-2.x.xx.bz2 | patch -p1       Kernel patchen
gzip -dc ../patch-2.x.xx.gz | patch -p1         Kernel patchen
zcat /proc/config.gz > /usr/src/linux/.config   die aktuelle Konfiguration des
                                                laufenden Kernels auslesen
make menuconfig                 Kernelkonfiguration im Textmodus
make dep                        aktualisiert die Abhängigkeiten
make clean                      löscht die temporären Dateien und Ausgabedateien
make zImage                     übersetzt und komprimiert den Kernel
make bzImage                    übersetzt und komprimiert den gossen Kernel
make dep clean zImage           aktualisiert,löscht und übersetzt
make modules                    übersetzt Module
make modules_install            installiert Module
make zlilo                      installiert den Kernel und den Boot-Loader LILO
make bzlilo                     installiert den gossen Kernel und
                                den Boot-Loader LILO
make zdisk                      erzeugt eine Bootdiskette mit dem neuen Kernel
make mrproper                   löscht alle erzeugten Dateien,
                                auch die Konfiguration
\end{verbatim}

\subsection{Kernel 2.6 (Debian 4.0 etch)}
%----------------------------------------
\index{wget}\index{gpg}\index{make-kpkg}\index{fakeroot}\index{dpkg}\index{uname}\index{dmesg}\index{insmod}\index{lsmod}\index{rmmod}
\begin{verbatim}
sudo apt-get update             Paket-Datenbank aktualisieren
sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 \
     build-essential            benötigte Pakete installieren
cd /usr/src                     in das Verzeichnis zu den Quell-Paketen wechseln
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
                                den aktuellen Kernel downloaden
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2.sign
                                die dazugehörige Signatur downloaden
gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0x517D0F0E
                                Public-Key vom Key-Server holen
gpg --verify linux-2.6.22.1.tar.bz2.sign
                                Kernel-Signatur überprüfen
tar xvfj linux-2.6.22.1.tar.bz2 Kernel entpacken
ln -s linux-2.6.22.1 linux      Soft-Link zu den Kernel-Quellen anlegen
cd /usr/src/linux               zu den aktuellen Kernel-Quellen wechseln
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
                                Aktualisieren prüfen
bzip2 -dc /usr/src/patch.bz2 | patch -p1
                                Kernel-Quellen aktualisieren wenn nötig
make clean && make mrproper     Kernel säubern und korigieren
cp /boot/config-`uname -r` ./.config
                                laufende Konfiguration holen
make menuconfig                 Konfigurations-Programm starten
                                Load an Alternate Configuration File
                                laufende Konfiguration laden und Kernel
                                konfigurieren
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image \
         kernel_headers         Kernel-Pakete und Kernel-Headers herstellen
sudo dpkg -i linux-image-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb
                                den neuen Kernel installieren
sudo dpkg -i linux-headers-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb
                                die neuen Header installieren
sudo shutdown -r now            Neustart um den Kernel zu testen


uname -a                        feststellen welcher Kernel gestartet ist

dmesg                           Kernelmeldungen vom letzten Start anzeigen

insmod Modul                    Modul laden
modprobe Modul                  Modul eigenständig laden
lsmod                           geladene Module anzeigen lassen
rmmod Modul                     Modul entfernen
\end{verbatim}

