Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:kernel

Hardware Schnittstellen anzeigen

ls /sys/bus/*/*

USB

lsusb
lsusb -v

PCI

lspci
lspci -v
lspci -vv -nn # mit ids

SCSI

lsscsi

Kernel-Module

Modulverzeichnis:

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

Befehle

Kernel Meldungen anzeigen

dmesg

fortlaufend, mit Uhrzeit:

dmesg -wT

Kernel Module anzeigen

lsmod

Informationen und mögliche Parameter zu einem Modul anzeigen

Informationen zum Modul „dummy“ anzeigen

modinfo dummy

Modul von Hand laden

Modul „dummy“ laden

modprobe dummy

Modul entladen

Kernel-Modul „dummy“ entladen:

modprobe -r dummy

Wenn das nicht geht, weil das Modul in Benutzung ist, dann kann man versuchen:

rmmod -f dummy

Konfigurations-Dateien

Module nicht automatisch laden

Beispiel: automatisches laden des Moduls ip_tables verhindern

/etc/modprobe.d/notip_tables.conf
blacklist ip_tables

Laden des Moduls blockieren

/etc/modprobe.d/nodummy.conf
alias dummy off

oder

/etc/modprobe.d/nodummy.conf
install dummy /bin/false

Module beim Starten laden

Beispiel: Modul dummy laden

Debian

/etc/modules

dummy

SuSE

/etc/sysconfig/kernel :

MODULES_LOADED_ON_BOOT="dummy"

RedHat

/etc/rc.modules :

modprobe dummy
chmod +x /etc/rc.modules

Modul-Optionen setzen

Beispiel: 2 Dummy-Interfaces erstellen

einmalig

modprobe dummy numdummies=2

dauerhaft

/etc/modprobe.d/z_dummy_params.conf : 1)

options dummy numdummies=2

Fehlendes Kernel-Modul nachträglich installieren

openSuSE 11.1

zypper search kmp

Debian 7

Verfügbare Pakete anzeigen:

aptitude search modules
aptitude search dkms

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

CentOS 5

Verfügbare Pakete anzeigen:

yum list | grep kmod

Modul über ELRepo nachinstallieren

ELRepo ist ein Repository mit Fokus auf hardware-nahen Paketen

Repository ELRepo hinzufügen (siehe auch yum):

Verfügbare Pakete anzeigen:

yum search kmod
Modul installieren
yum install kmod-ntfs
testen
modprobe ntfs
dmesg | tail

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

Kernel kompilieren

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:

Maximale PID

Maximale PID anzeigen:

sysctl kernel.pid_max

Aktuelle PID ermitteln:

cat &
kill 19477

Maximale PID ändern (kleiner als die grade ermittelte):

sysctl kernel.pid_max=18000
cat &
kill %1

IPv4-Pingantworten ausschalten

2)

/etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1
sysctl -p

oder

/etc/sysctl.d/test.conf
net.ipv4.icmp_echo_ignore_all=1
sysctl -p /etc/sysctl.d/test.conf

Testen:

ping localhost

sysrq

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. Wobei „SysRq“ die „Druck“-, bzw. „S-Abf“-Taste meint.3):

Buchstabe Funktion
hHilfe zu den SysRq Keys anzeigenhelp
eAllen Prozessen ( außer init ) das Signal TERM schicken tErm
iAllen Prozessen ( außer init ) das Signal KILL schicken kIll
sAlle gemounteten Dateisysteme syncen Sync
uAlle Dateisysteme umounten Umount
bSystem _sofort_ rebooten reBoot
oSystem _sofort_ ausschalten powerOff
kAlle Prozesse dieses Terminals killen KillTTY
  • Eselsbrücken: BUSTIER ← (dann allerdings von Hinten nach Vorne)
  • SUB - hektisches Notaus
  • K ist sehr nützlich, um die grafische Oberfläche zu beenden. (Ersatz für Ctrl+Alt+Backspace)
sysctl -w 'kernel.sysrq=1'

Diese Einstellungen rebootfest machen:

/etc/sysctl.d/kernel.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 ü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

1)
veraltet: /etc/modprobe.conf https://www.debian.org/releases/stable/amd64/release-notes/ch-information.de.html Admins who were depending on different values will need to ensure they are set in the correct way to take precedence. A file in /etc/modprobe.d will override one with the same name under /lib/modprobe.d, but the names are processed in alphabetical order, so /lib/modprobe.d/systemd.conf follows and overrides (for instance) /etc/modprobe.d/dummy.conf. Make sure that any local configuration file has a name that sorts after „systemd.conf“, such as „/etc/modprobe.d/zz-local.conf“.
2)
Defaults in /usr/lib/sysctl.d/* (CentOS 7)
3)
Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei Documentation/sysrq.txt
admin_grundlagen/kernel.txt · Zuletzt geändert: 2024/09/18 15:25 von ingo_wichmann