Die meisten NetBSD- User werden früher oder später einen an die eigenen Bedürfnisse angepassten Kernel kompilieren wollen oder müssen. Das verschafft ihnen allerdings auch einige Vorteile:
Du kannst dir Grösse Deines Kernels dramatisch reduzieren und dadurch natürlich auch den Speicherbedarf verkleinern. Das Erzeugen eines eigenen Kernels in NetBSD 1.5 reduziert die Grösse in den meisten Fällen auf weniger als die Hälfte gegenüber dem Original- Kernel, der immerhin 4.7 MB gross ist.
Die Systemleistung kann dadurch gesteigert werden.
Du kannst Dein System vernünftig einstellen.
Du kannst eventuelle Probleme mit der Hardwareerkennung und/oder Konflikte bei den Peripheriegeräten lösen.
Du kannst einige Optionen an Deine Bedürfnisse anpassen (Beispielsweise die Tastatur, Anpassen der Uhrzeit und anderes)
Du kannst mit Deinem System vertrauter werden.
|
Du bekommst die Kernelquellen bei der selben Stelle, von der Dein installiertes System stammt (beispielweise ftp://ftp.netbsd.org.). Denke aber daran, dass Du die zu Deiner Release passenden Quellen nimmst. |
Sysinst, das Installationsprogramm, kopiert die Kernelquellen nicht mit auf die Festplatte; deshalb müssen sie von Hand extrahiert und nachinstalliert werden. Das Archiv mit den Kernelquellen liegt im »/source/sets«- Verzeichnis und heisst »syssrc.tgz«.
# gzip -dc syssrc.tgz | (cd / ; tar xvf -) Übe Dich in Geduld: Diese Operation kann ihre Zeit dauern, weil das Archiv einige Hundert Dateien enthält. Die Quellen wohnen jetzt in »/usr/src/sys«; der symbolische Link »sys« verweist in dieses Verzeichnis. Daher haben folgende Kommandos exakt denselben Effekt:
# cd /usr/src/sys # cd /sys
Nach dem Auspacken der Kernelquellen kannst Du Plattenplatz sparen, indem Du die Verzeichnisse für die Architekturen entfernst, die Du nicht brauchst. Wechsle einfach in das »sys/arch«- Verzeichnis und lösche die jeweiligen, nicht benötigten Verzeichnisse. Für die i386er- Version brauchst Du auch nur das »i386«- Verzeichnis. Wenn die Quellen erst einmal installiert sind, kannst Du Deinen eigenen Kernel backen; Das ist nicht sooo schwierig, wie es vielleicht aussieht. Ehrlich: Ein Kernel kann in vier bis fünf Minuten fertig sein, wie es in den folgenden Kapiteln beschrieben wird.
nach obenBevor der Kernel kompiliert wird, sollten italienische Benutzer die in der Quelldatei vordefinierte Tastaturbelegung ändern. /sys/dev/pckbc/wskbdmap_mfii.c heisst die Datei. Im Standardlayout fehlen einige für Programmierer nützliche Zeichen (beispielsweise die geschweiften Klammern und und die Tilde). Dieses hier ist ein alternatives Layout:
static const keysym_t pckbd_keydesc_it[] = {
...
KC(8), KS_7, KS_slash, KS_braceleft,
KC(9), KS_8, KS_parenleft, KS_bracketleft,
KC(10), KS_9, KS_parenright, KS_bracketright,
KC(11), KS_0, KS_equal, KS_braceright,
KC(12), KS_apostrophe, KS_question, KS_grave,
KC(13), KS_igrave, KS_asciicircum, KS_asciitilde,
KC(26), KS_egrave, KS_eacute, KS_bracketleft, KS_braceleft,
KC(27), KS_plus, KS_asterisk, KS_bracketright,KS_braceright,
...
Dieses Layout definiert die folgende Belegung:
|
Tasten |
Zeichen |
|---|---|
|
Alt Gr + 7 |
{ |
|
Alt Gr + 8 |
[ |
|
Alt Gr + 9 |
] |
|
Alt Gr + 0 |
} |
|
Alt Gr + ' |
` |
|
Alt Gr + ì |
~ |
|
Alt Gr + é |
[ |
|
Alt Gr + + |
] |
|
Shift + Alt Gr + è |
{ |
|
Shift + Alt Gr + + |
} |
Um den neuen Kernel kompilieren zu können, muss das Compiler- Set installiert sein (comp.tgz).
Die grundsätzlichen Schritte für eine Kernel- Kompilierung:
Erstellen oder modifizieren der Konfigurationsdatei
Konfigurieren des Kernels
Abhängigkeiten erzeugen
den Kernel »backen«
...Und diesen installieren.
Anmerkung: Die beschriebenen Verzeichnisse beziehen sich auf die i386- Ausgabe. Benutzer anderer Architekturen müssen diese Namen durch die passenden ersetzen (normalerweise Unterverzeichnisse von »arch«).
Die Kernel- Konfigurationsdatei definiert neben bestimmten Optionen besonders die Arten, die Anzahl und Eigenschaften der Gräte, die vom Kernel unterstützt werden sollen. Die Konfigurationsdateien liegen im »/sys/arch/i386/conf«- Verzeichnis. Der einfachste Weg, eine neue Datei zu erzeugen ist der, eine davon zu nehmen, sie zu kopieren und anschliessend zu modifizieren. Auf den meisten Plattformen sollte die GENERIC- Konfiguration die passende sein. In dieser Konfigurationsdatei sind Kommentare eingefügt, die die Optionen beschreiben. Eine genauere Beschreibung findet sich in der »options(4)«- Manpage.
# cd /sys/arch/i386/conf/
# cp GENERIC MYKERNEL
# vi MYKERNEL
Kernelnamen: Die Namen der Konfigurationsdateien werden traditionell in Gossbuchstaben geschrieben.
Um eine solche Konfigurationsdatei anzupassen, sind grundsätzlich diese drei Schritte nötig:
Unterstützung für Hardware, die unterstützt werden soll oder eben nicht (Beispiel: Die SCSI- Unterstützung kann man entfernen, wenn man sie nicht braucht).
Unterstützung für bestimmte Features ein- oder abschalten (Beispiel: NFS- Client- Unterstützung, Linux- Kompatibilität undsoweiter...)
Einstellen der Kernelparameter
Zeilen, die mit einem »#« beginnen, sind Kommentare. Zeilen bzw. Optionen werden eingeschaltet, wenn man den Hash entfernt und ausgeschaltet, wenn man den Hash vor die jeweilige Zeile setzt. Es ist besser, Zeilen nur auszukommentieren, anstatt sie zu löschen. Es ist dann immer möglich, sie wieder zu aktivieren. Wenn das nötig sein sollte.
Der Output des dmesg- Kommandos kann benutzt werden, um herauszufinden, welche Zeilen auskommentiert werden können. Für jede Zeile dieses Typs:
<XXX> at <YYY>
müssen XXX und YYY in der Konfigurationsdatei aktiviert sein. Du wirst möglicherweise ein klein wenig experimentieren müssen, bevor sich eine Minimalkonfiguration herauskristallisiert. Aber auf einem Desktop kannst Du die Kernelgrösse allein durch den Verzicht auf SCSI und PCMCIA schon halbieren.
Du solltest ausserdem sämtliche Optionen in der Konfigurationsdatei überprüfen und alles auskommentieren, was Du nicht brauchst. Jede Option ist mit einem kurzen Kommentar versehen, der normalerweise ausreichen sollte, um zu verstehen, was die Option bedeutet. Viele Optionen werden in der »options(4)«- Manpage genauer beschrieben. Wenn Du schon mal dabei bist, solltest Du die Optionen für »Dein« Tastaturlayout und die lokale Zeit der CMOS- Uhr anpassen. Hier ein Beispiel für Deutschland/Österreich:
options RTC_OFFSET=-60
...
options PCKBD_LAYOUT="KB_DE"
Das »adjustkernel«- Perlscript, das man unter
http://www.feyrer.de/Misc/adjustkernel finden kann, untersucht den Output
von dmesg und generiert automatisch
eine minimale Konfigurationsdatei. Um diese nutzen zu können, muss Perl
auf Deinem System installiert sein. Die Installation neuer Software ist in
Kapitel 8 des NetBSD- Handbuches genauer beschrieben. Wenn Du das installieren
willst, sauge Dir das vorkompilierte »perl-5.00404.tgz«- Paket und
befiehl Deinem Rechner folgendes: # pkg_add
perl-5.00404.tgz Jetzt ist Perl installiert, konfiguriert und fertig zum Gebrauch: War wohl mal wieder leichter als gedacht...
Du kannst das Script mit diesen Kommandos ausführen:
# cd
/sys/arch/i386/conf # perl adjustkernel GENERIC > MYKERNEL
Ich habe das Script ausprobiert und es funktionierte recht gut;
schon weil es mir eine Menge manueller Tipparbeit erspart hat. Denke aber daran,
dass das Script nur die vorhandenen Geräte konfiguriert. Alle anderen
Optionen müssen immer noch manuell konfiguriert werden (z.B. Linux-
Emulation, ...).
nach oben
Wenn Du mit der Modifikation Deiner Konfigurationsdatei fertig bist (die wir mal MYKERNEL nennen), gibst Du folgendes Kommando an der Konsole ein:
# config MYKERNEL
Wenn MYKERNEL fehlerfrei ist, erstellt das config- Programm die nötigen Dateien für die Kompilierung des Kernels. Ansonsten ist es notwendig, die Fehler zu korrigieren und das ganze noch einmal zu versuchen (Spiel das Lied noch einmal, Sam...).
Das Erzeugen der Abhängigkeiten und das Kompilieren des Kernels wird mit diesen beiden Kommandos durchgeführt:
# cd ../compile/MYKERNEL
# make depend
# make
Es kann passieren, dass die Kompilierung mit einer Fehlermeldung abgebrochen wird. Das kann eine ganze Reihe von Gründen, die nicht immer von config verursacht werden. Manchmal wird dieser Fehler durch ein Hardwareproblem hervorgerufen (Oft sind defekte RAMChips die Übeltäter): Die Kompilation erzeugt eine höhere Systemlast, als es die meisten Anwendungen tun. Ein anderer Fehler liegt hierin: Option B ist aktiv; verlangt aber nach option A, die nicht aktiviert wurde.
Eine komplette Kompilierung braucht, abhängig von der Hardware, ein paar Minuten bis ein paar Stunden. Die Tabelle zeigt ein paar Beispiele, die Du Dir mal reintun solltest:
|
CPU |
RAM (MB) |
Durchschnittl. Zeit |
|---|---|---|
|
486 DX2 50 |
20 |
1 Stunde |
|
P166 |
96 |
15 Minuten |
|
PIII |
128 |
5 Minuten |
|
68030/25 |
8 |
4 Stunden |
Der Output des make- Kommandos ist die »netbsd«- Datei im »compile«- Verzeichnis: Diese Datei muss nach der Sicherung der alten Version in das Wurzelverzeichnis kopiert werden:
# mv /netbsd /netbsd.old
# mv netbsd /
Die Anpassung des Kernels wird meistens seine Grösse reduzieren. In folgenden Beispiel ist »netbsd.old« der Standard- Kernel und »netbsd« die neue Version:
-rwxr-xr-x 1 root wheel 1342567 Nov 13 16:47 /netbsd
-rwxr-xr-x 1 root wheel 3111739 Sep 27 01:20 /netbsd.old
Mit einem Neustart wird der neue Kernel aktiviert:
# reboot
nach oben
Wenn der PC neu gestartet wird, kann es passieren, dass der neue Kernel nicht läuft wie erwartet oder überhaupt nicht bootet. Kein Grund zu Sorge: Sollte das passieren, starte das System einfach mit dem alten Kernel und entferne den neuen (Es ist besser, den Neustart im »single-user«- Modus auszuführen):
Starte die Maschine neu
Drücke die Leertaste am Bootprompt während des 5-Sekunden- Countdowns. Folgende Meldung erscheint:
boot:
Gib das hier ein:
> boot netbsd.old -s
Führe nun diese Kommandos aus, um den alten Zustand wieder herzustellen und den alten Kernel wieder zu aktivieren:
fsck /
mount /
mv netbsd.old netbsd
exit