at.linux-FAQ

Kernel & Hardware



Zurück Inhalt Inhalt von Kapitel 4 Weiter
Zurück Inhalt Wie kompiliere ich einen Kernel? Top Weiter

The Linux Kernel HOWTO (2003): http://en.tldp.org/HOWTO/Kernel-HOWTO.html
Das Linux Kernel HOWTO (1998): http://www.linuxhaven.de/dlhp/HOWTO/DE-Kernel-HOWTO.html
Das Linux Kernel HOWTO (1996): http://www.vipcom.de/linux/DE-Kernel-HOWTO.html
Der Kernel - Konfiguration: http://www.linuxfibel.de/kconf.htm

Ultrakurzfassung:
cd /usr/src/linux
make menuconfig
make dep modules modules_install install

Der schwierige Teil dabei ist die Kernel-Konfiguration. Wen man hier etwas vergisst oder falsch einstellt, bootet der resultierende Kernel nicht. Für die ersten Schritte ist es deswegen ratsam, auf die Default-Konfiguration der verwendeten Distribution zurückzugreifen. Einige Distributionen legen die Konfigurationsdatei zusammen mit Kernel-Image (und eventuell initrd) im Verzeichnis /boot ab.

ls /boot/config-*

Wenn das nicht hilft (etwa weil die Datei inzwischen gelöscht wurde) gibt es noch Sonderlösungen.

Zurück Inhalt Kernel kompilieren unter Debian Top Weiter

Kernel kompilieren unter Debian

Notwendige Pakete (abgesehen vom Kernel-Source):

apt-get install kernel-package gcc binutils libc6-dev

Die bevorzugte Methode ist die Erzeugung eines eigenen Kernel-Pakets. Das erleichtert die Archivierung und die Installation auf anderen Rechnern.

cd /usr/src/linux
make menuconfig
make-kpkg kernel_image
cd ..
dpkg -i kernel-image*.deb

Siehe auch http://newbiedoc.sourceforge.net/system/kernel-pkg.html

Kernel kompilieren unter SuSE-Linux: Was für Pakete brauche ich?

Top

Inhalt


Frage: Ich verwende SuSE-Linux und möchte einen neuen Kernel übersetzen. Welche Pakete müssen dazu installiert sein?

Antwort: Eigentlich sind lediglich zwei Packages unabdingbar: Der  gcc  und der Kernelquellcode.

Dabei ist darauf zu achten, dass SuSE gewöhnlich drei verschiedene Kernels anbietet: Standardmäßig aktiviert ist ein spezieller SuSE-Kernel, der aus einem aktuellen Kernel zusammengebastelt ist, ferner gibt es einen aktuellen Release-Kernel, und einen aktuellen Experimental-Kernel.
Wenn Du nicht weißt, welcher der richtige für Dich ist, empfehlen wir dringend den aktuellen Release-Kernel.

Unresolved Symbols nach Kernelkompilation

Top

Inhalt


Problem: Ich hab gerade den Kernel neu komiliert und kriege bei einem Neustart lauter unresolved symbols-Fehlermeldungen: z.B. mit den Appletalk- und den PCMCIA-Modulen, die ich aber nicht habe, und daher auch nicht kompiliert sind. br>
Antwort: Die Module in  /lib/modules/<Kernel-Version>/  passen (teilweise) nicht zu Deinem Kernel - nämlich genau die, die Du nicht neu kompiliert hast (weil Du sie nicht brauchst).

Dagegen hilft es, (nach dem Anlegen einer Sicherheitskopie) vor dem Installieren der Module den Inhalt des entsprechenden o.a. Verzeichnisses zu löschen.

Wie patche ich den Kernelquellcode?

Top

Inhalt


Frage: Wie patche ich den Kernel, d.h. eigentlich den Kernelquellcode?

Antwort: Im folgenden Beispiel patchen wir den Kernel 2.4.20 auf 2.4.21-pre6. Der Kernel ist entpackt und der Patch bereits heruntergeladen. Nun wechseln wir in das Verzeichnis /usr/src/linux-2.4.20 und tippen folgenden Befehl ein (für einen komprimierten Patch):

$ cd /usr/src/linux-2.4.20
$ zcat /tmp/patch-2.4.21-pre6.gz | patch -p1 2> out

Überprüfe auf jedenfall ob die Datei "out" etwaige Fehlermeldungen enthält.
Für einen unkomprimierten Patch lautet der Befehl:

$ patch -p1 < /tmp/patch-2.4.21-pre6 2>out

Der Parameter -p ist sehr wichtig! Er gibt an, wieviele Teile des Pfades, von dem aus der Patch erstellt wurde, entfernt werden sollen. Befinden wir uns z.B. im Verzeichnis /usr/src, so könnten wir als Parameter einfach auch -p0 angeben. Da man aber häufig mehrere Kernelversionen parallel hält, ist es empfehlenswert, in das gewünschte Verzeichnis zu wechseln und den Patch mit -p1 anzuwenden, um sicherzustellen, dass der richtige Quellbaum gepatcht wird. Nähere Informationen siehe 'man patch'. Nach dem Patchen des Kernels muss dieser konfiguriert, kompiliert und installiert werden.

modprobe: can't locate module ppp-compress-2x

Top

Inhalt


Frage: Vor kurzen sind mir folgende Einträge in meiner  /var/log/messages  aufgefallen:

modprobe: can´t locate module ppp-compress-21
modprobe: can´t locate module ppp-compress-24
modprobe: can´t locate module ppp-compress-26


Was meint  modprobe  damit?

Antwort: In Deiner  /etc/modules.conf  (bzw.  /etc/conf.modules)  fehlen folgende Zeilen:

alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate


modprobe: can't locate module char-major-4

Top

Inhalt


Frage: Vor kurzem sind mir ein paar Meldungen während des Bootens aufgefallen:

      Configuring serial ports
      ttyS0 at 0x03f8 (irq = 4) is a 16450
      ttyS0 at 0x02f8 (irq = 3) is a 16450
      modprobe: modprobe: Can't locate module char-major-4
      

Was ist die Ursache für die Meldung "modprobe: modprobe: Can't locate module char-major-4"?

Antwort:
Das Programm setserial will die seriellen Schnittstellen konfigurieren und greift dazu auf /dev/ttyS* zu. /dev/ttyS* sind "character device special files" mit major number 4:

          $ ls -l /dev/ttyS*
          crw-rw----   1 uucp     uucp       4,  64 Jan 23 18:57 /dev/ttyS0
          crw--w--w-   1 root     root       4,  65 Jan 20 19:51 /dev/ttyS1
          crw-rw----   1 root     uucp       4,  66 Jul 29 14:48 /dev/ttyS2
          crw-rw----   1 root     uucp       4,  67 Jan 23 19:14 /dev/ttyS3
                                             ^   ^
                                             |   |
                                             |   +--- minor device number
                                             +------- major device number
      


Der Kernel versucht also auf einen character device driver mit der major device number 4 zuzugreifen. Der ist aber nicht im Kernel registriert. Du hast diesen Treiber also nicht in den Kernel einkompiliert und auch nicht als Modul geladen. Daher versucht der Kernel modprobe aufzurufen und übergibt als Argument eine Beschreibung des fehlenden Treibers: char-major-4. modprobe versucht dann dieses Modul zu laden, kann es aber nicht in /lib/modules/`uname -r`/ finden. Denn das Modul, das character device driver mit der major device number 4 implementiert, heisst nicht char-major-4 sondern serial.o.

> Was kann ich dagegen tun?

Entweder

1. support für die seriellen Schnittstellen in den Kernel einkompilieren oder

2. support für die seriellen Schnittstellen als Modul kompilieren, mit make modules_install nach /lib/modules kopieren und modprobe beibringen, dass es serial.o zu laden hat, wenn char-major-4 gefordert ist. Das geht mit der Zeile

alias char-major-4 serial

in /etc/modules.conf.

libc5-Programme auf glibc-Rechner laufen lassen

Top

Inhalt


Frage: Auf meinem SuSE-Linux-Rechner ist die  glibc  (libc6)  installiert. Wie kann ich dennoch  libc5-Programme ausführen?

Antwort: Die shared C-Libraries  libc.so  und  libm.so  in der  libc5-Version müssen installiert sein. Bei SuSE sind die im Paket  shlibs5.

Was haben die Zeilen mit  -- MARK --  in meiner  /var/log/messages  zu sagen?

Top

Inhalt


Frage: Was haben die Zeilen mit  -- MARK --  in meiner  /var/log/messages  zu sagen? Wie bekomme ich das abgeschaltet?

Antwort: Der  syslogd  loggt per Default alle 20 Minuten einen solchen Timestamp mit. Das kann ganz nützlich sein, um zu sehen, ob er noch korrekt arbeitet. Wenn man das nicht möchte, kann man den  syslogd  mit dem Kommandozeilenparameter  -m 0  aufrufen (bzw. den Aufruf in den init-Scripten ändern), dann werden diese Timestamps unterbunden.

CD-ROM lässt sich nicht mounten

Top

Inhalt


Problem: Der Befehl   mount /dev/cdrom   erzeugt die Fehlermeldung   mount: fs Type iso9660 is not supported by Kernel. Die CD ist aber in Ordnung.

Antwort: Der von Dir eingesetzte Kernel unterstützt das CD-ROM-Filesystem nach ISO 9660 nicht; daher musst Du den notwendigen Treiber nachladen. Fast alle Distributionen bieten mit dem Modul   isofs.o   aus dem Verzeichnis   /lib/modules/<Kernel-Version>/fs/   einen solchen an. Der Befehl   modprobe isofs.o   lädt das Modul. Wenn der Treiber nicht vorhanden ist, muss man einen neuen Kernel kompilieren, der das ISO-9660-Filesystem unterstützt.

umount: /cdrom: device is busy

Top

Inhalt


Problem: Das Kommando   umount /cdrom   scheitert gelegentlich mit der Fehlermeldung   umount: /cdrom: device is busy   auch wenn scheinbar kein Programm mehr auf das Laufwerk zugreift. Ohne   umount   bleibt das Laufwerk gesperrt, so dass ich die CD nicht entnehmen kann.

Antwort: Die Ursache für die Fehlermeldung ist in der Regel ein vom User vergessener Prozeß, der noch eine Datei oder ein Verzeichnis der CD-ROM geöffnet hält. Dazu zählt auch ein Programm, dass gestartet wurde, während das aktuelle Verzeichnis auf der CD-ROM lag. Dieses dient dem Prozeß dann als Arbeitsverzeichnis. Wenn man den Prozeß beendet, sollte ein  umount   Erfolg haben.
Um herauszufinden, welche Prozesse auf ein Dateisystem zugreifen, kann der Befehl   fuser -m /cdrom   dienen. Dies liefert die Prozeß-IDs aller betroffenen Programme. Nähere Details zur Benutzung von   fuser   erhält man auf der zugehörigen man-page.

umount: /dev/hdc is not in the fstab

Top

Inhalt


Problem: Mein CD-ROM-Laufwerk lässt sich mit   mount /dev/hdc /mount   problemlos mounten. Das Kommando   umount /dev/hdc   scheitert aber mit der Fehlermeldung   umount: /dev/hdc is not in the fstab (and you are not root) . Ohne   umount   bleibt das Laufwerk gesperrt, so dass ich die CD nicht entnehmen kann.

Antwort: Du willst doch nicht das Gerät freigeben, sondern das Verzeichnis! Also  umount /mount.

Zurück Inhalt Audio-CD ohne Kabel abspielen? Top Weiter

Frage: Ist es zwingend notwendig, zum Abspielen einer Audio-CD in einem DVD-Laufwerk dieses per Kabel mit der Soundkarte zu verbinden?

Antwort: Die Alternative besteht darin, die Audiospur digital auszulesen und über die CPU an die Soundkarte zu schicken. Der einzige Grund, warum man das so machen will, ist ein schlecht zusammengebauter Rechner.

Direkte Ausgabe mit OSS-Treiber:

cdparanoia -ZpR 1- - | sox -t cdr - -t ossdsp /dev/dsp

Indirekte Ausgabe über esound:

cdparanoia -Z 1- - | esdcat
Zurück Inhalt Floppy-LED als Dauerlicht Top Weiter

Problem: Nach einem Hardware-Umbau leuchtet die LED des Floppy-Laufwerks ständig.

Antwort: Der geschilderte Fall ist kein Linux-spezifisches Problem.
Offenbar wurde der Stecker des Floppy-Kabels um 180 Grad verdreht angeschlossen. Vorsicht: Solange die LED Dauerlicht zeigt, wird jede eingelegte Diskette gelöscht.

Wo finde ich Treiber für meinen Drucker? Wird mein Drucker überhaupt unterstützt?

Top

Inhalt


Frage: Wo finde ich Treiber für meinen Drucker? Wird mein Drucker unter Linux überhaupt unterstützt?

Antwort: Das Drucker-HOWTO gibt es deutschsprachig auf http://gd.tuwien.ac.at/opsys/linux/DE-HOWTO/,
und auf Englisch als The Linux Printing HOWTO z.B. auf http://gd.tuwien.ac.at/opsys/linux/ldp/. Interessant ist ausserdem http://www.linuxprinting.org/.

Hauptspeicher wird nicht vollständig erkannt

Top

Inhalt


Problem: He! Ich habe 128MB RAM in meinem Rechner, die vom BIOS beim Booten auch brav hochgezählt werden - aber Linux erkennt nur 64MB!

Antwort: Du hast einen alten Kernel (< 2.0.36) und/oder ein fehlerhaftes BIOS. Ältere Kernel verwenden einen alten (aber "sicheren") BIOS Call, der aber aufgrund von x86-Register Limitationen höchstens 64 MB RAM zurückmelden kann (64 MB war früher einmal viel RAM! :-).

Neuere Kernel verwenden einen Extended BIOS Call, der auch mehr als 64 MB zurückmelden kann. Allerdings ist die Implementation in manchen Motherboard/BIOS Kombinationen fehlerhaft, so dass auch hier nur 64 MB (oder ein anderer falscher Wert) zurückgemeldet wird.

Lösung: Entweder ein BIOS-Update (Achtung: Anweisungen des BIOS- bzw. Motherboard-Herstellers genauestens befolgen, ansonsten ist das Motherboard danach im schlimmsten Fall unbrauchbar), oder dem Kernel einen Bootparameter übergeben:

LILO:
Die folgende Zeile in  /etc/lilo.conf  einfügen (man lilo.conf  für mehr Details), danach  /sbin/lilo  ausführen und rebooten (ja, das muss selbst bei Linux hin und wieder sein :-). Für z.B. 128 MB RAM:
append="mem=128M"
Loadlin:
Den folgenden Parameter in der Kommandozeile, der LINUX.BAT (Batchdatei) oder der LOADLIN.CFG (Loadlin Konfigurationsdatei) angeben (ohne "append=" und ohne Anführungszeichen rundherum), danach rebooten. Für zB. 192 MB RAM:
mem=192M
GRUB:
An die "kernel" Zeile einfach  mem=128M  (bei 128 MB Speicher) in der GRUB-config-Datei anhängen, also z.B. so:
kernel /boot/vmlinuz root=/dev/hda2 mem=128M
Danach ein  reboot  und der gesamte RAM sollte zu sehen sein. Btw.: GRUB muss natürlich nicht neu installiert werden, er liest die config beim booten...


Top  zeigt nur X KByte "free" an!

Top

Inhalt


Problem: Ich habe zwar 128 MB RAM in meinem Rechner, aber schon bei wenigen laufenden Anwendungen zeigt  top  an, dass der freie Hauptspeicher praktisch Null ist ("... 3100K free, ..."). Das kann doch nicht sein!

Antwort: Ganz recht, ist auch nicht so :-).
Verwende besser den Befehl  free,  um herauszubekommen, wieviel freien Hauptspeicher Du hast.

jochen@tolot:/home/jochen/LinuxFAQ > free
  total   used   free   shared   buffers   cached
Mem: 128284   125184   3100   44084   2796   61540
-/+ buffers/cache:   60848   67436
Swap: 103404   7200 96204

Die hervorgehobene Zahl gibt an, wieviel freien Hauptspeicher Du hast. Bei top musst Du das per Hand ausrechnen.

Zurück Inhalt Was bedeuten diese ISDN-Fehlercodes in  /var/log/messages? Top Weiter

Problem: In  /var/log/messages  stand eine Fehlermeldung von HiSax (war irgendwas wie '... cause E0[irgendwas]) - nun weiß ich aber mit dieser Meldung nicht allzuviel anzufangen.

Antwort:  man isdn_cause  listet eigentlich alle Codes (und den Klartext dazu).

Zurück Inhalt Meine Maus funktioniert in der Konsole, aber nicht unter X Top Weiter

Problem: Meine Maus funktioniert in der Konsole, aber nicht unter X.

Antwort: Hast Du eventuell  gpm  (General Purpose Mouse, das ist der Console-Mouse- Dämon) rennen? Falls ja, dann kann es sein, dass das Mouse-Device nicht mehrmals geöffnet werden kann. In diesem Fall  gpm  mit der Option -R starten (gegebenenfalls  /etc/gpm.conf  anpassen), und in der  /etc/XF86Config  den Pointer folgendermaßen konfigurieren:

Section "Pointer"
      Protocol "MouseSystems"
      Device "/dev/gpmdata"


Zurück Inhalt Wie ermittle ich die Ethernet-Adresse (MAC) meiner Netzwerk-Karte? Top Weiter

Wie ermittle ich die Ethernet-Adresse (MAC) meiner Netzwerk-Karte?

http://de.wikipedia.org/wiki/MAC-Adresse

Beim traditionelle Kommando ifconfig heißt das Stichwort »HWaddr« oder »Hardware Adresse«, je nachdem welche Sprache eingestellt ist.

/sbin/ifconfig eth0

Das mächtigere ip verzichtet auf mehrsprachigen Schnickschnack, das Stichwort lautet »link/ether«.

/sbin/ip link show eth0
Zurück Inhalt Kann ich meinen Linux-Server ohne Tastatur booten? Top Weiter

Kann ich meinen Linux-Server ohne Tastatur booten?

Das erfordert manchmal eine Einstellung im BIOS, etwa

Halt On Errors: All But Keyboard

Bei einigen Rechnern (etwa von Compaq/HP) fehlt diese Option, sie bleiben dann bei jedem Neustart mit einer Kafkaesken Meldung hängen:

Keyboard error, or no keyboard present: Press F1 to continue.

Linux selbst hat kein Problem damit. Es gibt allerdings automagische Hardware-Erkennungsdienste wie kudzu (Red Hat), die unter Umständen ähnlich dumme Fragen stellen.

Zurück Inhalt Ende dieser Seite Top Weiter