Dr. Linux

Aus LinuxUser 03/2001

Dr. Linux

Kernelgeschichten

Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Kernel-Probleme aus und Heilmethoden für Beschwerden mit dem Linux-Betriebssystemkern vor.

Make it!

Ich wollte erstmals einen Kernelkompilieren, doch erhielt ich nach der Eingabe

root#
make menuconfig

immer die Meldung

make:  * No rule to make target `menuconfig'.  Stop.

Auch der Befehl make xconfig bringt mir die entsprechende Fehlermeldung. Was funktioniert da nicht?

Dr. Linux: Im Gegensatz zu vielen Befehlen, die zur Ausführung unabhängig vom aktuellen Arbeitsverzeichnis einfach auf einer Kommandozeile eingegeben werden, müssen Sie sich zur Ausführung dieses Befehls im Verzeichnis mit den Kernel-Sourcen (in der Regel /usr/src/linux) befinden.

Bleibt die Fehlermeldung auch nach einem

root# cd /usr/src/linux

erhalten, fehlen die Sourcen des Kernels (oft auch Kernel-Quellen genannt) ganz und müssen nachinstalliert werden.

Da diese sehr umfangreich sind, werden sie bei einer Standard-Installation meist nicht automatisch im System abgelegt. Für SuSE-Nutzer gilt: Ab SuSE Linux 6.2 ist die automatische Installation der Kernel-Sourcen auch nicht mehr voreingestellt.

Die Kernel-Sourcen für Ihr aktuelles System befinden sich bei den bekannten Distributionen auf dem Installationsmedium. Von dort können sie je nach System z. B. mit YaST, gnorpm oder dselect nachinstalliert werden. Im Internet finden Sie als tar.gz oder tar.bz2 gepackte Kernelarchive u. a. unter http://www.kernel.org/.

Schluss und aus

Ich habe auf meinem Rechner SuSE 7.0 installiert. Jetzt möchte ich ähnlich wie bei Red Hat, dass sich mein Rechner nach dem Herunterfahren von selbst ausschaltet. Geht das auch mit der SuSE-Distribution?

Dr. Linux: Für die Nutzung von APM (“Advanced Power Management”) stellt Ihnen SuSE ab Version 6.3 einen speziellen Kernel zur Verfügung. Dieser ist vorkompiliert und kann mit YaST installiert werden. SuSE informiert Sie dazu in der Support-Datenbank auf Ihrem System oder im WWW unter http://sdb.suse.de/sdb/de/html/index.html unter den Stichworten APM, ATX. Voraussetzung für fehlerfreies Arbeiten dieses Kernels ist die Aktivierung der APM-Funktionen im BIOS Ihres Rechners.

Rufen Sie yast als root auf, und legen Sie Ihre Installations-CD bereit, denn spätestens bei der Kernel-Auswahl werden Sie zum Einlegen dieser CD aufgefordert. Über die Menüpunkte Administration des Systems/Kernel- und Bootkonfiguration/Bootkernel auswählen gelangen Sie ins passende Auswahlfenster. Hier finden Sie u. a. den Kernel mit APM-Support (Abb. 2).

Abbildung 1: Der Pfad zur Kernelauswahl in Yast

Abbildung 1: Der Pfad zur Kernelauswahl in Yast

Abbildung 2: Die Kernelauswahl von SuSE 7.0 in Yast

Abbildung 2: Die Kernelauswahl von SuSE 7.0 in Yast

Abbildung 3: Die Kernelinstallation im laufenden Betrieb mit Yast

Abbildung 3: Die Kernelinstallation im laufenden Betrieb mit Yast

Wenn Sie im nächsten Dialogfenster ja auswählen (Abb. 3), erstellt YaST eine neue /usr/src/linux/.config mit der Beschreibung des APM-Kernels.

Abbildung 4: Der Boot-Manager muss neu eingerichtet werden

Abbildung 4: Der Boot-Manager muss neu eingerichtet werden

Abschließend erhalten Sie eine bestätigende Meldung zur Kernel-Installation, und YaST richtet den LILO (“Linux Loader”) neu ein, damit der soeben neu auf Ihrer Festplatte abgelegte Kernel auch beim Booten bereit steht. Im Normalfall bestätigen Sie dies wiederum mit ja.

Erfahrene Anwender werden die hierbei erzeugte LILO-Konfigurationsdatei /etc/lilo.conf eventuell persönlich editieren und den Boot-Manager durch Aufruf des /sbin/lilo-Programms über den neuen Kernel informieren. Wenn Sie einen anderen Boot-Manager als LILO verwenden, folgen Sie bitte der jeweils passenden Anleitung.

Abbildung 5: Zum Abschluss sehen Sie die Einträge Ihrer LILO-Boot-Konfiguration

Abbildung 5: Zum Abschluss sehen Sie die Einträge Ihrer LILO-Boot-Konfiguration

Damit haben Sie es schon geschafft – mit dem nächsten Bootvorgang ist der neue Kernel aktiv. Bevor Sie zur Tat schreiten und den APM-Kernel auf Ihrem Rechner installieren, noch ein abschließender Hinweis: Auf meinem 08/15-Rechner aus dem Kaufhaus funktionierte die Installation dieses Kernels mit SuSE 7.0 zwar sehr gut, trotzdem ist es angebracht, sich im Handbuch über das (Nach-) Installieren von Modulen zu informieren, damit Sie mit eventuellen Fehlermeldungen umgehen können. Benutzer der SuSE-Version 6.3 sollten (wie im Handbuch-Kapitel 3, “YaST”, beschrieben) nach dem Installieren des Kernels zusätzlich das Paket kernmod aus der Serie a neu installieren.

Wenn Sie Ihre Kernel selber bauen wollen, können Sie das Advanced Power Management natürlich ebenfalls einbinden. Auf einer grafischen Oberfläche erstellen Sie die Kernelkonfiguration z. B. mit dem Befehl

root# make xconfig

Die APM-Funktionen finden Sie im Menüpunkt Grundeinstellungen (Abb. 6). Das gilt natürlich auch, wenn Sie Ihren Kernel mit dem Befehl

root# make menuconfig

konfigurieren (Abb. 6).

Abbildung 6: APM-Unterstützung einstellen mit <custom name="span" custom:class="uielement" srcset=

make xconfig«” width=”300″ height=”225″ /> Abbildung 6: APM-Unterstützung einstellen mit make xconfig«

Abbildung 7: … und mit <custom name="span" custom:class="uielement" srcset=

make menuconfig«” width=”300″ height=”199″ /> Abbildung 7: … und mit make menuconfig«

Der Sprung ins kalte Wasser

Ich würde gerne einen Kernel bauen, befürchte aber, dass das mit meinen Linux-Kenntnissen schief gehen könnte. Gibt es nicht eine sichere Methode?

Dr. Linux: Beschaffen Sie sich ausreichend Informationen zum Thema “Kernel-Übersetzen”, damit Sie nicht von plötzlich auftretenden Problemen überrascht werden. Eine Informationsquelle ist z. B. das Kernel-HOWTO. Wenn Sie es nicht auf Ihrem System installiert haben, dann finden Sie es im WWW unter http://www.tu-harburg.de/dlhp/.

Ferner bietet Ihnen Ihr System im Verzeichnis /usr/src/linux/Documentation zumeist umfangreiche Texte zum Selbststudium an.

Um Fehler durch Aufregung oder Flüchtigkeit zu vermeiden, habe ich meine ersten Kernel alle auf eine Bootdiskette gebracht, um erstmal deren “Wirkung” zu überprüfen. So kann man eventuellen Fehlermeldungen mit einer gewissen Lässigkeit gegenüber stehen und ggf. nochmal von vorn beginnen. Eine nachweislich funktionierende Bootdisk sollte ebenfalls vorhanden sein. Mit

root# make zdisk

oder

root# make bzdisk

bringen Sie einen neuen Kernel direkt auf Diskette, wobei zunächst der Kernel erzeugt, anschließend komprimiert und schließlich auf die Diskette kopiert wird.

System zu groß?

Auf meinem System lässt sich kein Kernel kompilieren. Nach dem Befehl

root# make zImage

bekomme ich die Meldung

System is too big. Try using bzImage or modules.

Dr. Linux: Diese Meldung oder auch die Meldung “kernel too big” bedeutet, dass Ihr Kernel-Image über der zulässigen Höchstgrenze von 512 Kilobyte liegt. Diese Maximalgröße kommt daher, dass der Kernel-Loader noch im Real-Modus gestartet wird, wo nicht mehr Speicher zur Verfügung steht.

Mit den aktuellen Linux-Versionen ist es allerdings nicht mehr nötig, unbedingt ein Kernel-Image zu erzeugen, das diese Grenze einhält: Die aktuellen Versionen von LILO oder Loadlin kommen auch mit einem größeren Kernel klar – allerdings nur, wenn er speziell erzeugt wurde. Der entsprechende Befehl dazu lautet

root# make bzImage

Das b steht für “big”. Einen solchen “Big-Kernel” erhalten Sie übrigens auch, wenn Sie die Befehle

root# make bzlilo

oder das oben erwähnte

root# make bzdisk

nutzen. make bzlilo baut nicht nur Ihren neuen Kernel, sondern übernimmt auch den Eintrag in den Boot-Manager LILO. Voraussetzung dafür ist, dass Sie keinen alternativen Linux-Boot-Loader (z. B. grub) benutzen und sich das Programm lilo in /sbin befindet. So einfach sich das auch anhören mag, make bzlilo ist für den “Erstlings-Kernel” nicht die beste Wahl. Wie Sie bei Problemen die /etc/lilo.conf editieren und Ihren “alten”, funktionierenden Kernel vorsorglich als Boot-Alternative eintragen, sollten Sie sich vorher angelesen haben.

Wenn Sie bei einem make zImage bleiben wollen, bleibt Ihnen bei Erscheinen der Fehlermeldung nur das Auslagern mehrerer Treiber als Module, um so Ihr Kernel-Image abzuspecken.

Glossar

Kernel

Der Betriebssystem-Kern (“Kernel”) besteht aus den Komponenten, die das eigentliche Betriebssystem ausmachen. Nur er hat direkten Zugriff auf die Ressourcen des Computers, also auf Plattenplatz, Speicher und Rechenzeit, Tastatur usw. Wird ein Kommando abgeschickt oder ein Programm aufgerufen, so wird der benötigte Programm-Code in den Hauptspeicher geladen und gestartet. Dieses Programm wird nun als Prozess (engl. “task”) bezeichnet. Prozesse haben keinen Zugriff auf die Ressourcen, sie fordern diese jeweils vom Kernel an. Der Linux-Betriebssystem-Kern verteilt die nötige Rechenzeit und den Speicher so blitzschnell, dass der Eindruck entsteht, Programme könnten gleichzeitig ablaufen.

kompilieren

Wird eine Sourcecode-Datei an einen Compiler (z. B. gcc) übergeben, entsteht aus dem ursprünglichen (von Menschen lesbaren) Code eine sogenannte (von Maschinen lesbare) Objektdatei. Die Objektdatei wird wiederum mit den benötigten Libraries verbunden und abschließend ein lauffähiges Programm erzeugt. Libraries oder Bibliotheken enthalten Standardfunktionen, die von vielen Programmen benutzt werden, z. B. für die Bildschirmausgabe. Auf diese Weise müssen all diese Funktionen nicht für jedes einzelne Programm immer wieder neu geschrieben werden.

Sourcen

Oft auch Quellcode oder Quelltext genannt. Der Text, den ein Programmierer (in einer Programmiersprache wie z. B. C++) geschrieben hat. Erst durch Compiler genannte “Übersetzungsprogramme” wird aus dem von Menschen lesbaren Text ein binäres Programm bzw. eine von der Maschine ausführbare Datei.

BIOS

(“Basic Input/Output System”) Die Basis-Software des Computers. Beim Hochfahren des Rechners führt dieses Programm einen Selbsttest des Rechners durch, der u. a. den Grafikmodus feststellt, das Motherboard und den Hauptspeicher überprüft. Anwender können Veränderungen an den BIOS-Einstellungen vornehmen. Genaue Informationen liefern die Broschüren, die beim Kauf eines Computers bzw. Motherboards beiliegen. Auf der Web-Seite http://www.bios-info.de/ finden Sie weitergehende Informationen.

Real-Modus

Beim Einschalten eines Rechners startet ein Code das BIOS, welches nach seinen (erfolgreichen) Checks ein “OK” meldet. Erst danach wird die Suche nach dem Betriebssystem eingeleitet. Je nach der im BIOS eingestellten Reihenfolge werden die ersten Sektoren von Disketten-, CD-ROM- oder Festplattenlaufwerken nach einem Boot-Loader (z. B. LILO) durchsucht. Wird ein Loader gefunden und aktiviert, beginnt das Laden des Kernel. Damit wird das Betriebssystem gestartet, und die CPU kann aus dem Real Mode in den Protected Mode schalten: Nur in letzterem kann ein Rechner seinen gesamten Speicher ansprechen.

Module

Treiber, die erst bei Bedarf in einen (modularisierten) Kernel geladen werden. Der Vorteil eines solchen Kernels im Gegensatz zum monolithischen Kernel, der alle Treiber fest eingebunden hat, ist, dass nur benötigte Treiber zur Laufzeit geladen werden und im nicht gebrauchten Zustand keinen Speicherplatz belegen.

LinuxUser 03/2001 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben