Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Support HowTo: Neuen Kernel für Debian (Squeeze) einspielen

Cpt.Spock

Newbie
Registriert
1. Februar 2011
Beiträge
14
Reaktionspunkte
7
Punkte
23
Hallo zusammen!

Grundvoraussetzung für das Kompilieren eines neuen Linux Kernels in Debian, sind die Quellen. Man kann entweder auf die offiziellen Linux Kernel zurückgreifen, welche auf
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
heruntergeladen werden können, oder die für Debian angepassten Quellen im Online Repository. In der Debian Variante sind in der Regel bereits einige an die Distribution angepassten Patches enthalten, so dass man auf diese zurückgreifen sollte, sobald diese Quellen verfügbar sind.

Um auf einer aktuellen Debian Distro den Kernel von 2.6.32-5 auf x.38 oder x.39 zu heben geht man am besten so vor:

Kernel Quellen und notwendige Pakete installieren

Installiere zunächst die notwendigen Pakete, welche für das Bauen eines neuen Kernels notwendig sind. Das Paket "bin86" ist nur auf einer "i386" Maschine notwendig:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Laden der gewünschten Kernel Quellen:
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Die Kernel Sources für das Release 2.6.38 und höher sind noch nicht im normalen Stable Archiv verfügbar, können aber derzeit über das "Testing" Archiv bereits geladen werden. Erweitere deine "/etc/apt/sources.list" dafür wie folgt mit der Zeile "deb
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
testing main contrib non-free" und führe ein "aptitude update" aus:


Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
^^
Die Testing und backports Quellen musst du nach dem Download unbedingt wieder deaktivieren!!
Ansonsten gehts rund und beim nächsten Update werden ALLE Pakete getauscht! Nix gut - ist mir scho passiert
:D

Der neue Kernel wurde nach /usr/src gespeichert:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Das Kernel-Quellverzeichnis sollte immer "/usr/src/linux" heißen und die Kernel-Quellen des aktuellen Kernels enthalten. Vor allem, wenn die Quellen mehrerer Kernel dort liegen achte darauf, dass die Verzeichnisse der Kernel-Quellen der einzelnen Kernel-Versionen eindeutig benannt sind (z.B. linux-source-2.6.32-5-686). Lege einen Symlink auf die Quellen des zukünftigen Kernels an:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

Current Minimal Requirements


Die Datei "./Documentation/Changes" zeigt eine Liste, in welchen Versionen notwendige Programme mindestens vorliegen müssen, um Konflikte zu vermeiden. Diese Liste bedeutet aber nicht, dass diese Pakete auch zwingend benötigt werden:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Du kannst das Skript "./scripts/ver_linux" aufrufen, um die aktuellen Versionen der Pakete auf dem System abzurufen:


Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!

Kernel konfigurieren

Der Kernel kann vor dem Kompilieren mit sehr umfangreichen Konfigurationen seinen bestimmten Bedürfnissen konfiguriert werden. Am einfachsten ist es jedoch erst mal die aktuelle Konfiguration als Grundlage zu verwenden und ggf auf dieser Basis aufbauend, die weiterführenden Konfigurationen vorzunehmen. Kopiere hierfür die Konfigurationsdatei des aktuellen Kernels in das Verzeichnis "/usr/src/linux" und benenne sie ".config". Die aktuelle Kernelkonfiguration findest du in »/boot« und heißt in meinem Fall "config-2.6.32-5-686". Sie trägt die Versionsnummer des aktuellen Kernels im Namen:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Starte nun einen Konfigurationshelfer wie z.B. "make menuconfig". Hier wird ein Konfigurationsinterface aufgerufen, welches die Möglichkeit gibt, den Kernel neu zu konfigurieren:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Du kannst im Konfigurationseditor mit der Space-Taste eine Option an- oder abwählen ([ ] → abgewählt;
[*] → angewählt) oder als Modul auswählen ([M]); mit der ?-Taste die Hilfe dazu einblenden und mit der /-Taste, gefolgt vom Suchstring nach bestimmten Optionen suchen.

Um die aktuelle Konfiguration in den Editor zu laden, wähle die Option "load an alternative configuration file" und wähle die Konfigurationsdatei ".config", welche du eben schon in das Quellverzeichnis des zu kompilierenden Kernels kopiert hast.

Wenn die Konfiguration abgeschlossen ist, bestätige den Konfigurationseditor mit "Exit" und bestätige ebenfalls das Speichern der neuen Konfiguration.

In diesem Zusammenhang ist es meist sinnvoll den neuen Kernel für dein System zu optimieren. Normal werden Systeme erst mal mit einem pre-compiled Kernel installiert. Dieser enthält Hardware Support für Hardware die du niemals haben wirst und Sprachpakete für Sprachen, die du nie benötigst. Du kannst jetzt deinen neuen Kernel eine Diät verpassen und alles was du nicht brauchst raus werfen. Wenn du dir aber nicht sicher bist, lass es wie es ist. Dieser Schritt ist rein kosmetisch, beeinflusst nur die Performance etwas positiv.

Kernel und Debian Paket bauen

Das Paket "kernel-package" bringt das Programm "make-kpkg" mit, welches unter Debian anstelle der Linux üblichen Kommandos "make menuconfig; make dep; make bzImage; make modules" verwendet werden kann. "make-kpkg" bedient nun das Debian Paketmanagement (dpkg) adäquat und kompiliert den neuen Kernel, erzeugt je nach verwendeter Optionen ein über das Paketmanagement installierbares deb-Paket, welches neben dem Kernel auch gleich die Initial-RAM-Disk enthält, erteilt Revisionsnummern für das Paket-Management etc.

Führe aber zuerst das Kommando "make-kpkg clean" aus, um die Verzeichnishirachie der Kernel-Quellen aufzuräumen und die "kernel -package" Parameter zurückzusetzen. Dadurch wird zwar eine vollständige Neukompilierung des Kernels veranlasst, was je nach inkludierter Optionen und abhängig von der Leistungsfähigkeit des Rechners ca. eine Stunde bis hin zu mehreren Stunden dauern kann aber zB bei der Angabe einer neuen Kernelrevision notwendig sein wird:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Anschließend kompiliere den Kernel, baue das Debian Paket und erstelle zugleich die Initial-Ramdisk:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Die Optionen "--rootcmd" und "fakeroot" sind nur notwendig, wenn der User, welcher das Kommando ausführt nicht "root" ist.
Die Option "kernel_image" ein Debian Paket mit dem Linux-Kernel, der aus dem Quellcode übersetzt wird und aller konfigurierten Module.
Die Option "--revision deine-version.1" erzeugt eine Revisionsnummer (deine-version.1) für das Debian Paket und wird eigentlich nur vom Paket-Management verwendet.
Die Option "--initrd" ruft alle zusätzlichen Aktionen auf, welche notwendig sind, eine passende Init-RAM-Disk zu erzeugen.

Das fertige Paket liegt anschließend in "/usr/src" und kann mit dem Befehl "dpkg -i [Paketname].deb" installiert werden:

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
An dieser Stelle wird automatisch "depmod" aufgerufen, was die Modulliste aktualisiert. Ferner wird die Initial Ramdisk automatisch erstellt ("mkinitramfs-kpkg") und der Bootloader Grub2 wird aktualisiert. Beim nächsten reboot, sollte dein System automatisch mit dem neuen Kernel starten.

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Viel Spaß!
 
Zuletzt bearbeitet:
Zurück
Oben