<!-- Subversion revision of original English document "3743" -->
<chapt id="kernel">Debian und der Kernel

<sect id="non-debian-kernel">Kann ich einen Kernel ohne gewisse
Debian-spezifische Optimierungen installieren und kompilieren?


<p>Ja.

<p>Es gibt nur ein häufiges Problem: Die Debian C-Bibliotheken werden mit
den neusten <em>stabilen</em> Ausgaben der <strong>Kernel</strong>-Header
erstellt. Wenn Sie ein Programm mit neueren Kernel-Headern als jene aus dem
stabilen Zweig kompilieren möchten, sollten Sie entweder das Paket, 
welches die Header enthält (<package/libc6-dev/) aktualisieren oder die neuen
Header eines entpackten Baumes des neueren Kernels verwenden. Das heißt,
wenn die Kernelquellen in <file>/usr/src/linux</file> liegen, sollten Sie
beim Kompilieren <tt>-I/usr/src/linux/include/</tt> an Ihre Befehlszeile
anhängen.

<sect id="customkernel">Welche Werkzeuge zum Erzeugen eines angepassten
Kernels stellt Debian zur Verfügung?

<p>Benutzern, die einen angepassten Kernel erstellen möchten (oder müssen),
wird empfohlen, das Paket <package/kernel-package/ herunterzuladen. Dieses
Paket enthält das Skript, welches benötigt wird, um ein Kernelpaket zu
erzeugen und es stellt die Fähigkeit zur Verfügung, ein 
Debian <package>kernel-image-<var>version</var></package>-Paket zu erstellen,
indem man den Befehl <example>make-kpkg kernel_image</example>
im Top-Level-Verzeichnis der Kernel-Quellen verwendet.
Hilfe dazu erhält man mit <example>make-kpkg --help</example> und in der 
Handbuchseite <manref name="make-kpkg" section="1">.

<p>Anwender müssen den Quelltext des neusten Kernels (oder des Kernels nach
Wahl) separat von der favorisierten Linux-Archivseite herunterladen, es sei denn, es
ist ein <package>kernel-source-<var>version</var></package>-Paket verfügbar 
(wobei <var>version</var> für die Version des Kernels steht).

<p>Detaillierte Instruktionen zur Verwendung des <package/kernel-package/-Pakets
können in der Datei <file>/usr/share/doc/kernel-package/README.gz</file> gefunden
werden. Zusammengefasst sollte man Folgendes tun:

<list>
  <item>Entpacken Sie die Kernelquellen und wechseln Sie mit <tt>cd</tt> ins
	neu erstellte Verzeichnis.
  <item>Passen Sie die Kernelkonfiguration an, indem Sie einen dieser Befehle
	verwenden:
	<list>
	  <item><tt>make config</tt> (für eine textbasierte Benutzerschnittstelle).
	  <item><tt>make menuconfig</tt> (für eine ncurses-basierte menüartige
		Oberfläche). Um diese Option benutzen zu können, muss das Paket
		<package/libncurses5-dev/ installiert sein.
	  <item><tt>make xconfig</tt> (für eine X11-Oberfläche). Um diese Option
		verwenden zu können, müssen die betreffenden X- und Tcl/Tk-Pakete
		installiert sein.
	</list>
	Alle obigen Befehle generieren eine neue <tt>.config</tt>-Datei im obersten
	Kernel-Quellverzeichnis.
	<!-- FIXME: make-kpkg and dpkg require both root permission!!? -->
  <item>Führen Sie den Befehl <tt>make-kpkg -rev Custom.<var>N</var> kernel_image</tt> aus,
	wobei <var>N</var> eine vom Benutzer gewählte Revisionsnummer ist.
	Das neue daraus gebildete Debian-Archiv hätte dann die Revision
	Custom.<var>N</var>, z.B. <file>kernel-image-2.2.14_Custom.1_i386.deb</file>
	für den Linux-Kernel 2.2.14 auf einer i386-Architektur.
  <item>Installieren Sie das erzeugte Paket.
	<list>
	<!--  FIXME: or linux-image! -->
	  <item>Lassen Sie
	        <tt>dpkg --install ../kernel-image-<var>VVV</var>_Custom.<var>N</var>_i386.deb</tt>
		laufen um den Kernel zu installieren. Das Installationsskript
		führt Folgendes durch:
		<list>
		<!-- FIXME: really? -->
	  	  <item>Es lässt wenn nötig den Bootloader (grub, LILO, etc.) laufen,
		  <!-- FIXME: for 2.6.16 there is no -Custom.N suffix! -->
	  	  <item>installiert den angepassten Kernel in
		        <file>/boot/vmlinuz_<var>VVV</var>-Custom.<var>N</var></file>,
			und erstellt die passenden symbolischen Verweise auf die
			neuste Kernelversion und
		  <item>fragt den Benutzer, ob eine Bootdiskette erstellt werden
			soll. Diese Bootdiskette enthält nur den rohen Kernel;
			siehe <ref id="custombootdisk">.
		</list>
	  <item>Um sekundäre Bootloader wie zum Beispiel <prgn/loadlin/ zu verwenden,
		kopieren Sie dieses Image an einen anderen Ort (z.B. auf eine 
		<tt>MS-DOS</tt>-Partition).
	</list>
</list>

<!-- TODO: check out a new source of details, this README isn't too useful,
I'm told (joy)
FIXME: completely out of date -->

<sect id="custombootdisk">Wie kann ich eine angepasste Bootdiskette erstellen?

<p>Diese Arbeit wird großartig vom Debian-Paket <package/boot-floppies/ 
unterstützt, welches normalerweise im <tt>admin</tt>-Bereich des
Debian-FTP-Archivs gefunden werden kann. Shellskripte in diesem Paket erzeugen
Bootdisketten im <tt>SYSLINUX</tt>-Format. Das sind <tt>MS-DOS</tt>-formatierte
Disketten, deren Master Boot Record so verändert wurde, dass sie direkt Linux
(oder jedes andere Betriebssystem, das in der Datei <file>syslinux.cfg</file> auf der
Diskette definiert worden ist) booten. Andere Skripte in diesem Paket erstellen
root-Disketten für den Notfall und können sogar die Basisdisketten
wiederherstellen.

<p>Sie finden mehr Informationen dazu in der Datei 
<file>/usr/share/doc/boot-floppies/README</file> nachdem Sie das Paket
<package/boot-floppies/ installiert haben.

<sect id="modules">Welche speziellen Einrichtungen bietet Debian im Umgang mit 
Modulen?

<p>Das Debian-Paket <package/modconf/ liefert ein Shellskript
(<file>/usr/sbin/modconf</file>), welches dazu verwendet werden kann, die 
Konfiguration von Modulen anzupassen. Dieses Skript präsentiert eine 
menübasierte Benutzerschnittstelle, welche den Anwender nach Einzelheiten 
zu den ladbaren Gerätetreibern in seinem System fragt. Die Antworten
werden dazu verwendet, die Datei <file>/etc/modules.conf</file> (welche 
Aliase auflistet und andere Argumente, die im Zusammenhang mit verschiedenen
Modulen verwendet werden müssen) anzupassen, sowie Dateien in
<file>/etc/modutils/</file>, und auch die Datei <file>/etc/modules</file> 
(welche die Module auflistet, die beim Booten geladen werden müssen).

<p>Wie die (neuen) <file>Configure.help</file>-Dateien, die nun verfügbar sind, um die
Konstruktion angepasster Kernel zu unterstützen, enthält das <package>modconf</package>-Paket
eine Serie von Hilfedateien (in <file>/usr/lib/modules_help/</file>), die 
detaillierte Informationen zu passenden Argumenten für jedes der Module
bereitstellen.

<sect id="removeoldkernel">Kann ich sicher ein altes Kernel-Paket
deinstallieren und wenn ja, wie?

<p>Ja. Das <prgn>kernel-image-<var>NNN</var>.prerm</prgn>-Skript kontrolliert, ob der Kernel,
den Sie gerade verwenden, der selbe ist wie jener, den Sie zu entfernen 
versuchen. Daher können Sie nicht mehr benötigte Kernel-Image-Pakete mit 
diesem Befehl entfernen:

<example>dpkg --purge --force-remove-essential kernel-image-<var>NNN</var></example>

(Natürlich müssen Sie <var>NNN</var> mit Ihrer Kernelversion und Revisionsnummer 
ersetzen.)
