Linux-anpassen
Wichtige Hinweise: Diese Anleitung beschreibt den Vorgang der Erstellung von Vanilla-Linux NICHT Fedora-Linux, allerdings mit einigen Hinweisen für Fedora-Nutzer versehen um das allgemeine Verständnis zu fördern.
Wenn Sie als Fedora-Nutzer etwas über die Vorbereitung und Inbetriebnahme eines Linux lernen möchten sind Sie hier goldrichtig.
Wenn Sie ein Linux vorbereiten um ihn neben Fedora zu nutzen, auf einem anderen Gerät oder zu einem anderem Zeitpunkt sind sie ebenfalls richtig.
Wenn sie ein Linux anpassen wollen um ihn in ihrem oder einem Fedora einzusetzen sind sie hier falsch!
Um ein Vanilla-Linux in Betrieb zu nehmen empfiehlt sich ein Linux from Scratch (LFS) auf einem eigenen Massenspeicher. Wer die Notwendigkeit sieht einen angepassten Fedora-Linux zu erstellen sollte momentan auf die Seite: http://fedoraproject.org/wiki/Building_a_custom_kernel ausweichen. Ich werde den Artikel überarbeiten und übersetzen und hier erscheinen lassen. Das wird allerdings noch etwas Zeit benötigen. Solange wird nur der Link auf der Seite Fedora-Linux_anpassen sein.
Inhaltsverzeichnis |
Kern erstellen und in Betrieb nehmen
Einleitung
Die entscheidende Frage ist wozu Linux eingesetzt werden soll. Generell wird hier das Ziel eines möglichst neuen Kerns angepasst an eigene Vorstellungen und Geräte im Einsatz für den "normalen" Betrieb. Mit Einstellungen für die eigenen Geräte und Feineinstellungen um diese Geräte im speziellen nutzen.
Wenn Sie Linux auf ihrem Toaster, ferngelenkten Hubschrauber, MP3-Player, Telefon oder ihrer Zentralheizung nutzen wollen wird diese Anleitung sie zwar grundsätzlich unterstützen aber ihr persönliches Anliegen nicht in jeder Einzelheit beschrieben sein.
Wichtige Regeln
Um Störungen in Fedoras Betrieb nicht zu gefährden sollte niemals /usr/src/linux für den Vorgang genutzt werden.
Für Einstellung und Erstellung des Kerns KEINE superuser/root Berechtigungen nutzen. Nur für ganz wenige Schritte ist diese Berechtigung erforderlich und erst dann wenn der Kern für das neue Betriebssystem eingerichtet wird.
Es ist eine gute Idee Documentation/Changes zu lesen. Vor allem ist die Tool-Chain wichtig. Für die erfolgreiche Erstellung eines betriebsbereiten Kerns ist es zwingend erforderlich die richtigen Ausgaben der Programme in der Werkzeugkette zu wählen.
Benötigte Programme für das Erstellen und in Betrieb nehmen von Linux
Grundsätzlich reichen 3 Pakete um Linux zu erstellen: Compiler, Linker und ein make-Programm.
Compiler
Der Kern ist überwiegend in C und an manchen Stellen in Assembler geschrieben.
Um den Kern zu erstellen ist gcc vorgeschrieben.
Um sicher zu gehen dass die richtige Ausgabe von GCC eingerichtet ist führen Sie GCC mit dem Parameter --version aus:
$ gcc --version
Linker
Das Zusammensetzen und Verbinden von Programmen geschieht nicht alleine durch gcc.
Das Paket binutils ist erforderlich. Auch hier ist die richtige Ausgabe zu wählen und der Befehl zur Prüfung ist:
$ ld -v
Make
Make's Aufgabe besteht darin festzustellen welche Dateien umgesetzt werden müssen und compiler und andere "Werkzeuge" zur Erstellung auszuführen. Der Kern erfordert die GNU Ausgabe von make. Es wird empfohlen die letzte stabile Ausgabe von make zu nutzen.
$ make --version
erledigt hier die Ausgabenprüfung.
Programme um den Kern zu nutzen
Grundsätzlich spielt es keine Rolle welche Ausgabe von Nutzerprogrammen genutzt wird, allerdings gibt es einige Ausnahmen. Es kann sein dass einige Programme an die jeweilige Ausgabe des Kerns angepasst werden müssen.
util-linux Hier wird die Nutzung der letzten Ausgabe empfohlen um möglichst alle Leistungsmerkmale des Kerns zu nutzen.
$ fdformat --version
gibt Aufschluss über die auf dem System genutzte Ausgabe.
module-init-tools Sollen Kern-Module genutzt werden ist dies Paket erforderlich.
$ depmod -V
gibt hier Auskunft über die momentan eingerichtete Ausgabe des Pakets.
Programme zum Umgang mit Dateisystemen
werden benötigt um Massenspeicher vorzubereiten und einzusetzen, der Einsatz der Massenspeicher beinhaltet auch Wartung und Einstellung.
Das Paket util-linux enthält einige davon.
Fedora 15 nutzt von Haus aus ext4 als Dateisystem.
Daher wird das Paket e2fsprogs automatisch eingerichtet.
$ tune2fs
Zeigt die Paket-Ausgabenummer.
Sollen Nutzern nur Anteile eines Massenspeicher zur Verfügung stehen wird quota benötigt. Das Paket quota ist in Fedora ebenfalls eingerichtet.
NFS benötigt das Paket nfs-utils
$ showmount --version
Andere Programme
udev Ohne dieses Paket ist Fedora nicht lauffähig.
$ udevadm -V
Prozess Kontrolle
Das Programmpaket procps enthält die weit verbreiteten Programme ps und top
$ ps --version
PCMCIA - PC-Karte/PC-Card
Das Paket pcmciautils ermöglicht die Kontrolle von Geräten an dieser Transfer-Schnittelle.
$ pccardctl -V
Beschaffung von Linux
Linux selbst und andere Programme, Programmpakete und Informationen bezüglich Linux finden sich dem URL http://www.kernel.org. Hier ein deutscher FTP-Spiegel: http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.kernel.org/pub/ Für den ersten Versuch ist die Kopie sicher via Browser am schnellsten.
html-Kopie
Wenn Sie einen Webbrowser nutzen wollen um eine Kopie des Programms zu erhalten nutzen Sie den URL http://www.kernel.org/.
FTP-Kopie
wget-Kopie
curl-Kopie
rsync-Kopie
git-Kopie
Einstellung und Erstellung
Die Einstellungen sind in einer Datei namens .config gespeichert die im obersten Verzeichnis des Linux Verzeichnisses liegen muss. In einem noch unberührten Verzeichnis ist diese Datei noch nicht vorhanden. Sie kann von Grund auf erstellt werden oder von einem anderem Ort, z.B. einem bereits laufenden System, kopiert werden.
Neuerstellung der Einstellungen
make config
Im Linux Verzeichnis
$ make config
ausführen startet diesen Vorgang.
Die Abfrage reagiert auf die Tasten
y - Zu Linux hinzufügen n - Nicht hinzufügen m - Als Modul hinzufügen ? - Zusammenfassung zusätzlicher Information zu einem Punkt.
Der Buchstabe welche in der Abfrage groß geschrieben wird gilt als Vorauswahl und kann mit der Eingabetaste bestätigt werden. Rund 2.000 Einstellungen müssen in diesem Fall bestätigt werden.
make defconfig
Im Paket sind vordefinierte Einstellungen enthalten, die mit der Kommandozeile
$ make defconfig
erstellt wird. Anhand dieser erstellten .config können nun Anpassungen erfolgen.
Anpassungen vornehmen
Als Hilfsmittel stehen 4 Programme zur Verfügung die jeweils unterschiedliche Programmsammlungen für Fensterkontrollelemente nutzen.
nconfig - Textoberfläche mit Farben.
menuconfig nutzt ncurses in der Shell.
gconfig nutzt gtk2 unter X.
xconfig nutzt Qt unter X.
nconfig
$ make nconfig
$ su -c 'yum -y install ncurses-devel' $ make menuconfig
gconfig
$ su -c 'yum -y install gtk2-devel glib2-devel libglade2-devel' $ make gconfig
xconfig
$ su -c 'yum -y install qt-devel' $ make xconfig
Erstellen
Zum Erstellen von Linux reicht ein simples make. Sie werden allerdings make's -j (jobs) Parameter nutzen wollen. Auf einem moderneren I7 Prozessor kann der Kern in unter 5 Minuten (1:32 mit defconfig bei mir) erstellt werden.
$ make all -j$((`nproc` *2))
$((`nproc` *2))
ist ein Bash Ausdruck. Das Programm nproc ermittelt die Anzahl der verfügbaren Prozessor(-kerne), diese wird mit 2 multipliziert und macht den Ausdruck in $(()) komplett.
Erweitertes Erstellen
Erstellung in einem anderen Verzeichnis
Make's Parameter O erlaubt es ein Verzeichnis für die Erstellung anzugeben.
$ make O=$gewünschtes_Verzeichnis
Beispiel:
$ make O=~/linux
make all -j$((`nproc` *2)) O=~/linux
Teilerstellung
$ make help
Zeigt alle* gültigen Möglichkeiten was erstellt werden kann. Wird make all genutzt werden alle make Ziele erstellt die nach make help mit einem * Stern versehen sind. Momentan sind dies: vmlinux , modules und bzImage.
Wahl einer "fremden" Architektur
Soll Linux für ein anderes Gerät als dem zur Erstellung genutzten Rechner erstellt werden und weicht die Architektur von diesem Gerät ab sind einige andere Arbeitsschritte notwendig.
$ make ARCH=arm defconfig
erstellt die voreingestellte Einstellungsdatei für die ARM-Architektur.
$ make ARCH=arm CROSS_COMPILE=/usr/local/bin/$arm-tool-chain
Führt den Erstellungsvorgang für die angegebene Architektur aus. Allerdings müssen die notwendigen Programme für Ziel-Architektur verfügbar sein.
$ yum list arm-*
sollte bei der Arbeit helfen.
Insbesondere sollte die Datei README im Unterverzeichnis der jeweiligen Architektur beachtet werden.