linuxforen.de -- User helfen Usern  

Zurück   linuxforen.de -- User helfen Usern > FAQ Tips > Hier Suchen und Finden, Links, Tutorials
Registrieren Hilfe Benutzerliste Kalender

Hier Suchen und Finden, Links, Tutorials Hier findet Ihr viele gut vorbereitete Lösungen

Antwort
Themen-Optionen Bewertung: Bewertung: 3 Stimmen, 5,00 durchschnittlich. Ansicht
Alt 13.12.01, 04:58   #1
mightymike99
Premium Mitglied

Benutzerbild von mightymike99

Registriert seit: Aug 1999
Beiträge: 374
Kernel compilieren

Vorbemerkung: Diese HowTo gehörte zu den ersten auf Linuxforen.de und war noch im ersten HowTo Bereich. mightymike99 ist der Poster, jedoch nicht der Author. Geschrieben wurde diese HowTo von: Hunter

Diese FAQ soll Anfängern erklären wie sie sicher (!!) einen neuen Kernel
kompilieren können. Zur Konfiguration des Kernels kann ich nur ein paar Tipps
geben, aber keine Anleitung, da das viel zu viel wäre. Hierzu muss man seinen
Rechner selbst kennen und die Hilfetexte lesen.

0. Grundlagen

Der Kernel ist das Bindeglied zwischen Programmen und der Hardware. Hier können
viele Hardware Komponenten festgelegt werden wie z.B. Unterstützung für IDE und
SCSI, Soundkarten, USB, auch Support für Filesysteme und vieles mehr. Deswegen
ist es wichtig das man sich mit seinem System auskennt, da man sonst nicht weiß
was man überhaupt braucht. Wer dies also nicht weiß sollte es sein lassen, bis
er sich damit auskennt.

Des weiteren ist es wichtig zu wissen das man drei Einstellmöglichkeiten hat.
Man kann eine Option entweder gar nicht installieren (weil man sie nicht
bracht), in den Kernel einbinden (weil man sie immer braucht) oder als Modul
installieren (weil man sie manchmal braucht).

Manche Distributoren raten davon ab einen eigenen Kernel zu kompilieren. Daher
sollte man zunächst im Forum nachfragen ob und wie man trotzdem einen neuen
Kernel kompilieren kann.

1. Kernelquellen

Die Quellen für den Kernel bekommen Sie aufwww.kernel.orgDort können Sie
verschiedene Versionen vom FTP Server runter laden. Am besten sie entscheiden
sich für den neusten stable Kernel. Von unstable sollten Sie als normaler User
lieber die Finger lassen.

Die Quellen des Kernels sind als tar.gz über 20 MB groß. Entpackt sind das über
100 MB. Soviel Platz müssten Sie also mindestens haben, was bei den heutigen
Platten aber kein Problem sein sollte.

Schauen Sie sich vor dem entpacken mal ihr Verzeichnis /usr/src an. Dort finden
Sie die Quellen Ihres aktuellen Kernels. Oft sind die Distributoren so schlau
gewesen und haben die Kernel Sourcen mit der Versionsnummer versehen, also z.B.
linux-2.4.3 und haben dann einen Link "linux" zu diesem Verzeichnis erstellt.
Sie sollten also /usr/src/linux-"Version" haben und einen Link mit Namen linux
darauf. Sollte es diesen Link nicht geben und nur das Verzeichnis linux da sein
wo sich die alten Quellen befinden, dann benennen Sie das Verzeichnis linux zu
linux-"Version" um. Sollte es nur den Link geben, dann löschen Sie diesen. Es
darf also nur linux-"Version" mit den alten Quellen übrig bleiben.

Anmerkung: Die Konsolen Befehle die dazu notwendig sind, sollten sie selbst
kennen. Falls nicht, verändern sie die Verzeichnisse unter X z.B. mit "gmc"
oder "fr". Wenn Sie kein X haben oder wollen, können Sie auch "mc" benutzen.

Erst jetzt dürfen Sie die Quellen nach /usr/src/ entpacken. Es sollte dann
automatisch im linux-"neue Version" Verzeichnis liegen. Ist dem so, dann
erstellen Sie einen neuen Link "linux" auf dieses neue Verzeichnis. Andernfalls
müssen sie erst "linux" umbenennen nach linux-"neue Version" und dann den Link
erstellen.

Anmerkung: Entpacken können Sie den Kernel mit dem "tar" Befehl oder
Hilfsprogrammen wie "ark" oder "gnozip" benutzen.

2. Sauber machen

- melden Sie sich als Root an
- wenn sie unter X arbeiten öffnen Sie eine Konsole (xterm etc.)
- wechseln Sie in das Verzeichnis mit den Quellen

cd /usr/src/linux

- geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel
anfangen:

make clean && make mrproper

Anmerkung: Damit stellen Sie sicher das keine alten Daten übrig bleiben, die
beim kompilieren eines neuen Kernels störend sein könnten. Aber Vorsicht: Die
Datei .config die Ihre bis dato gemachten Einstellungen enthält wird hiermit
gelöscht. Am besten vorher sichern, wie im nächsten Punkt beschrieben, wenn
bereits wichtige Änderungen gemacht wurden.
Die Konfigurationsdatei .config ist mit neueren Kernelquellen kompatibel, also
ggf. eine eigene .config über die neue drüber kopieren und die alten
Einstellungen bleiben. Nächster Schritt ist aber unbedingt notwendig, da u. a.
die Datei version.h erstellt wird ohne die sich nix kompiliert.

3. Konfiguration

Anmerkung: Sie sollten noch immer in /usr/src/linux sein
Um nun den neuen Kernel zu konfigurieren haben Sie drei Möglichkeiten:

make config

Ihnen werden eine Menge Fragen gestellt die Sie mit y, n, m oder ? beantworten
können. y bedeutet fest im Kernel, n bedeutet nicht benutzen, m bedeutet als
Modul kompilieren und ? bietet Ihnen einen Hilfetext. Der Vorteil hier ist das
Sie sich zwangsläufig mit jeder Einstellmöglichkeit befassen müssen und mit ?
einiges darüber erfahren. Der große Nachteil ist das Sie nicht wieder zurück
können, wenn Sie etwas anders einstellen wollen.

Anmerkung: Für make config brauchen Sie X nicht zu starten.

make xconfig

Hier haben Sie alle Einstellmöglichkeiten grafisch dargestellt. Sie können
jederzeit Einstellungen wieder verändern. Zudem können Sie mit der Maus
arbeiten. Der Nachteil ist das man schnell mit den ganzen Fenstern
durcheinander kommen kann.

Anmerkung: Für make xconfig müssen Sie X starten.

make menuconfig

Wie schon bei xconfig haben sie eine gewisse Grafik und Sie können nach
belieben einstellen wie Sie wollen und können jederzeit wieder etwas zurück
stellen. Die Maus funktioniert hier nicht. Stattdessen arbeitet man hier mit
den Pfeiltasten.

Anmerkung: Für make menuconfig müssen Sie X normalerweise nicht starten. Der
Kernel sollte in der Lage sein auch ohne X die Farben und Menüs darzustellen.
Wenn er also einen Fehler diesbezüglich meldet, benutzen Sie es in X unter z.B.
xterm.

Jedenfalls kommt nun der Teil bei dem ich Ihnen auch nicht viel sagen kann.
Egal welches der Werkzeuge Sie benutzen, Sie müssen selbst wissen was Sie nun
einstellen müssen. Ein paar Tipps kann ich Ihnen aber geben :

* Wenn Sie X benutzen können Sie einfach mehrere xterm öffnen und so die
neue und alte Konfiguration gleichzeitig ansehen:

o Wechseln sie nach /boot und suchen sie den config File der alten
Kernel Version, z.B. config-2.4.3-20 und kopieren Sie ihn in das
Verzeichnis Ihrer alten (!!) Kernel Quellen, also z.B. /usr/src/
linux-2.4.3. Wechseln Sie dann in dieses Verzeichnis und rufen Sie
dort "make xconfig" oder besser "make menuconfig" auf. Wählen sie
dann den Punkt "Load ..." um Ihre alte Konfiguration zu laden und
geben Sie hier den eben kopierten Configfile an.
Anmerkung: Es empfiehlt sich dann auch ihn eventuell umzubenennen,
damit Sie ihn in Zukunft einfacher laden können. Also z.B. von
config-2.4.3-20 nach config243.

o Sie können nun die Konfiguration Ihres aktuellen Kernels sehen und
ihn teilweise (!) als Vergleich für den neuen Kernel benutzen.
Einfach alles zu übernehmen wird jedoch nicht funktionieren und
macht zudem auch keinen Sinn. Denn z.B. für ihre Netzwerkkarte
brauchen sie nur dieses eine Modul und nicht alle. Und wenn Sie
keine Radio oder TV Karte oder kein USB haben oder wollen, dann
braucht Ihr neuer Kernel dies alles auch nicht.

* Schauen Sie sich an welche Hardware Sie haben und überprüfen Sie Ihre
aktuelle Konfiguration (modules.conf, lsmod usw.) welche Module dort
geladen werden. Was Sie nicht haben (oder wollen), das brauchen Sie nicht
auszuwählen.

* Wichtig sind vor allem die Filesysteme: ext2, ReiserFS, MS Dos, Vfat, /
dev/pts sollten auf jeden Fall drin sein, sonst können Sie nachher nicht
richtig booten. Möglicherweise sind auch noch weitere nötig. Vergleichen
Sie hierzu mit ihrer alten Konfiguration und übernehmen Sie alles von dem
Sie nicht genau wissen das Sie es nicht brauchen.

* Einige Auswahlmöglichkeiten können Sie nur aktivieren wenn Sie vorher
einen andern Menüpunkt ausgewählt haben. Meist ist dies der Support für
irgendetwas. Sie können z.B. keinen SCSI Low Level Treiber installieren
wenn Sie keinen SCSI Support aktiviert haben.

* Wenn in Ihrem alten Kernel etwas mit einem Modul kompiliert wurde, dann
ist es ratsam dies auch im neuen Kernel zu tun.
Anmerkung: Der Grund ist einfach, das die Konfiguration dann dieses Modul
mit entsprechenden Optionen lädt. Packen Sie es nun in den Kernel, dann
läuft es zwar grundsätzlich, die Optionen sind eventuell aber trotzdem
notwendig und werden dann nicht mehr gesetzt. Wenn Sie wissen was Sie
ändern müssen, damit es funktioniert, dann können Sie das
selbstverständlich machen wie Sie es für Richtig halten.

* Wenn Sie alles konfiguriert haben, dann speichern Sie ihre Einstellungen
auf jeden Fall unter einem anderen Namen noch mal ab. Bei menuconfig und
xconfig kann man das auswählen. Wenn Sie config benutzt haben, kopieren
Sie sich den File .config oder laden Sie diesen noch mal mit menuconfig
und speichern damit ab. So können Sie dann auch gleich noch mal
eventuelle Fehler während make config korrigieren. Am besten speichern
Sie es unter dem Namen config247-1 oder so ähnlich ab. So können Sie
nachher wieder darauf zurück greifen

* Beim beenden von menuconfig werden Sie gefragt ob gespeichert werden
soll. Hier wählen sie natürlich "Ja". Dadurch wird die Datei .config
erstellt mit der kompiliert wird. Wenn sie "Nein" wählen und weiter
machen, dann wird nur eine Standard Konfiguration benutzt die vermutlich
nicht lauffähig ist. Bei xconfig können Sie einfach "save and exit"
wählen, nachdem Sie vorher wie gesagt noch zusätzlich unter anderem Namen
gespeichert haben

4. Kompilieren und installieren

- Nachdem Sie konfiguriert haben ist der Rest nun einfach:
make dep && make bzImage && make modules && make modules_install
Damit werden alle Abhängigkeiten erfüllt, der Kernel kompiliert, die Module
kompiliert und dann die Module installiert. Keine Angst, die Module werden in
ein Extra Verzeichnis gepackt, so das Ihre alten nicht verloren gehen.

1._Anmerkung: Eventuell können Fehlermeldungen auftreten. Das kann mit der
Version von gcc (ihrem Compiler) zusammenhängen. Geben Sie dann mal folgendes
ein :

gcc --version

Am besten sind die 2.95-2 Versionen. Einige 2.96 gehen auch noch. Nur die
ersten 3.0 Versionen und ein paar Versionen davor könnten Ärger machen.
Versuchen Sie dann mal eine andere Version und fragen Sie im Forum mal nach
welche Versionen was taugen und welche nicht.

2._Anmerkung: Eventuell müssen Sie auch die neueren "modutils" installieren.
Wichtig ist das Sie zwar die neuste Version nehmen sollten, die Versionsnummer
aber nicht unbedingt mit der Kernelversion übereinstimmen muss. Sie können
diese z.B. auf http://www.rpmfind.net/ oder http://www.suse.de/ finden.

* kopieren Sie nun den neuen Kernel nach /boot. Sie finden ihn unter /usr/
src/linux/arch/i386/boot/ mit dem Namen bzImage. Benennen Sie ihn am
besten dann auch gleich um zu z.B. vmlinuz-2.4.7-1. Die 1 am Ende soll
Ihnen helfen Ihre später vielleicht zahlreichen Versionen auseinander
halten zu können.

Also z.B.: cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-1

- Des weiteren müssen Sie noch die Datei System.map von /usr/src/linux/ nach /
boot kopieren. In boot gibt es schon eine System.map die meist ein Link auf
z.B. System.map-2.4.3 ist. Kopieren Sie die Datei dann entsprechend mit dem
Namen (z.B.) System.map-2.4.7 und erstellen / überschreiben Sie dann halt den
Link System.map zu dieser neuen Datei

Also z.B.: cp /usr/src/linux/System.map /boot/System.map-2.4.7
rm /boot/System.map (den Link entfernen)
ln -s /boot/System.map-2.4.7 /boot/System.map (neuen Link erstellen)

Der neue Kernel und die neuen Module (siehe /lib/modules/) sind nun kompiliert
und einsatzbereit. Der alte Kernel funktioniert noch genauso wie vorher.
Zumindest dann wenn Sie der Anleitung gefolgt sind und nichts überschrieben
oder gelöscht haben, sondern nur Links geändert haben und Dateien und
Verzeichnisse, nur mit Versionsnummern behaftet, umbenannt haben.

5. Einrichten des neuen Kernels

Der nächste Schritt ist nun den Kernel in Lilo einzubinden um ihn nach Bedarf
booten zu können. Hier dürfen Sie auf keinen Fall die Einstellungen zum booten
des alten Kernels ändern, denn der sollte für alle Zeiten im Notfall bootbar
sein.

- Wenn ihre Distribution ein eigenes Programm hat mit der Sie Lilo
konfigurieren können, so können Sie dies benutzen und als zu bootenden Kernel
geben Sie dann den neuen an. Bei Suse und Mandrake besteht diese Möglichkeit
definitiv. Achten Sie auch darauf das Sie einen passenden Namen vergeben, z.B.
linux-2.4.7.

- Besser ist aber der Weg, die /etc/lilo.conf manuell zu bearbeiten. Die
Einstellungen vom aktuellen Kernel können Sie kopieren und dann entsprechend
ändern. Sollte ein Eintrag "vga" vorhanden sein, so löschen Sie ihn
Sicherheitshalber bei den neuen Einstellungen, da sonst Probleme beim booten
auftauchen können.

* Anschließend führen Sie noch in der Konsole /sbin/lilo aus. Wenn das ohne
Fehler funktioniert ist der neue Kernel einsatzbereit und kann gebootet
werden.
Anmerkung: Wenn sie nicht lilo sondern einen anderen Bootmanager
verwenden müssen Sie es im Prinzip genauso machen.

Der Grund, warum man das Kommando "lilo" nach dem neukompilieren der
Kernels auch dann ausfüren muß, wenn sich der Pfad des Kernels nicht
ändert, ist folgender: Lilo findet beim Starten von Linux den Kernel
nicht durch den Pfad, welcher in /etc/lilo.conf steht, sondern anhand
einer Tabelle (/boot/map), in der sämtliche Sektoren aufgelistet sind,
auf denen sich die Kerneldatei befindet. Diese Tabelle stimmt nach dem
Neukompilieren nicht mehr, auch wenn der Pfad gleichgeblieben ist. Durch
das Ausführen von "lilo" wird eine aktualisierte Version der map-Datei
erstellt, und Lilo kann den Kernel wieder starten.

6. vor dem Reboot

Bevor Sie nun den Reboot wagen um Ihren neuen Kernel zu testen sollten Sie noch
etwas bedenken. Wenn Sie mit X booten und eine Nvidia Karte verwenden, dann
haben Sie wahrscheinlich die Treiber von Nvidia installiert. Diese bestehen aus
einem GLX Treiber und einem Kernel Modul (!). Wenn Sie nun einfach neu booten,
dann fehlt dieses natürlich bei den Modulen des neuen Kernels. Stellen Sie
deshalb sicher das nach dem Reboot erst mal NICHT KDM, GDM oder XDM gestartet
wird. Des weiteren sollten Sie sich bereits den neuen Treiber von Nvidia als
Quellen runtergeladen haben. Nach dem Neustart müssen Sie sich als Root
einloggen und die Treiber für den Kernel neu kompilieren und installieren. Die
alten sollten sie vorher deinstallieren. Es gibt unter in der Linuxforen FAQ-Section
eine Anleitung dazu. Es reicht im Übrigen nicht die vorher mal kompilierten RPM
Pakete zu verwenden, da diese nicht zu dem neuen Kernel passen.
Es sei denn es war die selbe Version des Kernels für den Sie das gemacht haben.
Anmerkung: Dieses Problem besteht nun auch bei anderen Programmen und Treibern.
Wenn Sie z.B. eine Soundblaster Live Karte haben und die Treiber von Creative
selbst kompiliert haben, dann müssen Sie das für den neuen Kernel alles wieder
neu machen. Das reicht aber auch bis nach dem Reboot. Die Grafikkarte ist da
viel wichtiger, da Sie ohne Sound leben können, aber ohne Grafikkarte bekommen
Sie X nicht gestartet und das kann Ihnen unnötig Probleme bereiten.

7. Reboot

Wenn alle Einstellungen wie beschrieben vorgenommen wurden, können Sie den
neuen Kernel booten. Achten Sie darauf was beim booten für Fehlermeldungen
angezeigt werden und merken Sie sich was z.B. für Module nicht geladen werden
können und welche Filesysteme nicht funktionieren weil der Kernel dafür keinen
Support enthält.
Sollte der Kernel aber ordnungsgemäß hochfahren, dann können Sie von der
Konsole aus versuchen einmal X zu starten. Sollte auch das funktionieren,
testen Sie Sound, TV Karte, Internet, Netzwerk, Samba usw. durch ob alles
funktioniert.

8. Fehlerkorrektur

"Nobody is perfekt" und auch einem erfahrenen Linux User kann es passieren das
etwas im neuen Kernel nicht wie gewünscht funktioniert. Führen Sie dann einen
Reboot durch. Wenn möglich aber kein Reset, da sonst die Festplatte beim
nächsten Start überprüft werden muss. Starten Sie dann Ihren alten Kernel und
fangen Sie wieder bei Punkt 2 an. Hier müssen Sie nun nicht wieder alles neu
machen. Nach Punkt 2 ist zwar der .config File verschwunden, aber dafür haben
Sie ja extra gespeichert. Mit xconfig oder menuconfig (config macht keinen
Sinn) können Sie dann diesen File laden und Ihre aktuelle Konfiguration
überarbeiten. Danach wieder kompilieren und alles einrichten.
Anmerkung: Selbst wenn Sie den alten selbst kompilierten Kernel überschreiben,
sollten Sie dennoch /sbin/lilo ausführen. Andernfalls kann es aus mir
schleierhaften Gründen zu Problemen kommen.

9. Sonstiges

* Wenn Ihr neuer Kernel perfekt funktioniert, können Sie ihn zum Standard
Kernel machen. Ihr alter sollte aber dennoch weiterhin in Lilo auswählbar
bleiben.

* Der Punkt Konfiguration ist sicherlich der schwierigste. Sie können aber
im Forum dazu Fragen stellen und bekommen sie mit Sicherheit auch
beantwortet.

* Bleiben Sie ordentlich und speichern Sie jede Version Ihrer Konfiguration
ab. Löschen Sie ältere Config Files erst wenn der neue Kernel einwandfrei
funktioniert. Kopieren Sie dann den aktuellen mit entsprechendem Namen
nach /boot, damit Sie auch später noch die Übersicht behalten.

* Wenn eine neue Version des Kernels als stabil freigegeben wird, reicht es
wenn Sie einen Patch runter laden und in ihr Quellenverzeichnis kopieren.
Also nach /usr/src/linux kopieren und in dieses Verzeichnis wechseln.
Danach folgendes eingeben:

scripts/patch-kernel

Anmerkung: Nun werden ihre Quellen auf den neusten Stand gebracht. Beachten Sie
aber das Sie die Reihenfolge der Patches beibehalten. Sie können mit Patch
2.4.8 nicht den Kernel 2.4.6 patchen wenn Sie nicht auch den Patch 2.4.7 haben.
Das Script muss im übrigen nur einmal ausgeführt werden. Wenn alle Patches
vorhanden sind werden alle automatisch ausgeführt.

* Der Ordnung halber sollten Sie dann beim Quellverzeichnis die
Versionsnummer entsprechend ändern. Den Link "linux" müssen Sie dann
natürlich auch wieder ändern, aber wie gesagt, bleiben Sie ordentlich,
damit Ihnen keine vielleicht folgenschweren Fehler passieren.

* Sie können ihre aktuelle Konfiguration dann im neuen Kernel wieder
verwenden und dann einen neuen Kernel mit der höheren Version kompilieren
und einrichten. Wenn Sie dann nur noch den ganz neuen benutzen können Sie
in /lib/modules ihre älteren Module löschen, da sie nutzlos sind wenn
kein Kernel mehr dafür da ist. Achten Sie aber darauf das Sie die Module
ihres 1. Kernels (von der Distribution) nicht löschen.

10. Schlussbemerkungen

Jetzt noch ein paar Bemerkungen von mir. Ich behaupte nicht das es einfach ist
einen neuen Kernel zu kompilieren bzw. zu konfigurieren. Ich selbst habe eine
Woche gebraucht in der ich jeden Tag ein paar Stunden daran gearbeitet habe.
Deshalb habe ich nun diese FAQ geschrieben, damit andere Leute einen leichteren
Einstieg finden.

Es gibt außerdem noch weitere Befehle und Möglichkeiten. Beispielsweise kann
man in den Kernel noch zusätzliche Funktionen einbauen, wie z.B. automatisches
mounten und unmounten des CD, je nach Bedarf. da ich mich dabei noch nicht
auskenne habe ich dazu auch nichts geschrieben. Sobald ich Ahnung davon habe
wird dieser Text überarbeitet.

Zusätzlich können die Leser dieser FAQ sich im Forum dazu äußern und Vorschläge
machen was noch rein sollte oder was geändert werden müsste.
Angehängte Dateien
Dateityp: zip kernel.zip (41,1 KB, 1409x aufgerufen)

Geändert von hunter (25.05.03 um 20:09 Uhr).
mightymike99 ist offline   Mit Zitat antworten
Alt 22.05.02, 08:05   #2
xstevex22
**** u if u don't like it

Benutzerbild von xstevex22

Registriert seit: Oct 2001
Ort: München
Beiträge: 816
Anmerkung

Hi,
man sollte darauf achten, auch die aktuellen, benötigten Pakete eingespielt zu haben. Die Auflistung der benötigten Pakete findet sich in der Datei /usr/src/linux/Documentation/Changes. Diese Punkte unbedingt beachten!
__________________
Linux Anleitungen und Berichte: http://www.stevesweb.de/
xstevex22 ist offline   Mit Zitat antworten
Alt 24.02.03, 17:13   #3
SeeksTheMoon
Premium Mitglied

Benutzerbild von SeeksTheMoon

Registriert seit: Feb 2002
Beiträge: 1.670
Ich habe auch noch zwei Ergänzungen:

1) Framebuffer-Support
Wer beim booten seines neuen Kernels nur einen schwarzen Bildschirm sieht, der kann dem Kernel beim booten als Parameter folgende Option mitgeben:
vga=normal

Diesen Eintrag kann man auch in der lilo.conf vornehmen. Wenn dort steht vga=(dreistellige Zahl), dann soll beim Booten eine andere Auflösung/Farbtiefe benutzt werden als im Standardmodus. In diesem Fall kann man auch Bilder anzeigen, wie es bei vielen Distributionen der Fall ist. Dies wird mit dem sogenannten Framebuffer erreicht.
Man schaltet ihn wie folgt ein:
Man muss in den "Code Maturity Level Options" die Option "Prompt for development and/or incomplete code/drivers" aktivieren. Dadurch wird in der Sektion "Console drivers" der Framebuffer Support aktiv.
Dort aktiviert man dann Framebuffer-Support für seine spezielle Grafikkarte, bzw. für "VESA VGA Graphics Console"

2) ACPI-Support
Bei vielen Leuten schaltet sich der Rechner mit dem neuen Kernel nicht (ganz) aus oder der Rechner ging noch nie ganz aus, obwohl er aus ACPI-kompatibler Hardware zusammengebaut ist.
Der ACPI-Support im Standardkernel ist nicht der Knaller und man muss etwas nachhelfen:
Auf http://sourceforge.net/projects/acpi/ besorgt man sich einen Kernel-Patch für ACPI. In den SuSE 8.1 Kernelsourcen ist er schon integriert, aber wenn wir diese nicht benutzen können/wollen, dann müssen wir die Standardsourcen halt patchen.
Nachdem man sich also den Patch für seine Kernelversion gesaugt hat, installiert man ihn wie folgt:
a) kernelsourcen und patch entpacken
b) wechsel ins Verzeichnis mit den entpackten Kernelquellen, i.d.R. /usr/src/linux
c) patch -Np1 -i woMeinPatchist/nameDesPatches, z.B. patch -Np1 -i ../acpi-20021212-2.4.20.diff

Alternativ bietet sich auch der Alan Cox-Patch an, in dem der acpi-patch ebenfalls enthalten ist (und viele andere mehr). Den Gibts auf http://www.kernel.org,/ wo man ihn als "ac-Patch" runterladen kann.

Dann geht man ins config-Menü des Kernels (make x/menu/config, s.o.) und dort ins "General-Setup".
Dort deaktiviert man alles, was mit Powermanagement zu tun hat (außer dem Punkt "Enable Powermanagement Support"), denn es handelt sich dabei um APM, das älter ist als ACPI und nicht gleichzeitig mit ACPI aktiv sein kann (außerdem hat es eh nicht auf unserem Rechner geklappt, denn sonst würden wir ja kein ACPI installieren). Wird APM und ACPI gleichzeitig gefunden, verwendet der Kernel eh ACPI und wir haben ein paar kilobytes umsonst einkompiliert.
Dafür gibt es im "General-Setup" eine neue Option, nämlich "ACPI Support", welchen wir auch gleich aktivieren. Bei Bedarf können wir noch die anderen Otpionen einschalten oder als Modul hinzufügen.

Das aktivieren im Kernel reicht aber noch nicht aus, damit ACPI klappt. Wir brauchen einen Daemon, der ACPI-Ereignisse überwacht, den ACPID.
Man lädt ihn einfach bei Sourceforge herunter:
http://sourceforge.net/projects/acpid/

Er ist sehr einfach installiert, einfach entpacken und
make && make install
eingeben.
Ein Daemon muss natürlich gestartet werden, bevor er arbeiten kann und dieser sollte so früh wie möglich gestartet werden und in allen Runleveln verfügbar sein.

Erstellt also folgendes Script in /etc/rcd/init.d (oder wo eure Distribution die Runlevel-Scripte hat):

Code:
#!/bin/sh
#
# acpid
#
### BEGIN INIT INFO
# Provides:          
# Required-Start:    
# Required-Stop:     
# Default-Start:     1 2 3 5
# Default-Stop:      0 6
# Short-Description: Start acpi daemon
# Description:       Stop acpi daemon
### END INIT INFO

source /etc/rc.d/init.d/functions

START=/usr/sbin/acpid

# The echo return value for success
case "$1" in
    start)
        echo "Starte acpi-Daemon"
        $START  > /dev/null 2>&1
    evaluate_retval
        ;;

    status)
    statusproc /usr/sbin/acpid
        ;;

    *)
        echo "Benutzung: acpid {start|status}"
        exit 1
esac
evaluate_retval und statusproc sind Funktionen aus einem Script (bei mir /etc/rc.d/init.d/functions, das am Anfang eingebunden wird), das dafür sorgt, das man beim booten die [OK] oder [Failure] Meldungen bekommt.
Dies wird Distributionsspezifisch gehandelt und kann auch aus dem Script rausgelassen (oder angepasst) werden. Das Script hat bei mir über 260 Zeilen, weshalb ich es hier nicht poste (außer jemand will es haben).

Jetzt müssen wir noch dafür sorgen, dass es in jedem runlevel ausgeführt wird, dazu erstellen wir Links zu diesem Script (Pfade ggf. anpassen):
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc1.d/S01acpid
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc2.d/S01acpid
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc3.d/S01acpid
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc4.d/S01acpid
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc5.d/S01acpid
ln -s /etc/rc.d/init.d/acpid /etc/rcd/rc6.d/S01acpid

Wenn wir jetzt den Daemon und unseren neuen Kernel gestartet haben, dann wird ein "halt" oder "poweroff" den Rechner komplett ausschalten.

Was man mit dem acpid noch alles anstellen kann, verrät seine manpage und seine Readme-Datei.

Geändert von SeeksTheMoon (26.06.03 um 13:37 Uhr).
SeeksTheMoon ist offline   Mit Zitat antworten
Alt 04.08.03, 14:35   #4
SeeksTheMoon
Premium Mitglied

Benutzerbild von SeeksTheMoon

Registriert seit: Feb 2002
Beiträge: 1.670
mehrere Kernel parallel

es wird oben zwar angedeutet, aber nicht ganz explizit erwähnt:

Wie richtet man mehrere Kernel parallel ein?


man muss dafür sorgen, dass in /boot alle Kernelimages mit ihren System.maps liegen. Mehr zur Namensgebung stand oben. Die System.map sollte immer das gleiche Postfix bekommen wie das zugehörige Kernelimage, so dass sie eindeutig zugeordnet werden können.

Sagen wir mal, ich habe Kernel 2.4.21-ac3 auf meinem System und will nun 2.4.22-pre10-ac1 testen. Vorher hatte ich nur einen Kernel auf dem System: Das Image hieß bzImage und die System.map war ein Link nach /usr/src/linux/System.map
Diese Konfiguration verträgt sich nicht mit unserem vorhaben, mehrere Kernel parallel zu installieren.
Die Datei bzImage wird also in vmlinuz-2.4.21-ac3 umbenannt und der System.map-Link wird durch die echte System.map ersetzt, die in System.map-2.4.21-ac3 umbenannt wird.

Wenn der neue Kernel fertig ist, kommen seine Imagedatei und seine System.map dazu. Die benenne ich nun vmlinuz-2.4.22-pre10-ac1 und System.map-2.4.22-pre10-ac1

wir haben also in /boot:
vmlinuz-2.4.22-pre10-ac1
System.map-2.4.22-pre10-ac1
vmlinuz-2.4.21-ac3
System.map-2.4.21-ac3

neben ein paar anderen Dateien.

So kommen sie auch in die lilo.conf rein. Achtet bei der Dateinamenvergabe und den lilo-Einträgen auf Tippfehler. Schnell ist ein . zu einem - geworden!
Zu beachten ist auch: Die Label-Einträge in der lilo.conf dürfen nicht zu lang sein!
lilo -v meldet das aber auch (beiläufig), falls man ein zu großes Label geschrieben hat.
Ich weiß nicht wovon es abhängig ist und was passiert wenn man die Länge überschreitet, aber bei mir sind es 15 Zeichen.
Natürlich können wir das Label benennen wie wir wollen; der Name muss nicht mit dem Kernelimage identisch sein.

image = /boot/vmlinuz-2.4.22-pre10-ac1
label = 2.4.22pre10-ac1
root = /dev/hda2

image = /boot/vmlinuz-2.4.21-ac3
label = 2.4.21-ac3
root = /dev/hda2

Ob das jetzt 2.0, 2.2, 2.4, 2.6er Kernel oder 3 Versionen des gleichen Kernel-Release mischt, sollte völlig egal sein, solange sie so voneinander unterscheidbar sind.
Meine lilo-Version zeigt an, dass ich so maximal 27 Images eintragen kann; man hat also viel Spielraum.

Bei anderen Bootloadern sollte das analog funktionieren.
__________________
I haven't lost my mind - It's somewhere on a backup-disc
SeeksTheMoon ist offline   Mit Zitat antworten
Alt 14.12.03, 21:47   #5
stefan.becker
Mod. FAQ/Howto/Emulation

Registriert seit: Sep 2000
Beiträge: 10.423
SuSE - Linux / Kernel übersetzen

Hier noch ein Howto speziell für SuSE-Linux:

http://www.thomashertweck.de/kernel.html

(Link von Eagle78)
stefan.becker ist offline   Mit Zitat antworten
Alt 29.12.03, 09:26   #6
SeeksTheMoon
Premium Mitglied

Benutzerbild von SeeksTheMoon

Registriert seit: Feb 2002
Beiträge: 1.670
2.6er Kernel

Beim 2.6er Kernel haben sich die make-Targets etwas geändert.

Ein einfaches make erstellt nun automatisch vmlinuz, bzImage und modules, so dass man nur noch make modules_install machen muss.
make dep braucht man nicht mehr.
make xconfig ist nun keine TCL/TK GUI mehr, sondern eine QT GUI.
Wer auf gnome setzt, der kann mit make gconfig die identisch aufgebaute GTK GUI starten. Die anderen Targets sind geblieben.

Sonstige Besonderheiten gibts nicht, außer einer neuen Anordnung der Menüs. Beim ersten Mal übersieht man schonmal ganze Zweige, aber man gewöhnt sich dran.
Der Framebuffer wurde aufgesplittet, bevor man einen schwarzen Bildschirm beim Booten bekommt, achtet darauf:
Man muss Support for Framebuffer + VESA VGA Support und Framebuffer Console fest in den Kernel kompilieren, dann klappts.
__________________
I haven't lost my mind - It's somewhere on a backup-disc
SeeksTheMoon ist offline   Mit Zitat antworten
Antwort



Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.


Powered by vBulletin® Version 3.6.4 (Deutsch)
Copyright ©2000 - 2007, Jelsoft Enterprises Ltd.
linuxforen.de -- sponsored by Kemm IT