Kernel-Howto
Aus Fedorawiki.de
Der Kernel ist die Basis des Systems - der Teil, der wirklich Linux heißt. Hier ein paar Informationen und Anleitungen zu.
Inhaltsverzeichnis |
Kernel-Sourcen
Spätestens ab Fedora Core 4 werden die Kernel-Sourcen nicht mehr mitgeliefert - auch eine Suche nach entsprechenden rpm-Paketen geht fehl.
Hintergrund ist, dass der Kernel von Fedora Core die wichtigsten Quellen schon mit sich bringt. Um also z.B. Grafiktreiber oder andere Kernelmodule zu bauen, benötigt man bei Fedora Core die Kernel-Sourcen gar nicht mehr.
Kernel im Eigenbau
Voraussetzungen
Um rpmbuild verwenden zu können muß das Paket rpmdevtools installiert werden:
Kernelsourcen holen
Will man sich aber einen eigenen Kernel basteln, sind diese unverzichtbar. Um diese zu bekommen, geht man folgendermaßen vor:
Man muss sich das Kernel src.rpm ziehen und installieren. Das geht am schnellsten mit dem Befehl
Bevorzugt sollte man allerdings einen der zahlreichen Mirrors benutzen. Unterhalb des Ordners /updates/fedoraversion/SRPMS findet man das aktuellste src.rpm. Der Pfad zum Download muß dann angepasst werden. Dabei muss die 7 natürlich der verwendeten Fedoraversion entsprechen , falls man ein anderes Fedorarelease (für Versionen vor Fedora 7 muss das "releases" durch "core" ersetzt werden) nutzt.Seit F7 ist es außerdem nötig das Tool "sparse" zu installieren:
Der nächste Schritt ist, die Sourcen nun noch an die richtige Stellen zu bringen. Am schnellsten geht dies abermals mit dem Befehl
rpmbuild -bp --target=noarch /usr/src/redhat/SPECS/kernel-2.6.spec
Man kann auch gleich seine Hardwarearchitektur mitteilen, der Aufruf sollte dann so erfolgen:
rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec
Die Source-Dateien werden dann in /usr/src/redhat/BUILD/kernel-2.6.xx/ auftauchen.
Alte Kernelconfig kopieren
Da aber meistens die Source-Dateien im Verzeichnis /usr/src/ erwartet werden, kann man diese mit folgendem Befehlssatz dorthin verschieben:
cd /usr/src/redhat/BUILD/kernel-<version> mv linux-<version> /usr/src/ cd /usr/src ln -s linux-<version> linux cd /usr/src/linux
Anmerkung:Im Verzeichnis /usr/src/redhat/BUILD/kernel-2.6.**/ gibt es zwei Kernelvarianten,einmal mit Fedorapatches (linux-2.6.**.ARCH)wobei du mit uname -m deine benötigte Hardwarearchitektur herausfindest oder den Vanillakernel (/vanilla),den Standardkernel von kernel.org ohne Patches und Updates.
Man sollte danach noch das Kernelquellverzeichnis säubern mit dem Befehl:Abschließend kann man noch die alten Konfigurationsparameter einstellen, um auf diesen beim bauen aufzubauen:
make oldconfig
Dieser Schritt ist eigentlich nur nötig, wenn man eine Kernelversion neueren Datums hat, um dann die dazugekommenen Kernelfeatures zu bearbeiten.Jetzt folgt die Anpassung des Makefiles:Bevor man mit der eigentlichen Kernelkonfiguration anfängt, sollte man die Datei /usr/src/linux/Makefile mit einem Editor seiner Wahl bearbeiten und folgendes ändern (dies ist eigentlich nur relevant wenn man zwei identische Kernelversionen vorhalten will, bspw. zu Testzwecken):Beim Vanillakernel steht vermutlich EXTRAVERSION = .1 beim gepatchten Fedorakernel EXTRAVERSION = -prep.Was hier eingegeben wird ist eigentlich belanglos, solange es nicht identisch ist mit der zeitgleich installierten Kernelversion (s.a. weiterführende Hinweise im letzten Abschnitt!). Ansonsten kann man, wenn man sich die .config-Datei aus /boot kopiert hat, direkt zur eigentlichen Kernelkonfiguration übergehen,bspw. mit make menuconfig. Nun kann man einen eigenen Kernel kompilieren.Falls das kompilieren fehlschlagen sollte, beginnt man von vorne und korrigiert die bemängelten Kerneleinstellungen, man sollte dann allerdings vorher erneut ein
make clean
im Verzeichnis /usr/src/linux durchführen!
Kernelkonfiguration anpassen
Da das Ziel eines eigenen Kernel ist, die Konfiguration seinen eigenen Bedürfnissen anzupassen, wird der Kernel im folgenden Schritt konfiguriert. Dies kann auf mehrere Wege geschehen:
1. In der Config selbst. Dazu wird mit dem Editor der Wahl die Datei config geöffnet und angepasst. Mögliche Werte sind normalerweise
- y (in den Kernel fest reinkompilieren)
- m (als Modul kompilieren)
- n (nicht in den Kernel compilieren)
Dieser Weg stellt allerdings den Schwierigsten dar, da keinerlei Hilfestellung geboten wird.
2. Über eine menübasierte Konfiguration in einem Terminal. Dieser Weg ist ressourcenschonend und ihr könnt einfach mit der Tastatur durch die einzelnen Zweige navigieren. Der Befehl hierfür lautet:
- make menuconfig (ncurses-devel muß installiert sein!)
Mögliche Tastenkombinationen sind hier:
- y (in den Kernel fest reinkompilieren)
- m (als Modul kompilieren)
- n (nicht in den Kernel compilieren)
3. Mit einer GUI. Diese Konfiguration ist am einfachsten, da auch eine Beschreibung des jeweiligen Moduls angezeigt wird. Gestartet wird die GUI durch:
- make xconfig (für ein Qt-basiertes Programm)
- make gconfig (für ein gtk+-basiertes Programm)
NTFS-Treiber einbinden
Der Neubau des Kernels kann insbesondere dafür verwendet werden, die NTFS-Treiber fest in den Kernel einzubinden.
Der entsprechende Eintrag ist zu finden unter:
- File systems --->
- DOS/FAT/NT Filesystems --->
- <M> NTFS file system support
- < > NTFS debugging support
- < > NTFS write support
- <M> NTFS file system support
- DOS/FAT/NT Filesystems --->
bzw. im config-File unter
# # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_NTFS_FS=m # CONFIG_NTFS_DEBUG is not set # CONFIG_NTFS_RW is not set
Der Schreibsupport sollte dabei nicht angewählt werden, da dieser immer noch relativ instabil ist. So soll er unter anderem nur bei Dateien gleicher Größe möglich sein.
Danach kann der Kernel auf die gewohnte Art und Weise gebaut und installiert werden.
Kernel kompilieren
Um den Kernel nun zu kompilieren muss bei einem 1 Prozessorsystem
und bei einem Mehrprozessorsystem (N=CPUAnzahl+1) (damit auch alle CPU's zum kompilieren ausgenutzt werden)
ausgeführt werden. In der Zeit kann man dann gut eine Tasse Kaffee trinken gehn (jenach System reicht die Zeit auch für eine ganze Kanne). Das make install sorgt dafür, das auch gleich der Eintrag in die grub.conf für den neuen Kernel erfolgt und die sonstigen Einträge in /boot etc. erfolgen.
Kernel-rpm erzeugen
Um ein RPM zu erzeugen, muss nach der Konfiguration folgendes eingegeben werden:
make rpmNun ist es Zeit das selbsterzeugte Paket zu installieren, welches sich im Verzeichnis /usr/src/redhat/RPMS/<arch> befinden sollte.So installieren wir unser rpm:
Bspw. für den aktuellsten Kernel, die Angaben sind so zu machen, wie Sie auch unterhalb von /lib/modules stehen. Der neue Kernel muss dann noch manuell in die grub.conf eingetragen werden. Der Eintrag kann unterschiedlich aussehen, je nachdem ob bei der Installation manuelle Partitionierung bzw. LVM gewählt wurde.
Verschiedene bootbare Kernel
Um verschiedene Kernel booten zu können, kann man diese standardmässig über GRUB (Bootloader) verwalten. Die Konfiguration von GRUB findet man in /boot/grub in der Datei grub.conf.
Siehe auch
- Offizielle Hilfetexte zum Kern (Englisch)
- Anleitung zum Konfigurieren der Kernelsourcen auf linuxforen.de
- Zusätzliche nützliche Hinweise für die neue Fedoraversion F7 auf www.mjwired.net
- Noch ein wenig Input,zwar für FC4, aber das meiste ist trotzdem noch gültig ebenfalls auf www.mjwired.net
- der Fedoraweg zur Kernelkompilierung auf fedoraproject.org
- Linux Kernel in a nutshell - Kostenloses Buch von Greg Kroah-Hartman zur Einrichtung und Anpassung des Kerns (Englisch)