Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
lpi1:kernel [2013/11/15 16:17] 127.0.0.1 Externe Bearbeitung |
lpi1:kernel [2016/08/15 20:03] 127.0.0.1 Externe Bearbeitung |
||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
lspci | lspci | ||
lspci -v | lspci -v | ||
+ | lspci -vv -nn # mit ids | ||
===== SCSI ===== | ===== SCSI ===== | ||
lsscsi | lsscsi | ||
Zeile 16: | Zeile 17: | ||
==== Kernel Meldungen anzeigen ==== | ==== Kernel Meldungen anzeigen ==== | ||
dmesg | dmesg | ||
+ | fortlaufend, mit Uhrzeit: | ||
+ | dmesg -wT | ||
==== Kernel Module anzeigen ==== | ==== Kernel Module anzeigen ==== | ||
Zeile 32: | Zeile 35: | ||
modprobe -r dummy | modprobe -r dummy | ||
- | Wenn das nicht geht, weil das Modul in Benutzung ist, dann kann man | + | Wenn das nicht geht, weil das Modul in Benutzung ist, dann kann man versuchen: |
rmmod -w dummy | rmmod -w dummy | ||
Zeile 40: | Zeile 43: | ||
===== 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>alias ipv6 off</file> | + | |
+ | ''/etc/modprobe.d/notip_tables.conf'' : | ||
+ | <file>alias ip_tables off</file> | ||
==== Module beim Starten laden ==== | ==== Module beim Starten laden ==== | ||
Beispiel: Modul //dummy// laden | Beispiel: Modul //dummy// laden | ||
Zeile 62: | Zeile 64: | ||
==== Modul-Optionen setzen ==== | ==== Modul-Optionen setzen ==== | ||
Beispiel: 2 Dummy-Interfaces erstellen | Beispiel: 2 Dummy-Interfaces erstellen | ||
+ | === einmalig === | ||
+ | modprobe dummy numdummies=2 | ||
+ | === dauerhaft === | ||
+ | |||
+ | ''/etc/modprobe.d/dummy_params.conf'' : | ||
+ | (( veraltet: | ||
''/etc/modprobe.conf'' : | ''/etc/modprobe.conf'' : | ||
+ | )) | ||
<file>options dummy numdummies=2</file> | <file>options dummy numdummies=2</file> | ||
Zeile 70: | Zeile 79: | ||
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 137: | Zeile 143: | ||
* 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 187: | Zeile 157: | ||
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 | ||
+ | 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 ((Die vollständige Liste der Befehle steht in der Kerneldokumentation in der Datei ''[[http://kernel.org/doc/Documentation/sysrq.txt|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 ''[[http://kernel.org/doc/Documentation/sysrq.txt|Documentation/sysrq.txt]]'' )): | ||
- | | Buchstabe | Funktion | | + | | Buchstabe | Funktion | | |
- | |h|Hilfe zu den SysRq Keys anzeigen| | + | |h|Hilfe zu den SysRq Keys anzeigen|help | |
- | |e|Allen Prozessen ( außer init ) das Signal TERM schicken| | + | |e|Allen Prozessen ( außer init ) das Signal TERM schicken| tErm| |
- | |i|Allen Prozessen ( außer init ) das Signal KILL schicken| | + | |i|Allen Prozessen ( außer init ) das Signal KILL schicken| kIll| |
- | |s|Alle gemounteten Dateisysteme syncen| | + | |s|Alle gemounteten Dateisysteme syncen| Sync| |
- | |u|Alle Dateisysteme umounten| | + | |u|Alle Dateisysteme umounten| Umount| |
- | |b|System _sofort_ rebooten| | + | |b|System _sofort_ rebooten| reBoot| |
- | |o|System _sofort_ ausschalten| | + | |o|System _sofort_ ausschalten| powerOff| |
+ | |k|Alle Prozesse diese 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' | sysctl -w 'kernel.sysrq=1' |