19.04.2023

Linux System

Linux Tastenkombinationen
Konfigurations-Dateien und Verzeichnisse unter Linux
System Anpassung
Systemreparatur
Bootmanager - Grub2/Grub/LiLo
Hardwareerkennung
Paket-Verwaltung
Init-System SysV-Init, Systemd, Upstart, Busybox u.a.
System Protokollierung - syslog
PAM Zugriffssteuerung
Admin-Rechte-Steuerung
Kernel 2.4 | 2.6
Linux Intrusion Detection System (LIDS)
User Mode Linux UML
Dateisysteme
Drucken unter Linux
Sound konfigurieren
Partition kopieren
IPX Protokoll
SoftwareRAID
Netzwerk
Bluetooth
X-Server und Desktops
64Bit und 32Bit auf einem System
ACPI System einrichten
Shared Libraries
Linux Console
Jobs mit cron automatisieren
PCMCIA
ISDN und Capi
VNC-Server einrichten
Verschlüsselter Zugriff auf Ressourcen übers Netzwerk
Festplatten Überwachen mit S.M.A.R.T
Linux Systemhilfe richtig verwenden
sudo konfigurieren
Installation aus den Sourcen
SCSI Emulation für ATAPI Geräte einrichten
cloop (Komprimiertes Loopback Device) einrichten
Übersicht ext2 / ext3 Zusatzflags
Versionsverwaltung von Dateien
SSHFS einrichten
Linux unter VMware
sonstiges

Seitenanfang

Kernel 2.4 | 2.6

Kernel 2.6
Initrd
Kernel SysRequest
Kernel 2.4
Kernel Patch einspielen
Framebuffer-Console einrichten

Kernel Konfigurationsdatei

/etc/kernel-pkg.conf oder /etc/kernel-img.conf
Optionen
"debian revision number" bei jedem neuen Kernel erhöhen
- debian := 1.0 - Revisionsnummer des paketes, standardwert ist 1.00. es kann die Umgebungsvariable debian_revision benutzt werden
- image_in_boot: - wenn sie diese Variable auf TRUE setzen, wird der Kernel im Verzeichnis /boot/ abgelegt und ein entsprechender symbolischer Link angelegt, anstatt wie sonst üblich den Kernel direkt in das „root-“Verzeichnis (/) zu kopieren. Dies kann auch über die umgebungsvariable image_in_boot gesetzt werden.
- kimage: typ des kernel-images, zum Beispiel zImage oder bzImage, standardwert ist bzImage. dieser Wert kann über die Umgebungsvariable image_type gesetzt werden

zusätzliche Pakete, um einen neuen Kernel zu übersetzen, dies sind:
gcc libc6-dev binutils make gzip shellutils grep bin86 gawk libncurses5-dev

Wenn das Kommando make menuconfig zur Kernel-Konfiguration benutzt werden soll muss das Paket libncurses5-dev installiert sein.

rdev /boot/vmlinuz zeigt Root Partition des Kernels an
rdev /boot/vmlinuz /dev/hdc2 ändert die Root Partition auf hdc2
depmod -a modules.dep erneuern, wenn es beim laden von Modulen zu Fehlern kommt wie z.B. »Symbole fehlen«
lsmod geladene Module anzeigen
modprog "Modul" Modul laden
rmmod "Modul" Modul entladen

Kernel-Dämon "kerneld" um den Daemon nutzen zu können, muß unter "General Setup" System V IPC und "Loadable Module Support" Kernel Modul loader ausgewählt werden
kerneld muss dann noch in der rc-Datei gestartet werden.Wenn ein Modul nicht von Hand, sondern durch den kerneld geladen wurde, erscheint es bei der Auflistung mit lsmod mit dem Zusatz (autoclean). Das bedeutet, daß der kerneld das Modul wieder entfernen wird, wenn es länger als eine Minute nicht gebraucht wurde.
Gleiche Aufgabe wie kerneld macht auf neueren Systemen kmod

Seitenanfang

Kernel 2.6

Konfigurationsdateien

/usr/src/<Kernel-Version>/.config - Kernel Konfigurationsdatei, enthält alle Parameter mit denen der neue Kernel übersetzt wird.

Kernel mit Module und Initrd erstellen und installieren.

make all && make modules_install
mkinitramfs -o /boot/initrd.img-2.6.xx 2.6.xx
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinux-2.6.xx

danach noch die /boot/grub/menu.lst editieren und den neuen Kernel eintragen. Danach den Bootsector neu schreiben und der Kernel ist eingerichtet.

grub-install /dev/sda2
dd if=/dev/sda2 bs=512 count=1 of=/media/sda1/linux.sec

im Beispiel liegt der Bootsector auf /dev/sda2 und dieser wird dann in eine Datei geschrieben damit er über den Windows Bootmanager geladen werden kann.

mount -t sysfs none /sys Gerätetreiber nach /sys mounten
echo -n "disk" > /sys/power/disk Rechner in Syspend-to-Disk schalten
tune2fs -0 dir_index ext2/ext3 Verzeichnisindex nachträglich aktivieren
modprobe -c modul zeigt für welches Device ein Modul verantwortlich ist
   
Befehl Beschreibung
Konfiguration erstellen
make defconfig erstellt eine Standardkonfiguration, je nach Prozessorarchitektur
make config Kernel konfigurieren im Textmodus
make menuconfig Kernel konfigurieren im Grafik-Textmodus
make gconfig Kernel konfigurieren im Grafikmodus unter Gnome (GTK)
make xconfig Kernel konfigurieren im Grafikmodus unter KDE (QT3)
make oldconfig Konfiguration eines alten Kernels übernehmen
make localmodconfig Konfiguration auf Basis des laufenden Kernels, alle laufenden Module werden mit erzeugt, die inaktiven Module müssen von Hand in der Konfiguration aktiviert werden (ab 2.6.32)
make localyesconfig Konfiguration auf Basis des laufenden Kernels, alle laufenden Module werden aber in den Kernel integriert
Kernel/Module kompilieren
make erzeugt ein bzImage und ein unkomprimiertes Kernel-Image (vmlinux) sowie die Module
make -j6 Compiler wird bis sechsfach parallel gestartet bei einem QuadCore System werden alle Kerne ausgelastet.
make V=1 wie make jedoch mehr Infos beim kompilieren des Kernels
make all kompiliert Kernel und Module
make kpkg  
make modules erstellt die Module des Kernels
Kernel/Module installieren
make modules_install installiert die erzeugten Module nach /lib/modules/<Kernel Version>
   
bereinigen
make clean entfernt die beim kompilieren entstandenen Dateien
make distclean entfernt die beim kompilieren entstandenen Dateien, sowie die Konfigurationsdatei
   
sonstiges
make help zeigt alle make Ziele an.
   
   

entladen der Module (durch rmmod -f) kann verhindert werden.
Unter Documentation/Changes Neuerungen nachlesen.
Module haben eine neue Datei-Erweiterung .ko (kernel object).
Neue Modul-Init Tools unter ftp://ftp.kernel.org/pub/linux/kernel/people/rusty/modules/ unter Sarge sind die neuen Modutools schon enthalten. Ob die neuen Tools installiert sind erkennt man unter /sbin/insmod.old und /sbin/modprobe.old, die .old Funktionen kommen automatisch zum Einsatz, wenn ein 2.4-Modul geladen wird.
Bei der Installation der Modul-Tools aus den Quellen, kann man die .old Dateien mit einem "make moveold" automatisch erzeugen. Neue Konfigurationsdatei /etc/modprobe.conf die die alte /etc/modules.conf ersetzt.

Taskscheduler Tools

apt-get install module-init-tools
Seitenanfang

Initrd Kernel Parameter

anstellen von root=/dev/sda2 kann man auch LABEL=debian (Label entspricht den Volume Namen) angeben. Ein Script im initrd muss Labelangaben in den Blockdevice Namen umwandeln, das ermöglicht bei Änderung der Partitionierung der Disk einen flexieblen Umgang.

- initrd Image für das laufende System erstellen

mkinitramfs -o /boot/initrd.img-$(uname -r)

- initrd in das aktuelle Verzeichnis entpackens

zcat /boot/initrd.img-2.6.22 | cpio -idmv

- ein paar Sachen aus dem init Script auskommentieren

#maybe_break mount
#log_begin_msg "Mounting root file system..."
#. /scripts/${BOOT}
#parse_numeric ${ROOT}
#mountroot
#log_end_msg

maybe_break bottom
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom"
run_scripts /scripts/init-bottom
[ "$quiet" != "y" ] && log_end_msg

/bin/sh

# Move virtual filesystems over to the real filesystem
#mount -n -o move /sys ${rootmnt}/sys
#mount -n -o move /proc ${rootmnt}/proc
#
#while [ ! -x ${rootmnt}${init} ]; do
#       panic "Target filesystem doesn't have ${init}"
#done

- geänderte initrd neu erstellen

find . | cpio -o -H newc | gzip -c >/boot/initrd.img-2.6.22
Seitenanfang

Initrd

Initrd Kernel Parameter

-erstellen eines Kernels und initrd als .deb Paket (make-kpkg ist im Paket kernel-package enthalten)

make-kpkg kernel-image --initrd && make modules-image

- erstellen eines initrd Images, unter Debian brauch nur die Kernelversion angegeben werden.

mkinitramfs -o /boot/initrd.img-2.6.23 2.6.23.9

ein initrd Image kann auch mit mkinitrd (veraltet) erstellt werden, da im Paket initrd-tools enthalten ist.

apt-get install initrd-tools
mkinitrd -o /boot/initrd.img-2.6.23 2.6.23.9

- Installation der Pakete um initrd zu erstellen

apt-get install initramfs-tools

Konfigurationsdatei /etc/initramfs-tools/initramfs.conf

Seitenanfang

Kernel SysRequest

Wenn der Kernel mit der Option CONFIG_MAGIC_SYSRQ übersetzt wurde, ist die Datei /proc/sys/kernel/sysrq vorhanden. Enthält die Datei eine null ist SysRequest deaktiviert und mit einer eins ist es aktiv.

echo 1 > /proc/sys/kernel/sysrq

Beispiel für eine Forkbombe, an der Console oder im Terminal eingegeben, legt sie den Rechner lahm.

_(){ _|_& };_

mit der folgenden Tastenkombination kann man den Rechner wiederbeleben. Taste ALT + DRUCK halten und der Reihe nach die Tasten r e i s u b im Abstand von Sekunden drücken. Auf der Konsole wird jede Aktion bestätigt. Wenn ein X11 Programm hängt hilft meist schon ALT + DRUCK + k.

Taste Funktion Funktion freischalten
sicherer Reboot
r X11 Keyboard entfernen 4
e alle Prozesse außer init beenden 64
i alle Prozesse außer init abschießen 64
s Dateisystem Puffer auf Platte schreiben 16
u Dateisystem read-only remounten 32
b Reboot 128
weitere Funktionen
k alle Prozesse im aktuellen Terminal beenden 4
f speicherfressende Prozesse killen 64
0 - 9 Log Level setzen 2
o System ausshalten 128
l m p q t w diverse Debug-Informationen dumpen 8
c Reboot via kexec 8
n Priorität von Echtzeit-Tasks verändern 256

 

Seitenanfang

Kernel 2.4

- Kernel Signatur prüfen
gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E Schlüsselbund erstellen
gpg --verify linux-2.4.22.tar.bz2.sign linux-2.4.22.tar.bz2 Signatur des Kernels prüfen

- Kernel entpacken

cd /usr/src; tar xvjf /home/user/kernel/linux-2.4.22.tar.bz2 -C /usr/src

- Link erstellen

ln -s linux-2.4.22 linux

make config - konfigurationsdatei erzeugen
make menuconfig - textbasierend
make xconfig - unter x11
make dep - Abhänigkeiten prüfen
make clean - räumt vom Compilieren noch übrig gebliebene Dateien von der Platte
make mrproper - entfernt alle temporären Dateien die beim erstellen des Kernels übriggeblieben sind, die Konfigurationsdatei .config wird auch mit entfernt!!
make bzImage - erstellt den kernel unter /usr/src/kernel-source-2.x.x/arch/i386/boot/ oder
make bzlilo - kopiert den kernel nach /vmlinuz und benennt vorher den schon vorhandenen kernel in vmlinuz.old um. danach wird automatisch lilo aufgerufen und somit steht der kernel dann ab dem nächsten neustart zu verfügung.
make -s bzImage - bei einem so übersetzten kernel werden lediglich warnungen und fehlermeldungen des kernels beim systemstart ausgegeben.
make dep && make clean && make bzImage - führt die Befehle hintereinander aus, wenn ein Fehler auftritt, wird unterbrochen

make vmlinux && modules && modules_install

/usr/src/linux/vmlinux und /usr/src/linux/System.map nach /boot kopieren und die Endung anpassen je nach Kernel
z.B. vmlinux-2.2 und System.map-2.2 da die System.map für jeden Kernel anders ist, je nach Einstellung beim erzeugen des Kernels.
Diese Variante ist für neuere Kernels nicht geeignet, da der Kernel zu gross ist.

- Das Kompilieren kann man beschleunigen indem man bei einem Mehrprozessor-System die Option "make -j4 xxx" benutzt.

depmod -a 2.x.x erstellt eine aktuelle modules.dep, falls beim laden von modulen probleme auftreten (modules.dep - abhängigkeiten)

- Konfiguration des alten Kernels auf den neuen Kernel übertragen, dazu muss die Datei ".config" in das Verzeichnis des neuen Kernels kopiert werden.
Beispiel:

cd /usr/src/
ln -s linux-2.4.new linux
cp linux-2.4.old/.config linux
cd linux
make oldconfig

- Information zu Modulen erhalten

modinfo "Modulname"
Seitenanfang

Kernel Patch einspielen

gzip -d patch-2.4.xx.gz | patch -p0

oder

bzip -cd patch-2.4.xx.bz2 | patch -p0

der Parameter "-p0" bedeutet, das alle Verzeichnisebenen, die im Patch-File angegeben sind, so erhalten bleiben wie sie sind. Einen Blick in die Datei patch-2.4.xx zeigt die Verzeichnisebenen.
Wird z.B. der Parameter "-p1" angegeben, wird die erste Verzeichnisebene bei der Pfadangabe abgeschnitten, je nachdem in welchem Verzeichnis man den Patch anwendet.

mit der Patchoption "--dry-run" kann man einen Testlauf starten.

ACPI Kernelpatch einspielen

  1. Entpacken des diff-Files
    gzip -d acpi-xxx-2.4.20.diff.gz
  2. Nun in das Kernel-Verzeichnis wechseln
    cd /usr/src/linux
  3. Jetzt folgt das Patchen des Kernels
    - Testdurchlauf des Paches
    patch --dry-run -Np1 < acpi.patch

    - Patchen des Kernels

    patch -Np1 < acpi.patch

Probleme mit ACPI

wenn solche Meldungen beim Booten des Rechners angezeigt werden

ASUS P4B266 detected: force use of acpi=ht
ACPI: Interpreter disabled.

dann ist das Board auf einer Blacklist für ACPI Support vertreten, dies kann man in der Datei
/usr/src/linux/arch/i386/kernel/dmi_scan.c nachsehen, oder ändern.
Die Bootoption acpi=force kann auch helfen, wenn der Rechner auf der Blacklist ist.

Eintragungen /etc/modules.conf

alias char-major-10-134 apm
alias char-major-10-135 rtc
alias char-major-10-175 agpgart
alias char-major-10-195 nvdriver
Seitenanfang

Framebuffer-Console einrichten

apt-get install fbset fblogo oder netpbm

(je nach Kernelversion)

Kernel 2.4
Console drivers

Kernel 2.6
Device Drivers | Graphics support
Einstellungen im Kernel für VESA Support
[*] VESA VGA graphics support

Console display driver support
[*] Video mode selection support
<*> Framebuffer Console support

Funktioniert mit jeder Karte die VESA 2.0 unterstützt. VESA Treiber hat einige Nachteile, Grafikmodus kann nach dem Booten nicht mehr geändert werden, läuft nicht als Modul, nur VESA-Modi aus der Tabelle werden mit 60Hz unterstützt.

Kernelparameter in der /etc/lilo.conf oder /boot/grub/menu.lst

vga=normal		Framebuffer deaktiv
vga=0x317		1024x786 16Bit VESA 2.0 Treiber

Linux Start-Logo Kernel 2.4 /usr/src/linux/include/linux/linux_logo.h
Logo kann man mit "fblogo grafik.png linux_logo.h" erstellen.

Linux Start-Logo Kernel 2.6 /usr/src/linux/drivers/video/logo/logo_linux_clut224.ppm
Logo im Netpbm-Format (Debian Paket netpbm) die Grafik muss weniger als 224 Farbe haben

- Logo aus einer PNG Datei erstellen

pngtopnm grafik.png | pnmtoplainpnm > \
/usr/src/linux/drivers/video/logo/logo_linux_clut224.ppm

Screenshot einer Framebuffer-Console erstellen

- der Inhalt von /dev/fb0 muss in eine Datei kopiert werden, dazu muss man die Anzahl der zu kopierenden Bytes berechnen. Bei einer Auflösung von 1024 x 768 und 24 Bit sind das 1024*768*3=2359296, bei 800 x 600 und 16 Bit sind das 800*600*2=1601200
dd if=/dev/fb0 of=24bit.raw bs=2359296 count=1
die RAW-Datei kann man mit convert vom imagemagick Paket in eine png Datei umwandeln
convert -depth 8 -size 1024x768 rgb:24bit.raw 24bit.png

Framebuffertreiber für einen Intel OnBoard Grafikchip

/usr/src/linux/Documentation/fb/intel810.txt
/usr/src/linux/drivers/video/modedb.c

Modul laden

modprobe agpgart
modprobe i810fb vram=2 xres=1024 yres=768 bpp=16 accel=1 mtrr=1
# lilo.conf
append="video=i810fb:vram:2,xres:1024,yres:768,bpp:16,accel:1,mtrr:1"