Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:kernel

Dies ist eine alte Version des Dokuments!


Schnittstellen

ls /sys/bus/*/*

USB

lsusb
lsusb -v

PCI

lspci
lspci -v

SCSI

lsscsi

Kernelmodule

ls /lib/modules/$(uname -r)/

Kernel-Module

Befehle

Kernel Meldungen anzeigen

dmesg

Kernel Module anzeigen

lsmod

Informationen und mögliche Parameter zu einem Modul anzeigen

modinfo

Modul von Hand laden

modprobe

Modul entladen

modprobe -r

Konfigurations-Dateien

Module nicht automatisch laden

Distributionsübergreifend ab Linux 2.6

/etc/modprobe* ( passende Datei wählen )

alias ipv6 off

Hotplug

( nicht getestet ob das bei aktuellen Distributionen noch funktioniert / beachtet wird )

/etc/hotplug/blacklist* für Hardware Module die nicht per Hotplug geladen werden sollen

Module beim Starten laden

Debian

/etc/modules

SuSE

/etc/sysconfig/kernel :

MODULES_LOADED_ON_BOOT=""

Distributionsübergreifend ab Linux 2.6

/etc/modprobe* ( passende Datei wählen )

install ipv6

Fehlendes Kernel-Modul nachträglich installieren

openSuSE 11.1

zypper search kmp

Debian

Verfügbare Pakete anzeigen:

aptitude search modules

( Vorsicht: nicht alle angezeigten Pakete enthalten kernel-Module )

Beispiel WLAN Treiber ipw3945

aptitude install ipw3945-modules-2.6-686 ipw3945d firmware-ipw3945
modprobe ipw3945

Centos 5

Verfügbare Pakete anzeigen:

yum list | grep kmod

Modul über dkms nachinstallieren

Repository rpmforge hinzufügen ( siehe auch paketverwaltung ):

yum install yum-priorities

/etc/yum.repos.d/CentOS-Base.repo :

[base]
priority=1

..

[update]
priority=1

..

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -ihv http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Modul installieren

yum install dkms-ipw3945

testen

modinfo ipw3945
/etc/init.d/ipw3945d start
dmesg | tail

Scientific Linux 6

Verfügbare Pakete anzeigen:

yum list | grep kmod

Modul von ATrpms nachinstallieren

ATrpms Repository hinzufügen: 1)

rpm -i http://dl.atrpms.net/all/atrpms-repo-6-4.el6.i686.rpm
yum list | grep kmdl

Doku

Fehlendes Kernel-Modul selbst bauen

Problem: es gibt in der verwendeten Distribution keinen Treiber für folgendes Gerät:

lsusb
Bus 001 Device 005: ID 0a46:6688 Davicom Semiconductor, Inc.

als Nutzer

Lösung: jagen & sammeln & Modul selbst kompilieren: Auf der Seite http://alcopop.org/unix/linux/dm9601/ sind zwei passende Treiber verlinkt:

wget http://www.silencio.ro/DM9601.GZ

Entpacken und hineinwechseln:

tar xzf DM9601.GZ
cd 2.6.18/

USB-ID hinzufügen:

vi dm9601.h
  DM9601_DEV( "Davicom USB-100", 0x0a46, 0x6688, DEFAULT_GPIO_RESET )

Kompilieren:

make

Als root

Modul laden

insmod /tmp/2.6.18/dm9601.ko

Testen ob Gerät erscheint:

dmesg
ifconfig -a

Aufräumen:

rmmod dm9601

Gerät entfernen

Modul installieren:

cp /tmp/2.6.18/dm9601.ko /lib/modules/`uname -r`/kernel/drivers/usb/net
depmod -a

Doku

CentOS / Redhat

Eigenes Kernel-Modul schreiben

Keine Angst, nur ein ganz einfaches „Hello World“ Beispiel …

Debian

cd
aptitude install linux-source-xxx
tar xjf /usr/src/linux-source-xxx
mkdir hello
vi hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static int hello_init(void)
{
  printk(KERN_ALERT "Hello World!\n");
  return 0;
}

static void hello_exit(void)
{
  printk(KERN_ALERT "Good bye world!\n");
}

module_init(hello_init);
module_exit(hello_exit);


MODULE_LICENSE("GPL");
MODULE_AUTHOR("me");
vi Makefile
obj-m   := hello.o
make -C ../linux-source-2.6.18/ SUBDIRS=$PWD modules

Neuen Kernel installieren

Debian 6.0

Repository hinzufügen, z.B. Debian Backports

apt-get -t squeeze-backports install linux-image

Passende Version auswählen, z.B.

apt-get -t squeeze-backports install linux-image-2.6.39-bpo.2-686-pae

Einstellungen zur Laufzeit

Mögliche Einstellungen sind in der Kerneldokumentation in der Datei Documentation/filesystems/proc.txt beschrieben. Hier ein paar Beispiele:

Auf sehr hoch belasteten Servern kann es Sinn machen, die Anzahl der gleichzeitig geöffneten Dateien zu erhöhen:

/etc/sysctl.conf :

fs.file-max = 16384
kernel.threads-max = 2048
sysctl -p

Wenn das System nicht mehr reagiert ( z.B. überhohe Last, X Absturz ) gibt es als letzte Rettung oft nur die „magischen“ Tastenkombinationen aus ALTGr + SysRq + Buchstabe 2):

Buchstabe Funktion
hHilfe zu den SysRq Keys anzeigen
eAllen Prozessen ( außer init ) das Signal TERM schicken
iAllen Prozessen ( außer init ) das Signal KILL schicken
sAlle gemounteten Dateisysteme syncen
uAlle Dateisysteme umounten
bSystem _sofort_ rebooten
oSystem _sofort_ ausschalten
sysctl -w 'kernel.sysrq=1'

Diese Einstellungen rebootfest machen:

/etc/sysctl.conf :

kernel.sysrq = 1

Kernel Bootparameter

Eine Übersicht über die Parameter, die der Kernel beim Booten auswertet findet sich in der Datei Documentation/kernel-parameters.txt in den Kernel-Quelltexten.

Kernel Bootparameter können beim Booten oder über die Konfigurationsdatei des Bootloaders ( z.B. /boot/grub/menu.lst ) übergeben werden.

Kernel Compile-parameter

Auf den meisten Systemen ist es nicht notwendig, den Kernel neu zu kompilieren. Es macht Unerfahrenen mehr Ärger als es bringt. Trotzdem ist es interessant, sich die Einstellungen anzusehen, die auf Kernel-Ebene möglich sind:

http://kernel.xc.net/

Dokus & Links

2)
Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei Documentation/sysrq.txt
admin_grundlagen/kernel.1319627658.txt.gz · Zuletzt geändert: 2011/10/26 11:14 von ingo_wichmann