Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:kernel [2011/05/05 10:15] 127.0.0.1 Externe Bearbeitung |
admin_grundlagen:kernel [2024/09/18 15:25] (aktuell) ingo_wichmann [sysrq] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ==== Schnittstellen ==== | + | ====== Hardware Schnittstellen anzeigen ====== |
| ls /sys/bus/*/* | ls /sys/bus/*/* | ||
| - | === USB === | + | ===== USB ===== |
| lsusb | lsusb | ||
| lsusb -v | lsusb -v | ||
| - | === PCI === | + | ===== PCI ===== |
| lspci | lspci | ||
| lspci -v | lspci -v | ||
| - | === SCSI === | + | lspci -vv -nn # mit ids |
| + | ===== SCSI ===== | ||
| lsscsi | lsscsi | ||
| - | ==== Kernelmodule ==== | + | ====== Kernel-Module ====== |
| + | Modulverzeichnis: | ||
| ls /lib/modules/$(uname -r)/ | ls /lib/modules/$(uname -r)/ | ||
| - | |||
| - | |||
| - | ====== Kernel-Module ====== | ||
| ===== Befehle ===== | ===== Befehle ===== | ||
| ==== Kernel Meldungen anzeigen ==== | ==== Kernel Meldungen anzeigen ==== | ||
| dmesg | dmesg | ||
| + | fortlaufend, mit Uhrzeit: | ||
| + | dmesg -wT | ||
| ==== Kernel Module anzeigen ==== | ==== Kernel Module anzeigen ==== | ||
| Zeile 23: | Zeile 24: | ||
| ==== Informationen und mögliche Parameter zu einem Modul anzeigen ==== | ==== Informationen und mögliche Parameter zu einem Modul anzeigen ==== | ||
| - | modinfo | + | Informationen zum Modul "dummy" anzeigen |
| + | modinfo dummy | ||
| ==== Modul von Hand laden ==== | ==== Modul von Hand laden ==== | ||
| - | modprobe | + | Modul "dummy" laden |
| + | modprobe dummy | ||
| ==== Modul entladen ==== | ==== Modul entladen ==== | ||
| - | modprobe -r | + | 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 ===== | ===== Konfigurations-Dateien ===== | ||
| ==== Module nicht automatisch laden ==== | ==== Module nicht automatisch laden ==== | ||
| - | === Distributionsübergreifend ab Linux 2.6 === | + | Beispiel: automatisches laden des Moduls //ip_tables// verhindern |
| - | ''/etc/modprobe*'' ( passende Datei wählen ) | + | |
| - | <file>alias ipv6 off</file> | + | |
| - | === Hotplug === | + | <file txt /etc/modprobe.d/notip_tables.conf> |
| - | ( nicht getestet ob das bei aktuellen Distributionen noch funktioniert / beachtet wird ) | + | blacklist ip_tables |
| + | </file> | ||
| - | ''/etc/hotplug/blacklist*'' für Hardware Module die nicht per Hotplug geladen werden sollen | + | ==== 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 ==== | ==== Module beim Starten laden ==== | ||
| + | Beispiel: Modul //dummy// laden | ||
| === Debian=== | === Debian=== | ||
| ''/etc/modules'' | ''/etc/modules'' | ||
| + | <file>dummy</file> | ||
| === SuSE === | === SuSE === | ||
| ''/etc/sysconfig/kernel'' : | ''/etc/sysconfig/kernel'' : | ||
| - | <file>MODULES_LOADED_ON_BOOT=""</file> | + | <file>MODULES_LOADED_ON_BOOT="dummy"</file> |
| - | === Distributionsübergreifend ab Linux 2.6 === | + | === RedHat === |
| - | ''/etc/modprobe*'' ( passende Datei wählen ) | + | ''/etc/rc.modules'' : |
| - | <file>install ipv6</file> | + | <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 ===== | ===== Fehlendes Kernel-Modul nachträglich installieren ===== | ||
| Zeile 58: | Zeile 92: | ||
| zypper search kmp | zypper search kmp | ||
| - | ==== Debian ==== | + | ==== Debian 7 ==== |
| Verfügbare Pakete anzeigen: | Verfügbare Pakete anzeigen: | ||
| aptitude search modules | aptitude search modules | ||
| + | aptitude search dkms | ||
| ( Vorsicht: nicht alle angezeigten Pakete enthalten //kernel//-Module ) | ( Vorsicht: nicht alle angezeigten Pakete enthalten //kernel//-Module ) | ||
| - | Beispiel WLAN Treiber ipw3945 | + | ==== CentOS 5 ==== |
| - | aptitude install ipw3945-modules-2.6-686 ipw3945d firmware-ipw3945 | + | |
| - | modprobe ipw3945 | + | |
| - | + | ||
| - | ==== Centos 5 ==== | + | |
| Verfügbare Pakete anzeigen: | Verfügbare Pakete anzeigen: | ||
| yum list | grep kmod | yum list | grep kmod | ||
| - | === Modul über dkms nachinstallieren === | + | === Modul über ELRepo nachinstallieren === |
| - | Repository [[http://wiki.centos.org/AdditionalResources/Repositories/RPMForge|rpmforge]] hinzufügen ( siehe auch [[paketverwaltung]] ): | + | ELRepo ist ein Repository mit Fokus auf hardware-nahen Paketen |
| - | yum install yum-priorities | + | |
| - | ''/etc/yum.repos.d/CentOS-Base.repo'' : | + | Repository [[http://elrepo.org|ELRepo]] hinzufügen (siehe auch [[yum]]): |
| - | <file> | + | |
| - | [base] | + | |
| - | priority=1 | + | |
| - | </file> | + | |
| - | .. | + | |
| - | <file> | + | |
| - | [update] | + | |
| - | priority=1 | + | |
| - | </file> | + | |
| - | .. | + | |
| - | 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: | Verfügbare Pakete anzeigen: | ||
| - | yum list | grep kmod | + | yum search kmod |
| - | === Modul von ATrpms nachinstallieren === | ||
| - | ATrpms Repository hinzufügen: (( aktuelle Version siehe http://packages.atrpms.net/name/atrpms-repo/ )) | + | == Modul installieren == |
| - | rpm -i http://dl.atrpms.net/all/atrpms-repo-6-4.el6.i686.rpm | + | yum install kmod-ntfs |
| - | yum list | grep kmdl | + | == testen == |
| - | | + | modprobe ntfs |
| - | === Doku === | + | dmesg | tail |
| - | http://wiki.centos.org/HowTos/BuildingKernelModules | + | |
| ===== Fehlendes Kernel-Modul selbst bauen ===== | ===== Fehlendes Kernel-Modul selbst bauen ===== | ||
| Zeile 145: | Zeile 156: | ||
| * http://wiki.centos.org/HowTos/BuildingKernelModules | * http://wiki.centos.org/HowTos/BuildingKernelModules | ||
| - | ===== Eigenes Kernel-Modul schreiben ===== | + | ====== Kernel kompilieren ====== |
| - | Keine Angst, nur ein ganz einfaches "Hello World" Beispiel ... | + | [[lpi2::kernel_kompilieren]] |
| - | ==== Debian ==== | + | |
| - | cd | + | ====== Neuen Kernel installieren ====== |
| - | aptitude install linux-source-xxx | + | ===== Debian 6.0 ===== |
| - | tar xjf /usr/src/linux-source-xxx | + | [[admin_grundlagen:paketverwaltung#zusaetzliche_repositories|Repository]] hinzufügen, z.B. Debian Backports |
| - | mkdir hello | + | |
| - | vi hello.c | + | |
| - | <file> | + | |
| - | #include <linux/init.h> | + | |
| - | #include <linux/module.h> | + | |
| - | #include <linux/kernel.h> | + | |
| - | static int hello_init(void) | + | apt-get -t squeeze-backports install linux-image |
| - | { | + | Passende Version auswählen, z.B. |
| - | printk(KERN_ALERT "Hello World!\n"); | + | apt-get -t squeeze-backports install linux-image-2.6.39-bpo.2-686-pae |
| - | return 0; | + | |
| - | } | + | |
| - | static void hello_exit(void) | + | ====== 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: |
| - | printk(KERN_ALERT "Good bye world!\n"); | + | |
| - | } | + | |
| - | module_init(hello_init); | + | === Maximale PID === |
| - | module_exit(hello_exit); | + | |
| + | Maximale PID anzeigen: | ||
| + | sysctl kernel.pid_max | ||
| - | MODULE_LICENSE("GPL"); | + | Aktuelle PID ermitteln: |
| - | MODULE_AUTHOR("me"); | + | cat & |
| - | </file> | + | kill 19477 |
| - | vi Makefile | + | Maximale PID ändern (kleiner als die grade ermittelte): |
| - | <file> | + | sysctl kernel.pid_max=18000 |
| - | obj-m := hello.o | + | cat & |
| - | </file> | + | kill %1 |
| - | make -C ../linux-source-2.6.18/ SUBDIRS=$PWD modules | + | |
| + | === IPv4-Pingantworten ausschalten === | ||
| + | (( Defaults in ''/usr/lib/sysctl.d/*'' (CentOS 7) )) | ||
| - | ====== Einstellungen zur Laufzeit ====== | + | <file txt /etc/sysctl.conf> |
| - | Mögliche Einstellungen sind in der Kerneldokumentation in der Datei ''Documentation/filesystems/proc.txt'' beschrieben. Hier ein paar Beispiele: | + | net.ipv4.icmp_echo_ignore_all=1 |
| + | </file> | ||
| - | Auf sehr hoch belasteten Servern kann es Sinn machen, die Anzahl der gleichzeitig geöffneten Dateien zu erhöhen: | + | sysctl -p |
| - | ''/etc/sysctl.conf'' : | + | oder |
| - | <file> | + | <file txt /etc/sysctl.d/test.conf> |
| - | fs.file-max = 16384 | + | net.ipv4.icmp_echo_ignore_all=1 |
| - | kernel.threads-max = 2048 | + | |
| </file> | </file> | ||
| - | sysctl -p | + | 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 ''[[https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst|Documentation/sysrq.txt]]'' )): | ||
| - | 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 ((Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei ''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| | ||
| - | | Buchstabe | Funktion | | + | * //Eselsbrücken: BUSTIER// <- (dann allerdings von Hinten nach Vorne) |
| - | |h|Hilfe zu den SysRq Keys anzeigen| | + | * //SUB// - hektisches Notaus |
| - | |e|Allen Prozessen ( außer init ) das Signal TERM schicken| | + | * ''K'' ist sehr nützlich, um die grafische Oberfläche zu beenden. (Ersatz für Ctrl+Alt+Backspace) |
| - | |i|Allen Prozessen ( außer init ) das Signal KILL schicken| | + | |
| - | |s|Alle gemounteten Dateisysteme syncen| | + | |
| - | |u|Alle Dateisysteme umounten| | + | |
| - | |b|System _sofort_ rebooten| | + | |
| - | |o|System _sofort_ ausschalten| | + | |
| sysctl -w 'kernel.sysrq=1' | sysctl -w 'kernel.sysrq=1' | ||
| Zeile 213: | Zeile 224: | ||
| Diese Einstellungen rebootfest machen: | Diese Einstellungen rebootfest machen: | ||
| - | ''/etc/sysctl.conf'' : | + | ''/etc/sysctl.d/kernel.conf'' : |
| <file> | <file> | ||
| kernel.sysrq = 1 | kernel.sysrq = 1 | ||
| Zeile 221: | Zeile 232: | ||
| Eine Übersicht über die Parameter, die der Kernel beim Booten auswertet findet sich in der Datei ''Documentation/kernel-parameters.txt'' in den Kernel-Quelltexten. | 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 Bootparameter können beim Booten oder über die Konfigurationsdatei des [[admin_grundlagen:bootloader|Bootloaders]] übergeben werden. |
| ====== Kernel Compile-parameter ====== | ====== Kernel Compile-parameter ====== | ||