Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:kernel [2012/07/03 20:48] ingo_wichmann |
admin_grundlagen:kernel [2025/11/10 10:54] (aktuell) |
||
|---|---|---|---|
| Zeile 7: | Zeile 7: | ||
| lspci | lspci | ||
| lspci -v | lspci -v | ||
| + | lspci -vv -nn # mit ids | ||
| ===== SCSI ===== | ===== SCSI ===== | ||
| lsscsi | lsscsi | ||
| - | ==== Kernelmodule ==== | + | ====== Kernel-Module ====== |
| Modulverzeichnis: | 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 | ||
| + | Oder (veraltet, ohne Support für Dependencies): | ||
| + | insmod 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 ==== | ||
| - | Beispiel: automatisches laden des Moduls //ipv6// verhindern | + | Beispiel: automatisches laden des Moduls //ip_tables// verhindern |
| - | ''/etc/modprobe.conf'' : | + | <file txt /etc/modprobe.d/notip_tables.conf> |
| - | <file>alias ipv6 off</file> | + | 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 ==== | ==== Module beim Starten laden ==== | ||
| Zeile 55: | Zeile 74: | ||
| ==== Modul-Optionen setzen ==== | ==== Modul-Optionen setzen ==== | ||
| Beispiel: 2 Dummy-Interfaces erstellen | Beispiel: 2 Dummy-Interfaces erstellen | ||
| + | === einmalig === | ||
| + | modprobe dummy numdummies=2 | ||
| - | ''/etc/modprobe.conf'' : | + | === 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> | <file>options dummy numdummies=2</file> | ||
| Zeile 63: | Zeile 94: | ||
| 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 | ||
| - | aptitude install ipw3945-modules-2.6-686 ipw3945d firmware-ipw3945 | ||
| - | modprobe ipw3945 | ||
| ==== CentOS 5 ==== | ==== CentOS 5 ==== | ||
| Zeile 90: | Zeile 118: | ||
| modprobe ntfs | modprobe ntfs | ||
| dmesg | tail | dmesg | tail | ||
| - | + | ||
| - | === Doku === | + | |
| - | http://wiki.centos.org/HowTos/BuildingKernelModules | + | |
| ===== Fehlendes Kernel-Modul selbst bauen ===== | ===== Fehlendes Kernel-Modul selbst bauen ===== | ||
| Zeile 132: | Zeile 158: | ||
| * 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 | + | |
| - | aptitude install linux-source-xxx | + | |
| - | tar xjf /usr/src/linux-source-xxx | + | |
| - | mkdir hello | + | |
| - | vi hello.c | + | |
| - | <file> | + | |
| - | #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"); | + | |
| - | </file> | + | |
| - | + | ||
| - | vi Makefile | + | |
| - | <file> | + | |
| - | obj-m := hello.o | + | |
| - | </file> | + | |
| - | make -C ../linux-source-2.6.18/ SUBDIRS=$PWD modules | + | |
| ====== Neuen Kernel installieren ====== | ====== Neuen Kernel installieren ====== | ||
| Zeile 182: | Zeile 172: | ||
| 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: | 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: | ||
| - | Auf sehr hoch belasteten Servern kann es Sinn machen, die Anzahl der gleichzeitig geöffneten Dateien zu erhöhen: | + | === Maximale PID === |
| - | ''/etc/sysctl.conf'' : | + | Maximale PID anzeigen: |
| - | <file> | + | sysctl kernel.pid_max |
| - | fs.file-max = 16384 | + | |
| - | kernel.threads-max = 2048 | + | 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> | </file> | ||
| sysctl -p | 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 ((Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei ''[[http://kernel.org/doc/Documentation/sysrq.txt|Documentation/sysrq.txt]]'' )): | + | 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 ''[[https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst|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 207: | Zeile 226: | ||
| 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 215: | Zeile 234: | ||
| 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 ====== | ||