Index: head/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.xml +++ head/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.xml @@ -5,10 +5,11 @@ $FreeBSD$ $FreeBSDde$ - basiert auf: r42014 + basiert auf: r42827 --> Konfiguration des &os;-Kernels + @@ -47,6 +49,10 @@ + Wie Sie eine Hardware-Inventur durchführen. + + + Wie Sie eine Kernelkonfigurationsdatei verändern. @@ -72,7 +78,7 @@ Wieso einen eigenen Kernel bauen? - Traditionell besaß &os; einen monolithischen + Traditionell besaß &os; einen monolithischen Kernel. Der Kernel war ein einziges großes Programm, das eine bestimmte Auswahl an Hardware unterstützte. Um das Kernelverhalten zu ändern, musste man einen neuen Kernel @@ -126,25 +132,53 @@ sind. + + Bevor Sie einen angepassten Kernel erstellen, überlegen Sie + sich bitte, warum Sie dies tun wollen. Wenn Sie lediglich eine + bestimmte Hardwareunterstützung benötigen, existiert diese + vielleicht schon als Kernelmodul. + + Kernelmodule existieren in /boot/kernel + und können mit &man.kldload.8; dynamisch in den laufenden Kernel + geladen werden. Die meisten Kerneltreiber verfügen über ein + ladbares Modul und eine Manualpage. Der drahtlose + Ethernet-Treiber &man.ath.4; hat die folgenden Informationen in + seiner Manualpage: + + Alternatively, to load the driver as a module at boot time, place the +following line in &man.loader.conf.5;: + + if_ath_load="YES" + + Durch das Hinzufügen von + if_ath_load="YES" in + /boot/loader.conf wird das Modul dynamisch + beim Systemstart geladen. + + In manchen Fällen gibt es kein entsprechendes Modul in + /boot/kernel. Dies gilt insbesondere für + bestimmte Subsysteme. Informationen über die vorhandene Hardware beschaffen + - Bevor Sie mit der Kernelkonfiguration beginnen, sollten - Sie wissen, über welche Hardware das System verfügt. In Fällen, - in denen &os; nicht das primäre Betriebssystem ist, können diese - Informationen aus der aktuellen Betriebssystemkonfiguration - ermittelt werden. µsoft;s - Gerätemanager enthält beispielsweise - Informationen über installierte Hardware. + Bevor die Kernelkonfigurationsdatei bearbeitet wird, ist es + empfehlenswert eine Bestandsaufnahme der Hardware des Systems + durchzuführen. Auf einem Dual-Boot-System können diese + Informationen aus dem anderen Betriebssystem ermittelt werden. + µsoft;s Gerätemanager enthält + beispielsweise Informationen über die installierte + Hardware. Einige Versionen von µsoft.windows; verfügen @@ -154,48 +188,41 @@ können. - Wenn kein weiteres Betriebssystem auf der Maschine vorhanden - ist, muss der Administrator diese Informationen manuell - zusammentragen. Eine Möglichkeit ist der Einsatz von - &man.dmesg.8; und &man.man.1;. Die meisten &os;-Gerätetreiber + Wenn &os; das einzige installierte Betriebssystem ist, dann + listet &man.dmesg.8; die Hardware auf, die während des + Systemstarts gefunden wurde. Die meisten &os;-Gerätetreiber haben eine eigene Manualpage, die Informationen über die - unterstützte Hardware enthält. Während des - Systemstarts werden Informationen über die vorhandene - Hardware ausgegeben. Die folgenden Zeilen zeigen beispielsweise - an, dass der &man.psm.4;-Treiber eine angeschlossene Maus - gefunden hat: + unterstützte Hardware enthält. Die folgenden Zeilen zeigen + beispielsweise an, dass der &man.psm.4;-Treiber eine + angeschlossene Maus gefunden hat: psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0 - Dieser Treiber muss in Ihrer Kernelkonfigurationsdatei - vorhanden sein oder durch das Werkzeug &man.loader.conf.5; - geladen werden. - - Manchmal zeigt dmesg während des - Systemstarts nur Systemmeldungen, aber keine Informationen - zur gefundenen Hardware an. In solchen Situationen können - diese Informationen aus /var/run/dmesg.boot - entnommen werden. - - Eine weitere Möglichkeit bietet - &man.pciconf.8;, das ausführliche Informationen - bereitstellt. Dazu ein Beispiel: + Da diese Hardware vorhanden ist, sollte dieser Treiber + nicht aus einer angepassten Kernelkonfigurationsdatei entfernt + werden. + + Wenn dmesg keine Informationen zur + gefundenen Hardware anzeigt, können diese Informationen auch + aus /var/run/dmesg.boot entnommen + werden. + + Ein weiteres Werkzeug für die Suche nach Hardware ist + &man.pciconf.8;, das ausführliche Informationen bereitstellt. + Ein Beispiel: - ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 + &prompt.user; pciconf -lv +ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network - subclass = ethernet + subclass = ethernet - Diese Zeilen, die Sie durch den Aufruf von - pciconf -lv erhalten, zeigen, - dass der Treiber ath eine drahtlose - Ethernetkarte gefunden hat. Geben Sie - man ath ein, um - die Manualpage &man.ath.4; zu lesen. + Die Ausgabe zeigt, dass der Treiber ath + eine drahtlose Ethernetkarte gefunden hat. Die Option von &man.man.1; kann verwendet werden, um nützliche Informationen zu erhalten. Um @@ -207,139 +234,74 @@ ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL) - Mit diesen Informationen ausgestattet, sollte der Bau eines - angepassten Kernel keine großen Probleme bereiten. - - - - Kerneltreiber, Subsysteme und Module - - - Kernel - Treiber / Module / Subsysteme - - - Bevor Sie einen angepassten Kernel erstellen, überlegen Sie sich - bitte, warum Sie dies tun wollen. Wenn Sie lediglich eine bestimmte - Hardwareunterstützung benötigen, existiert diese vielleicht - schon als Kernelmodul. - - Kernelmodule existieren in /boot/kernel - und können dynamisch in den laufenden Kernel über - &man.kldload.8; geladen werden. Die meisten, wenn nicht sogar - alle, Kerneltreiber besitzen ein ladbares Modul und eine - Manualpage. Der drahtlose Ethernettreiber - ath hat die folgenden Information in seiner - Manualpage: - - Alternatively, to load the driver as a module at boot time, place the -following line in &man.loader.conf.5;: - - if_ath_load="YES" - - Durch das Hinzufügen von - if_ath_load="YES" in - /boot/loader.conf wird das Modul dynamisch - beim Systemstart geladen. - - In manchen Fällen gibt es kein dazugehöriges Modul. Das - gilt insbesondere für bestimmte Teilsysteme. Eine Möglichkeit, - herauszufinden ob ein Treiber verfügbar ist, ist die Überprüfung - des jeweiligen Moduls selbst. - - - Es ist erstaunlich einfach, die Unterstützung für ein - Gerät oder eine Option zu entfernen, und am Ende einen - defekten Kernel zu erhalten. Wenn beispielsweise der - &man.ata.4;-Treiber aus der Kernelkonfigurationsdatei entfernt - wird, kann ein System, das den - ATA-Festplattentreiber benötigt, nicht mehr - starten. Im Zweifelsfall belassen Sie die Unterstützung - besser im Kernel. - + Mit einer Inventarliste der Hardware können Sie dann + sicherstellen, dass Sie die installierten Hardware-Treiber nicht + versehentlich entfernen, wenn Sie die Kernelkonfigurationsdatei + bearbeiten. - - Erstellen und Installation eines angepassten - Kernels - - - Sie benötigen den kompletten Quellcodebaum, um den - Kernel zu bauen. - - - - Kernel - Erstellen und Installation - - - Die Kernelquellen befinden sich im Verzeichnis - /usr/src/sys. Es enthält mehrere - Unterverzeichnisse, die bestimmte Teile des Kernels - darstellen. Diese beinhalten - arch/conf, das - die Kernelkonfigurationsdatei enthält, und - compile, in dem der Kernel - gebaut wird. arch enthält - Unterverzeichnisse für jede unterstützte Architektur: - i386, - amd64, ia64, - powerpc, sparc64 und - pc98. Alles in diesen Verzeichnissen ist - nur für die jeweilige Architektur relevant. Der Rest des Codes - ist maschinenunabhängig und für alle Plattformen gleich. - Beachten Sie die logische Organisation der Verzeichnisstruktur, - die jedem unterstützten Gerät, jedem Dateisystem und jeder - Option ein eigenes Verzeichnis zuordnet. - - Die Beispiele in diesem Kapitel verwenden die - i386-Architiktur. Wird ein anderes System benutzt, - passen Sie bitte die Pfade entsprechend der Architektur - des Systems an. - - - Wenn /usr/src/ nicht existiert oder - leer ist, sind die Quellen nicht installiert. Der einfachste - Weg, die Kernelquellen zu installieren ist die Verwendung von - svn, wie in - beschrieben ist. Man sollte ebenfalls - einen symbolischen Link auf /usr/src/sys/ - anlegen: - - &prompt.root; ln -s /usr/src/sys /sys - + + + Die Kernelkonfigurationsdatei + + Bevor eine angepasste Kernelkonfigurationsdatei erstellt + werden kann, muss zuerst der vollständige &os; Quellcodebaum + installiert werden. + + Falls /usr/src/ nicht existiert oder + leer ist, sind die Kernelquellen nicht installiert. Die Quellen + können mit Subversion, wie im beschrieben, installiert werden. + + Sobald die Quellen installiert sind, können Sie sich einen + Überblick über /usr/src/sys verschaffen. + Dieses Verzeichnis enthält eine Reihe von Unterverzeichnissen, + einschließlich Verzeichnisse für die unterstützten Architekturen + amd64, i386, + ia64, pc98, + powerpc und sparc64. + Alles in diesen Verzeichnissen ist nur für die jeweilige + Architektur relevant. Der Rest des Codes ist machinenunabhängig + und für alle Architekturen gleich. Jede unterstützte + Architektur hat ein Unterverzeichnis conf, + das die GENERIC Kernelkonfigurationsdatei + für diese Architektur enthält. + + Bearbeiten Sie GENERIC nicht direkt. + Kopieren Sie stattdessen die Datei unter einem anderen Namen und + machen dann die Änderungen an dieser Kopie. Traditionell + besteht der Name des Kernels immer aus Großbuchstaben. Wenn Sie + mehrere &os;-Maschinen mit unterschiedlicher Hardware betreuen, + ist es eine gute Idee, die Konfigurationsdatei nach den + Hostnamen der Maschinen zu benennen. In diesem Beispiel wird + eine Kopie der + GENERIC Kernelkonfigurationsdatei, namens + MYKERNEL, für die + amd64-Architektur erstellt: - Als nächstes wechseln Sie in das Verzeichnis - arch/conf - und kopieren die Konfigurationsdatei - GENERIC in eine Datei, die den - Namen des Kernels trägt. Zum Beispiel: - - &prompt.root; cd /usr/src/sys/i386/conf -&prompt.root; cp GENERIC MYKERNEL - - Traditionell ist der Name des Kernels immer in - Großbuchstaben. Wenn Sie mehrere &os;-Maschinen mit - unterschiedlicher Hardware betreuen, ist es nützlich, die - Konfigurationsdatei nach dem Hostnamen der Maschinen zu - benennen. Dieses Beispiel verwendet den Namen - MYKERNEL. + &prompt.root; cd /usr/src/sys/amd64/conf +&prompt.root; cp GENERIC MYKERNEL Wenn Sie die Kernelkonfigurationsdatei fertig bearbeitet - haben, speichern Sie eine Sicherungskopie außerhalb von - /usr/src. Bearbeiten Sie - GENERIC nicht - direkt. - - Alternativ kann die Kernelkonfigurationsdatei an anderer - Stelle aufbewahrt werden und im Verzeichnis - i386 ein Link - auf die Datei erstellt werden. + haben, sollten Sie eine Sicherungskopie außerhalb von + /usr/src speichern - Beispiel: + Alternativ kann die Kernelkonfigurationsdatei an anderer + Stelle gespeichert, und ein symbolischer Link auf die Datei + erstellt werden: - &prompt.root; cd /usr/src/sys/i386/conf + &prompt.root; cd /usr/src/sys/amd64/conf &prompt.root; mkdir /root/kernels &prompt.root; cp GENERIC /root/kernels/MYKERNEL &prompt.root; ln -s /root/kernels/MYKERNEL @@ -348,122 +310,9 @@ Editieren Sie MYKERNEL mit einem Texteditor. Der Standard-Editor ist - vi, dessen Nutzung in vielen Büchern - aus der Bibliographie gut - erklärt ist. Ein einfacherer Editor für Anfänger, namens - ee, ist ebenfalls verfügbar. - Sie können die Kommentare am Anfang der Konfigurationsdatei - ändern, um die Änderungen gegenüber - GENERIC zu dokumentieren. - - Wenn die GENERIC Konfigurationsdatei - Sie verschreckt, folgen Sie den Beschreibungen im Abschnitt - über die Konfigurationsdatei - langsam und sorgfältig. - - - Nachdem Sie die &os; Quellen - synchronisieren, sollten Sie - immer - /usr/src/UPDATING lesen, bevor Sie - etwas aktualisieren. Diese Datei enthält alle wichtigen - Informationen, die Sie beim Aktualisieren beachten müssen. - /usr/src/UPDATING passt immer zur Version - der &os; Quellen, und die Informationen dort sind aktueller - als in diesem Handbuch. - - - Nach dem Speichern der Änderungen, kompilieren Sie den - Quellcode für den Kernel. - - - Den Kernel bauen - - - Sie benötigen den kompletten Quellcodebaum, um den - Kernel zu bauen. - - - - Wechseln Sie in das Verzeichnis /usr/src: - - &prompt.root; cd /usr/src - - - - Kompilieren Sie den neuen Kernel, und geben Sie den - Namen der angepassten Kernelkonfigurationsdatei an: - - &prompt.root; make buildkernel KERNCONF=MYKERNEL - - - - Installieren Sie den neuen Kernel: - - &prompt.root; make installkernel KERNCONF=MYKERNEL - - - - - In der Voreinstellung werden beim Bau eines angepassten - Kernels stets alle Kernelmodule neu gebaut. - Wollen Sie den Kernel schneller bauen oder nur bestimmte - Module bauen, bearbeiten Sie - /etc/make.conf, bevor Sie den Kernel - bauen: - - MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs - - Diese Variable spezifiziert eine Liste von Modulen, die - gebaut werden. In der Voreinstellung werden alle Module - gebaut. - - WITHOUT_MODULES = linux acpi sound ntfs - - Diese Variable spezifiziert eine Liste von Modulen, die - vom Bauprozess ausgeschlossen werden. Weitere verfügbare - Variablen finden Sie in &man.make.conf.5;. - - - - - /boot/kernel.old - - - - Der neue Kernel wird in /boot/kernel - als /boot/kernel/kernel abgelegt, - während der alte Kernel nach - /boot/kernel.old/kernel verschoben wird. - Um den neuen Kernel zu benutzen, starten Sie den Rechner neu. - Falls etwas schief geht, sehen Sie - bitte in dem Abschnitt zur - Fehlersuche nach, und was zu tun - ist, wenn der neue Kernel nicht - startet. - - - Im Verzeichnis /boot werden andere - Dateien, die zum Systemstart benötigt werden, wie der - Boot-Loader &man.loader.8; und dessen Konfiguration, abgelegt. - Module von Drittanbietern oder angepasste Module - werden in /boot/kernel - abgelegt. Beachten Sie bitte, dass diese Module immer - zu dem verwendeten Kernel passen müssen. Module, - die nicht zu dem verwendeten Kernel passen, können die - Stabilität des Systems gefährden. - - - - - Die Kernelkonfigurationsdatei - - JoelDahlAktualisiert von - - - - + vi, jedoch steht mit + ee ein weiterer, einfach zu + bedienender Editor bereit. Kernel @@ -479,19 +328,22 @@ Konfigurationsdatei - Das Format der Konfigurationsdatei ist recht einfach. Jede Zeile - enthält ein Schlüsselwort und ein oder mehrere Argumente. - Eine Zeile, die von einen # eingeleitet wird, gilt - als Kommentar und wird ignoriert. Die folgenden Abschnitte - beschreiben jedes Schlüsselwort in der Reihenfolge, in der es - in GENERIC auftaucht. - Eine ausführliche Liste aller - Optionen mit detaillierten Erklärungen finden Sie in - NOTES, die sich in demselben - Verzeichnis wie GENERIC befindet. - Von der Architektur unabhängige Optionen sind in - der Datei /usr/src/sys/conf/NOTES - aufgeführt. + Das Format der Konfigurationsdatei ist einfach. Jede Zeile + enthält ein Schlüsselwort, das ein Gerät oder ein Subsystem + repräsentiert, ein Argument und eine kurze Beschreibung. + Jeder Text, der hinter einem # steht, gilt + als Kommentar und wird ignoriert. Um die Kernel-Unterstützung + für ein Gerät oder Subsystem zu entfernen, muss ein + # an den Anfang der Zeile, die dieses Gerät + oder Subsystem repräsentiert, gesetzt werden. Verändern Sie + keine Zeilen, die Sie nicht genau verstehen. + + Neben den Kurzbeschreibungen in dieser Datei, finden Sie + zusätzliche Erklärungen in NOTES, + die sich in demselben Verzeichnis wie + GENERIC für die jeweilige Architektur + befindet. Von der Architektur unabhängige Optionen sind in + /usr/src/sys/conf/NOTES aufgeführt. Es ist möglich, eine include-Anweisung in die Kernelkonfigurationsdatei aufzunehmen. @@ -522,10 +374,6 @@ von Konfigurationseinstellungen und deren Beschreibungen finden Sie in &man.config.5;. - Der übrige Teil dieses Kapitels behandelt die Inhalte einer - typischen Konfigurationsdatei und die Rolle, die - unterschiedliche Optionen und Geräte dabei spielen. - Um einen Kernel mit allen möglichen Optionen zu bauen, führen Sie als root @@ -535,30 +383,6 @@ - Kernel - Konfigurationsdatei - - - Das folgende Beispiel zeigt eine GENERIC - Konfigurationsdatei, die, wo notwendig, zusätzliche Kommentare - enthält. Das Beispiel sollte der Kopie in - /usr/src/sys/i386/conf/GENERIC - sehr ähnlich sein. - - - Kerneloptionen - machine - - - machine i386 - - Gibt die Architektur der Maschine an und muss entweder - amd64, i386, - ia64, pc98, - powerpc oder sparc64 - sein. - - Kerneloptionen cpu @@ -587,20 +411,6 @@ ident wird beim Booten des neuen Kernels ausgegeben. - #To statically compile in device wiring instead of /boot/device.hints -#hints "GENERIC.hints" # Default places to look for devices. - - Unter &os; werden Gerätetreiber mit &man.device.hints.5; - konfiguriert. In der Voreinstellung ist dies - /boot/device.hints. Die Option - hints bindet die Gerätekonfiguration - statisch in den Kernel ein, sodass - /boot/device.hints nicht benötigt - wird. - - - makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols Diese Option aktiviert Debugging-Informationen. @@ -610,13 +420,6 @@ Der voreingestellte Scheduler von &os;. Ändern Sie diesen Wert nicht! - options PREEMPTION # Enable kernel thread preemption - - Erlaubt es, Kernelthreads vor Threads mit höherer - Prioritält auszuführen. Die Interaktivität - des Systems wird dadurch erhöht. Interrupt-Threads werden - dabei bevorzugt ausgeführt. - options INET # InterNETworking Netzwerkunterstützung. Diese Option ist zwingend notwendig, @@ -1441,6 +1244,78 @@ + + Einen angepassten Kernel bauen und installieren + + Nachdem die Änderungen an der angepassten + Kernelkonfigurationsdatei gespeichert sind, kann der Quellcode + für den Kernel mit den folgenden Schritten übersetzt + werden: + + + Einen Kernel bauen + + + Kernel + bauen / installieren + + + + Wechseln Sie das Verzeichnis: + + &prompt.root; cd /usr/src + + + + Bauen Sie den Kernel, indem Sie den Namen der + Kernelkonfigurationsdatei angeben: + + &prompt.root; make buildkernel KERNCONF=MYKERNEL + + + + Installieren Sie den neuen Kernel. Dieser Befehl wird + den neuen Kernel nach + /boot/kernel/kernel kopieren, und den + alten Kernel nach + /boot/kernel.old/kernel + speichern: + + &prompt.root; make installkernel KERNCONF=MYKERNEL + + + + Fahren Sie das System herunter und starten Sie den neuen + Kernel. Wenn etwas nicht funktioniert, lesen Sie . + + + + In der Voreinstellung werden beim Bau eines angepassten + Kernels stets alle Kernelmodule neu gebaut. Um einen Kernel + schneller zu bauen, oder um nur bestimmte Module zu bauen, + bearbeiten Sie /etc/make.conf, bevor Sie + den Kernel neu bauen. + + In diesem Beispiel werden über eine Variable nur die + Kernelmodule definiert, die auch tatsächlich gebaut werden + sollen. In der Voreinstellung werden alle Module gebaut: + + MODULES_OVERRIDE = linux acpi + + Alternativ kann auch eine Variable verwendet werden, die + bestimmte Kernelmodule vom Bauprozess ausschließt: + + WITHOUT_MODULES = linux acpi sound + + Weitere Variablen und deren Beschreibung finden Sie in + &man.make.conf.5;. + + + /boot/kernel.old + + + Wenn etwas schiefgeht