Die genauen Schritte kann ich dir nicht 100% nennen, ich versuche aber erstmal zu erklären, wie es im Prinzip funktioniert. Die einzelnen Schritte ohne Hintergrundwissen bringen nämlich auch nichts.
Im Folgenden richte ich mich nicht nur an telefonmann295, sondern allgemein an alle. Deshalb beschränke ich mich auch nicht unbedingt nur auf SuSE 9.3.
Das Problem ist, dass man den Kernel neu kompilieren muss. Der Kernel ist das "Herz" von Linux, d.h. wenn der nicht geht, dann startet dein Linux nicht mehr. Deshalb installiert man zum Standard-Kernel noch einen zweiten - den eigenen - hinzu. Wenn irgendetwas nicht geht, kann man immer den Standardkernel nehmen und alles läuft. Im schlimmsten Fall kann man noch z.B. mit einer Knoppix-CD auf das System zugreifen.
Der Kernel selbst wird kompiliert, d.h. von einem Programm in Maschinencode übersetzt. Das Kompilieren selbst ist die erste Hürde, dafür muss man den Kernel nämlich erst konfigurieren. Nur so "weiß" das Tool "make", was es einbauen soll. Der Kernel selbst wird dann in eine Datei geschrieben. Damit man den Kernel benutzen kann, muss diese Datei im Bootmanager (also meist Grub) eingetragen werden.
root-Rechte
Am einfachsten:
- Code: Alles auswählen
su
Dann habt ihr im folgenden immer alle benötigten Rechte (auch um das System kaputtzumachen!).
Ich weiß, dass man die Kernel-Kompilierung auch ohne root-Rechte machen könnte und "sudo" immer vorgestellt werden kann, aber so gehts auf jeden Fall.
Pakete, die man zuvor installiert haben sollte:
- Kernel-Header (geht glaube ich auch ohne, aber schadet nicht)
- Kernel-Source (enthält die speedstep-centrino.c)
- make (z.B. bei SuSE 9.0 Personal standardmäßig nicht dabei)
- ncurses-devel (für Konfiguration des neuen Kernels mit menuconfig)
Kernelquellen "lokalisieren", ggf. entpackenDer Kernel liegt nun in /usr/src/ . Ob der unter SuSE automatisch entpackt wird, weiß ich nicht. Ggf. also entpacken, so dass er ein eigenes Verzeichnis hat, z.B. /usr/src/linux-2.6.xx (xx ist die genaue Version des Kernels).
VorbereitungenNun wollen wir eine "Verknüpfung" /usr/src/linux anlegen, die auf den neuen Kernel-Pfad zeigt.
Nach /usr/src wechseln:
- Code: Alles auswählen
cd /usr/src
Alte entfernen:
- Code: Alles auswählen
rm -rf linux
Neue anlegen:
- Code: Alles auswählen
ln -s linux-2.6.xx linux
Wechsel in das Verzeichnis:
- Code: Alles auswählen
cd /usr/src/linux
speedstep-centrino.c anpassenIch gehe jetzt davon aus, dass die speedstep-centrino.c schon mit den neuen Spannungen angepasst wurde.
Ansonsten siehe hier:
topic,1059,15,-rmclock-mit-suse-linux.html#9427Kernel konfigurierenIn der Datei ".config" wird der Kernel konfiguriert. Normal exisitiert diese noch nicht. Man übernimmt am besten die alten Einstellungen:
- Code: Alles auswählen
make oldconfig
Nun muss mit
- Code: Alles auswählen
make menuconfig
der Kernel so angepasst werden, dass automatisch folgende Module fest einkompiliert werden (also * statt M):
- Unterstützung für reiser-Dateisystem (oft bei SuSE standardmäßig vorhanden)
- Treiber für IDE-Controller
- CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI deaktivieren
- andere Hardware
- ggf. noch mehr? weiß nicht mehr...
Wenn hier etwas falsch ist, dann startet der Kernel später nicht oder hat z.B. keine DMA-Unterstützung für die Festplatte.
Einfacher:In einem anderen Thread habe ich meine Kernelkonfiguration gepostet:
topic,2918,-M1420-dauerhaft-auf-100%25-CPU-mit-SETI%40home.html#20201Die sollte beim M1405, M1420, M1425, M7405, M7425 gehen...
Wie kompiliert man den Kernel?Das ist jetzt der Punkt, an dem ich nicht genau weiß, wie man es unter SuSE am einfachsten macht. Vielleicht geht es also einfacher...
Das Tool "make-kpkg" (wahrscheinlich unter SuSE nicht vorhanden, bei Debian-basierenden Distros aber zu empfehlen):
Unter Ubuntu gibt es das Tool make-kpkg, das geht echt super. Da kann man dem Kernel einen eigenen Zusatz geben und so ganz einfach sicherstellen, dass der Standard-Kernel überschrieben wird.
Mit make-kpkg geht es so:
- Code: Alles auswählen
make-kpkg --append-to-version=rev1 --revision=rev1 binary
Wenn man --initrd anhängt, wird noch eine Datei erstellt, die verhindert, dass man z.B. den IDE-Controller fest einbauen muss. Genaueres: Google.
Das "rev1" ist der eigene Name. make-kpkg erstellt ein eigenes Paket, das dann bequem installiert werden kann:
- Code: Alles auswählen
dpkg -i ../kernel-image-2.6.xx-rev1.deb
(Oder so ähnlich heißt die Datei zumindest.)
Der Bootloader Grub wird mit dieser Variante automatisch um einen Eintrag ergänzt.
Ohne "make-kpkg" (sollte immer funktionieren):
Da muss man einige Dinge von Hand machen, die in oberer Variante von alleine laufen.
Kernel kompilieren:
- Code: Alles auswählen
make && make modules_install
Dann wurde der Kernel erstellt und man kopiert ihn an den "neuen" richtigen Ort:
- Code: Alles auswählen
cp /usr/src/linux/arch/i386/boot/bzImage /boot/linux-2.6.xx-rev1
Nun muss man ihn im Bootloader Grub einfügen. Dazu bearbeitet man die Datei /boot/grub/menu.lst, z.B. mit nano:
- Code: Alles auswählen
nano /boot/grub/menu.lst
Dort gibt es Zeilen, die in etwa so aussehen:
- Code: Alles auswählen
title linux
kernel (hd0,2)/boot/vmlinuz root=/dev/hda3 vga=788
initrd (hd0,2)/boot/initrd
Da fügt man den eigenen Kernel hinten einfach an, allerdings ohne initrd, da wir die nicht benötigen:
- Code: Alles auswählen
title Linux - Eigener Kernel
kernel (hd0,2)/boot/linux-2.6.xx-rev1 root=/dev/hda3 vga=788
Wie man ohne make-kpkg eine Revision für den Kernel angeben kann weiß ich nicht, ich habe es noch nie benötigt.
Gruß
Aaron
Quellen:
- Meine Erinnerungen
-
http://www.linuxeinsteiger.info/anleitu ... /sys15.php
-
http://www.pc-erfahrung.de/Index.html?l ... ieren.html