Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:kernel

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

admin_grundlagen:kernel [2019/04/30 12:50]
admin_grundlagen:kernel [2020/09/07 10:22] (aktuell)
Zeile 1: Zeile 1:
 +====== 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
 +
 +<file txt /​etc/​modprobe.d/​notip_tables.conf>​
 +blacklist ip_tables
 +</​file>​
 +
 +==== Laden des Moduls blockieren ====
 +<file txt /​etc/​modprobe.d/​nodummy.conf>​
 +alias dummy off
 +</​file>​
 +oder
 +<file txt /​etc/​modprobe.d/​nodummy.conf>​
 +install dummy /bin/false
 +</​file>​
 +
 +==== Module beim Starten laden ====
 +Beispiel: Modul //dummy// laden
 +=== Debian=== ​
 +''/​etc/​modules''​
 +<​file>​dummy</​file>​
 +
 +=== SuSE === 
 +''/​etc/​sysconfig/​kernel''​ :
 +<​file>​MODULES_LOADED_ON_BOOT="​dummy"</​file>​
 +
 +=== RedHat ===
 +''/​etc/​rc.modules''​ : 
 +<​file>​modprobe dummy</​file>​
 +  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''​ :
 +(( 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“. ​
 +))
 +<​file>​options dummy numdummies=2</​file>​
 +
 +===== 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 [[http://​elrepo.org|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
 +<​file>​Bus 001 Device 005: ID 0a46:6688 Davicom Semiconductor,​ Inc.</​file>​
 +
 +==== 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
 +<​file>​
 +  DM9601_DEV( "​Davicom USB-100",​ 0x0a46, 0x6688, DEFAULT_GPIO_RESET )
 +</​file> ​
 +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 ===
 +  * http://​wiki.centos.org/​HowTos/​BuildingKernelModules
 +
 +====== Kernel kompilieren ======
 +[[lpi2::​kernel_kompilieren]]
 +
 +====== Neuen Kernel installieren ======
 +===== Debian 6.0 =====
 +[[admin_grundlagen:​paketverwaltung#​zusaetzliche_repositories|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 ''​[[http://​kernel.org/​doc/​Documentation/​filesystems/​proc.txt|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 ===
 +(( Defaults in ''/​usr/​lib/​sysctl.d/​*''​ (CentOS 7) ))
 +
 +<file txt /​etc/​sysctl.conf>​
 +net.ipv4.icmp_echo_ignore_all=1
 +</​file>​
 +
 +  sysctl -p
 +
 +oder
 +<file txt /​etc/​sysctl.d/​test.conf>​
 +net.ipv4.icmp_echo_ignore_all=1
 +</​file>​
 +
 +  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.((Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei ''​[[http://​kernel.org/​doc/​Documentation/​sysrq.txt|Documentation/​sysrq.txt]]''​ )):
 +
 +| Buchstabe | Funktion |  |
 +|h|Hilfe zu den SysRq Keys anzeigen|help ​ |
 +|e|Allen Prozessen ( außer init ) das Signal TERM schicken| ​ tErm|
 +|i|Allen Prozessen ( außer init ) das Signal KILL schicken| ​ kIll|
 +|s|Alle gemounteten Dateisysteme syncen| ​ Sync|
 +|u|Alle Dateisysteme umounten| ​ Umount|
 +|b|System _sofort_ rebooten| ​ reBoot|
 +|o|System _sofort_ ausschalten| ​ powerOff|
 +|k|Alle 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''​ :
 +<​file>​
 +kernel.sysrq = 1
 +</​file>​
 +
 +====== 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 [[admin_grundlagen:​bootloader|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 ======
 +  * http://​www.linuxtopia.org/​online_books/​linux_kernel_index.html