101-systemarchitektur
101.1 - Hardware Einstellungen ausfindig machen und anpassen
Allgemein
Der Kernel stellt die Schnittstelle zwischen Userspace und Hardware dar.
Linux ist modular aufgebaut. D.h. Komponenten können zur Laufzeit geladen werden. (keine/weniger Reboots erforderlich)
modular != monolithisch
Monolithische Kernel müssen bei Änderungen komplett ersetzt werden!
Es geht also darum die richtigen Module in den Kernel zu laden, um die Hardwarekomponenten korrekt anzusprechen.
Kernel Version
uname -r 2.6.35.8
/lib/modules/2.6.35.8# ls build modules.builtin modules.inputmap modules.pcimap net extra modules.ccwmap modules.isapnpmap modules.seriomap kernel modules.dep modules.ofmap modules.symbols modules.alias modules.ieee1394map modules.order modules.usbmap
/usr/src# ls -ll total 1 lrwxrwxrwx 1 root src 21 Mar 31 18:17 linux -> linux-source-2.6.35.8 drwxr-xr-x 25 root root 968 Nov 17 01:28 linux-source-2.6.35.8
Versionierung
2.6.35.8-tobis_finest
Erste Zahl: Major Release - nur "revolutionäre" Änderungen
Zweite Zahl: Minor Release - wesentliche Änderungen, nicht unterschätzen!
Wichtig: Gerade Zahlen = Stable 2.4, 2.6 Ungerade Zahlen = Dev 2.5, 2.7
Dritte Zahl: Patch-Level - Kleine Änderungen und Bugfixes
Vierte Zahl+Text:Kommentar - kann beim Compilieren des Kernels frei gewählt werden (im Makefile)
lsmod
Status der geladenen Module
Greift auf /proc/modules zu (nur besser lesbar)
lsmod Module Size Used by freq_table 2007 2 cpufreq_stats,cpufreq_ondemand
modinfo
Details zu einem Modul anzeigen
Die einzelnen Module liegen unter
modinfo /lib/modules/2.6.35.8/kernel/drivers/ acpi/ crypto/ idle/ message/ platform/ telephony/ ata/ firewire/ ieee1394/ mfd/ power/ uio/ block/ firmware/ infiniband/ misc/ rtc/ usb/ bluetooth/ gpu/ input/ mmc/ scsi/ uwb/ char/ hid/ leds/ net/ serial/ video/ clocksource/ hwmon/ macintosh/ parport/ spi/ w1/ connector/ i2c/ md/ pci/ ssb/ watchdog/ cpufreq/ ide/ memstick/ pcmcia/ staging/
Zum Beispiel:
filename: /lib/modules/2.6.35.8/kernel/drivers/cpufreq/freq_table.ko license: GPL description: CPUfreq frequency table helpers author: Dominik Brodowski <linux@brodo.de> depends: vermagic: 2.6.35.8 SMP mod_unload CORE2
Parameter
-V --version
-F --field Gibt nur ein spezielles Feld aus
z.B.
modinfo /lib/modules/2.6.35.8/kernel/drivers/cpufreq/freq_table.ko -F filename /lib/modules/2.6.35.8/kernel/drivers/cpufreq/freq_table.ko ...
-a Author des Moduls
Könnte auch per -F author abgefragt werden
-d Description
-l Lizenz
-p mögliche Parameter (falls vorhanden)
insmod
Module zur Laufzeit laden
Erwartet den kompletten Pfad + eventuelle Optionen! KEINE relative Angabe!
Abhängigkeiten werden geprüft, jedoch NICHT automatisch aufgelöst!
Im Erfolgsfall gibt insmod keine Bestätigung aus
Bei Fehlern meckert es ganz normal nach stdout
rmmod
Module aus dem Arbeitsspeicher entladen.
Keine absolute Pfadangabe möglich, da rmmod mit /proc/modules arbeitet.
Der Pfad DARF wie gesagt NICHT mitgegeben werden!
Wie bei insmod gibt es im Erfolgsfall keiner Rückmeldung.
Bei Fehlern verhält es sich ebenfalls gleich wie insmod.
modprobe
modprobe ist eine Kombination aus insmod und rmmod
Der Vorteil von modprobe ist, dass es Abhängigkeiten auflöst.
D.h. erkennt was fehlt, und dies dann mitläd.
Pfadangaben sind nicht notwendig.
modprobe greift auf uname -r zurück um den Pfad zum richtigen Kernel bzw. dessen Module zu finden.
Auch modprobe gibt im Erfolgsfall keine Meldung aus.
Es können mehrere Module mit Leerzeichen getrennt angegeben werden.
Parameter
-v verbose
-V Version
-a all
-t type
#Es wird versucht alle Module des Typs net zu laden. modprobe -at net
-r Modul entfernen
# Vorsicht, mit folgendem Befehl! modprobe -r ext3 reiserfs
-l Auflisten zeigt alle Module, in den Kernel geladen werden können
VORSICHT: lsmod != modprobe -l (lsmod listet alle GELADENEN Module auf!)
#Zeigt alle ladbaren Module an modprobe -l #Zeigt alle ladbaren Module des Typs Filesystem an modprobe -lt fs
depmod
Zeigt Abhängigkeiten von Modulen an
Abhängigkeiten werden in der Datei modules.dep festgehalten.
/lib/modules/2.6.38.8-tobis-finest/modules.dep
Ohne Optionen erstellt depmod eine neue modules.dep / fragt alle Abhängigkeiten ab
Paramter
-n Trockenlauf, Ausgabe nach stdout
-A Schnelldurchgang, prüft ob es überhaupt Module gibt die neuer sind als die in modules.dep
Modulkonfigurationsdateien
modules.dep
/lib/modules/2.6.32.8-tobis-finest/kernel/.../Abhängiges-Modul:/.../Abhängigkeit
Abhängiges-Modul:Abhängigkeit
modules.conf modprobe.conf modprobe.conf.local
Steuern das Verhalten von modprobe.
Liegen unter /etc
Sind in neuern Distros nicht mehr zu finden.
So gibt es unter debian nun den Ordner modprobe.d
In /etc/modules (Debian) wird definiert welche Module beim Start geladen werden
Die Datei modprobe.conf.local wird nicht von GUIs beeinflusst und eigenet sich deshalb für manuelle Anpassungen.
Man kann z.B. IRQ und DMA festlegen
options 3c505 io=0x300 irq=10 # Gibt der 3Com LAN Karte den I/O 0x300 den Interrupt 10
Außerdem können aliases definiert werden
alias eth0 3c505 modprobe eth0
Unter Debian liegen die Aliases aktuell unter /etc/modprobe.d/aliases.conf !
Weitere Infos zu modprobe.d
Verzeichnisse und Dateien des Kernels
Quellen des Kernels
/usr/src/2.6.38.8-tobis-finest/
Zusätzlich zeigt der Softlink auf diesen Ordner
/usr/src/linux
Statischer Teil des Kernels
Der statischer Teil liegt unter /boot
Der Softlink /boot/vmlinuz zeigt auf den tatsächlichen Namen.
Je nach verwendetem Kernel / Distribution gewisse Abweichungen!
Module des Kernels
Die Module liegen unter /lib/modules
Es gibt für jeden installierten Kernel einen Unterordner, z.B.
/lib/modules/2.6.38.8-tobis-finest
Kernel vor Version 2.4: Hier lagen die Module direkt in diesem Verzeichnis
Kernel ab Version 2.4: Seit 2.4 liegen die Module im Unterverzeichnis kernel. Gefolgt von den Unterverzeichnissen der einzelnen Kategorien.
lenny:~# cd /lib/modules/2.6.26-2-686/kernel/ lenny:/lib/modules/2.6.26-2-686/kernel# ls arch crypto drivers fs lib net sound
(Komischerweise gibt es den Ordner auf meinem Vserver nicht QQ)
Zu erwähnen ist nochmals, dass die bereits angesprochene Datei modules.dep auch hier zu finden ist.
Die Module selbst sind kompilierte Dateien mit den Endungen .o wie Object (Version 2.4), bzw. .ko für Kernel-Object (seit Version 2.6)
Gerätedateien für HDDs und CD-ROMs
Physikalische und logische Laufwerke werden als Gerätedatei unter /dev dargestellt.
Das sind KEINE gewöhnlichen Ordner / Dateien, sondern sog. Präsentationen des Kernels.
--> Die Geräte wurden ins Userland "exportiert".
Bei älteren Kernels war die präsentation statisch. D.h. es wurden Geräte abgebildet, die garnicht im System vorhanden waren.
IDE Geräte
Werden normal als /dev/hd* dargestellt.
Der dritte Buchstabe gibt Info zur Position des Geräts am Controller aus. (Es kann jedoch nicht zwischen Gerätetypen unterschieden werden!)
Die meißten Controller haben 2 Kanäle: Primary und Secondary IDE
Jeweils können 2 Geräte angeschlossen werden. (Master+Slave)
/dev/hda #Primary Master /dev/hdb #Primary Slave /dev/hdc #Secondary Master /dev/hdd #Secondary Salve
Raid-Controller verwalten mehr Geräte, sind jedoch nicht prüfungsrelevant!
lenny:/dev# ls -ll | grep hd lrwxrwxrwx 1 root root 3 3. Apr 01:26 cdrom -> hdc lrwxrwxrwx 1 root root 3 3. Apr 01:26 dvd -> hdc brw-rw---- 1 root disk 3, 0 3. Apr 01:26 hda brw-rw---- 1 root disk 3, 1 3. Apr 01:26 hda1 brw-rw---- 1 root disk 3, 2 3. Apr 01:26 hda2 brw-rw---- 1 root disk 3, 5 3. Apr 01:26 hda5 brw-rw---- 1 root cdrom 22, 0 3. Apr 01:26 hdc lrwxrwxrwx 1 root root 4 3. Apr 01:26 root -> hda1
SCSI Geräte
Werden normal als /dev/sd* dargestellt.
Der Rest ist analog zur IDE Sektion.
Gerätedateien für Partitionen
Aufgrund der Beschaffenheit des MBR (Master Boot Record) können auf einer Festplatte nur maximal vier primäre Partitionen erstellt werden.
Es gibt primäre und erweiterte Partitionen.
Primäre Partitionen sind direkt ansprechbar.
Erweiterte Partitionen
Es KANN nur eine erweiterte Partition pro Festplatte geben!
Erweiterte Partitionen dienen als Container für logische Partitionen.
SCSI und SATA: Erweiterte Partitionen auf SCSI / SATA Devices können bis zu zwölf logische Partitionen beinhalten.
IDE: In der erweiterten Partition können bis zu 60 logische Partitionen erstellt werden. Das ergibt die Summe von 63 Partitionen.
Ordnung der Partitionen
Primäre und erweiterte Partitionen werden von 1-4 nummeriert.
Die erste logische Partition erhält IMMER die Ordnungszahl 5!
lenny:/dev# cat /proc/partitions major minor #blocks name 3 0 2097152 hda #Die Platte als solches 3 1 1943833 hda1 #Erste primäre Partition 3 2 1 hda2 #EINZIGE erweiterte Partition 3 5 152586 hda5 #Erste logische Partition
Es sind also 2 Partitonen nurzbar... hda1 und hda5
Ob IDE oder SCSI macht bei der Partitioniertung keinen Unterschied!
WICHTIG: Es hat NICHTS miteinander zu tun, dass es max. vier IDE Geräte gibt.
Ressourcen für Hardware Komponenten
Die aktuelle Konfiguration von Hardwarekomponenten liegt unter /proc
Der Inhalt bildet die Parameter des Kernels ab.
Beschreibung von PC-erfahrung.de
Interrupts
/proc/interrupts - Zeigt die belegten IRQ-Interupts an
#Informationen üer die verwendeten Interrupts lenny:~# cat /proc/interrupts CPU0 0: 616666 XT-PIC-XT timer 1: 326 XT-PIC-XT i8042 2: 0 XT-PIC-XT cascade 5: 3352 XT-PIC-XT Intel 82801AA-ICH, eth2 9: 1836103 XT-PIC-XT acpi, eth1 10: 1859703 XT-PIC-XT ehci_hcd:usb2, eth0 12: 22456 XT-PIC-XT i8042 14: 58162 XT-PIC-XT ide0 NMI: 0 Non-maskable interrupts LOC: 0 Local timer interrupts RES: 0 Rescheduling interrupts CAL: 0 function call interrupts TLB: 0 TLB shootdowns TRM: 0 Thermal event interrupts SPU: 0 Spurious interrupts ERR: 0 MIS: 0
I/O Ports
/proc/ioports - Zeigt den Speicherbereich ("base address") bzw. die I/O-Ports an, die vom System genutzt wird
#Inforatmionen über die verwendeten I/O Adressen lenny:~# cat /proc/ioports 0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0064-0064 : keyboard
DMA
/proc/dma - Zeigt Einstellungen bzgl. DMA an
lenny:~# cat /proc/dma 2: floppy 4: cascade
DMA - Direct Memory Access Steht für direkten Speicherzugriff auf die Festplatte, der über einen separaten Bus erfolgt. Dies beschleunigt den Datentransfer der Festplatte und sorgt dafür, dass der Hauptprozessor entlastet wird. DMA wird mittels hdparm aktiviert bzw. deaktiviert.
/proc/pci
/proc/bus/pci
bzw. /proc/pci (alte Kernel) - Verzeichnishirachie für Informationen zu den PCI Komponenten.
SCSI Geräte
bl01:/home/homaar# cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware, Model: VMware Virtual S Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 /proc/sda
- Immer in der Reihenfolge wie am Bus gefunden - egal an welchem Port gesteckt!
- Zum Testen kann ein USB Stick verwendet werden!
Der PCI-Bus
- Peripheral Component Interconnector
- Auch onboard Komponenten können PCI sein!
- ohci = compaq, uhci = intel
bl01:/home/homaar# lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01) 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01) 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
- 3 Stufen von verbose
lspci -vvv
- lspci arbeitet mit dem Verzeichnis /proc/bus/pci zusammen
bl01:/home/homaar# lspci -t #tree Darstellung -[0000:00]-+-00.0 +-01.0-[01]-- +-07.0
USB - Universal Serial Bus
- USB wird erst ab Kernel 2.2.18 unterstützt
- USB 2.0 wird erst ab Kernel 2.4 unterstützt
- USB 1.1 12 MB/s
- Es gibt 2 Varianten von USB 1.1
- OHCI (Open Host Controller Interface)
- usb-ohci.o
- UHCI (Universal Host Controller Interface)
- usb-uhci.o
- OHCI (Open Host Controller Interface)
- Unter Linux muss der passende Treiber zum jeweiligen Typ geladen werden
- USB 2.0 überträgt bis zu 480MB/s
- Alle beteiligten Geräge müssen dafür USB 2.0 können
- Der Standard lautet EHCI (Enhanced Host Controller Interface)
USB - Klassen
- Nach dem Treiber für den Controller muss der Treiber für die Geräteklasse geladen werden
- Maus / Tastatur - hid.o (Human Interface Devices)
- usb-storage.o (WICHTIG FÜR DIE PRÜFUNG!)
- Geladene Module des Systems anzeigen
lsmod | grep usb
- Informationen über USB-Geräte
root@bt:/home/homaar# lspci 00:12.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller 00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
root@bt:/home/homaar# lsusb Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub #Tree Form root@bt:/home/homaar# lsusb -t Bus# 1 `-Dev# 1 Vendor 0x1d6b Product 0x0002 Bus# 2 `-Dev# 1 Vendor 0x1d6b Product 0x0002 `-Dev# 3 Vendor 0x058f Product 0x6387
- Wichtig bei der Suche nach Treibern und Informationen ist die Vendor- und Produktnummer
#Zeit genaue Informationen zu einem speziellen Gerät anhand der Vendor- und Produktnummer an root@bt:/home/homaar# lsusb -d 0x1d6b:00001 -v Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 64 idVendor 0x1d6b Linux Foundation idProduct 0x0001 1.1 root hub bcdDevice 2.06 iManufacturer 3 Linux 2.6.35.8 ohci_hcd iProduct 2 OHCI Host Controller ...
USB Module automatisch Laden
- Zwei Verschiedene Mechanismen
- usbmgr
- kann ausschließlich USB-geräte verwalten
- /etc/usbmgr/usbmgr.conf #IDs und korrospondierende Treibermodule
- Die Datei usbmgr.conf muss in zyklischen Abständen aktualisiert werden
- /etc/usbmgr/preload.conf #Liste mit Treibern zum Laden beim Systemstart
- /etc/usbmgr/host #Namen des Treibers für den Host (usb-ohci,usb-uhci oder usb-ehci)
- hotplug
- Verwaltet USB PCMCIA und FireWire
- Ist usbmgr zu bevorzugen
- /etc/hotplug
- USB-Geräte nicht einfach ziehen! sync -> umount !!!
- usbmgr
- Hint zum laden von USB Modulen mit alten Kernels siehe "Das USBDevFS-Dateisystem" im Linux-Praxis Link
Cold Plug & Hotplug
- Coldplug: PS2, SATA,
- Hotplug: PCMCIA, FireWire, USB
- /etc/hotplug (nochmal nachfragen)
Meine unbeantworten Posts in #Debian can anyone tell me a link / hint about auto load of usb devices in newer releases? i only find old usbmgr / hotplug stuff can anyone tell me why i can't find /etc/hotplug/* - is usbmgr / hotplug replaced by another program? i talk about usb hotplug and how it works
SysFS - Das virtuelle Dateisystem
- Informationen über Treibermodule
- /sys
- ähnlich wie /proc
- wird dynamisch generiert
root@bt:/sys# ls -l total 0 drwxr-xr-x 28 root root 0 2011-04-27 01:33 block drwxr-xr-x 20 root root 0 2011-04-27 01:33 bus drwxr-xr-x 59 root root 0 2011-04-27 01:33 class drwxr-xr-x 4 root root 0 2011-04-27 00:42 dev drwxr-xr-x 11 root root 0 2011-04-27 01:33 devices drwxr-xr-x 4 root root 0 2011-04-27 01:33 firmware drwxr-xr-x 4 root root 0 2011-04-27 01:33 fs drwxr-xr-x 7 root root 0 2011-04-27 01:33 kernel drwxr-xr-x 136 root root 0 2011-04-26 23:33 module drwxr-xr-x 2 root root 0 2011-04-27 01:33 power
udev, hald und dbus
- hald - Hardware abstraction layer deamon
- Information an dbus wenn Wechsellaufwerke angeschlossen werden
- udev - Gerätemanager, der in modernen Kerneln das virtuelle Verzeichnis /dev verwaltet & dynamisch generiert
101.2 - Das System starten
Allgemeines
- bootstrap -> Stiefelriehmen / Stiefelgurt
- Boot-Strap Problem, Henne-Ei Problem
- Bootvorgang eine Systems BIOS POST -> Bootloader
- Bis zu 4 echte Partitionen
- alles andere sind logische Laufwerke -> erweiterte Partition oder Bit-Slices
- 3 priäre und eine erweiterte Partition
- Der MBR gehört selbst keiner Partition an
- Er ist genau 512 Byte groß
- Befindet sich am Anfang der Festplatte Sektor 0, Spur 0
- endet mit aa55 (55aa wird als aa55 dargestellt)
- Big-Endian / Little-Endian
- Das Big-Endian-Format ist ein Datenformat für die Übertragung oder Speicherung binärer Daten, in denen das höherwertige Byte oder Bit (Most Significant Byte, MSB) an erster Stelle kommt. Ein Big-Endian-System speichert höherwertige Bytes auf den niedrigsten Adressen. Mainframe-Prozessoren, einige RISC-Architekturen und Minicomputer verwenden das Big-Endian-System. In TCP/IP-Netzwerken erfolgt die Byte-Anordnung ebenfalls in Big Endian. Gegensatz: Little Endian.
- !!! Startsektor != MBR !!!
Bootstrap-Loader
- Es ist möglich Optionen beim Systemstart zu übergeben oder in den jeweiligen Konfigurationsdateien
- Es gibt die Möglichkeit Hardware einen anderen IRQ-, DMA-Kanal oder eine andere Adresse zu übergeben
- beim Systemstart in die bash starten (um ohne Passwort zu starten)
- kann in der jeweiligen Config-Datei verboten werden
init=/bin/bash mount -o remount,rw / passwd root
lilo
- /etc/lilo.conf
- Wird die Datei lilo.conf editiert, so muss lilo ausgeführt werden um die Änderungen zu übernehmen
- Parameter die bei jedem Systemstart benötigt werden via append in lilo.conf (mehrere Parameter möglich)
append="ida=nodma apm=off"
grub
- /boot/grub/grub.conf
- Parameter die bei jedem Systemstart benötigt werden in grub.conf
kernel /bzImage-2.6.11 root=/dev/hda2 ide=nodma apm=off
Kernel-Parameter
- Über /etc/modules.conf werden Parameter an Module des Kernels übergeben
- Mögliche Parameter wären:
ide=nodma apm=off (siehe Link unten) acpi=off
Wiki Advanced Power Management
- einem veralteten CD-ROM Laufwerk I/O-Adresse 340 übergeben
options sonycd535 sonycd535=0x340
- Auf diese Weise können jedoch keine Optionen an Kernel übergeben werden die NICHT modular kompiliert sind!
Startprotokollierung
- dmesg liest den sog. Kernel-Ring-Buffer aus
- Kurz nach dem Systemstart lassen sich dort Informationen auslesen
- Da FW im Kernel integriert, wird dieser Buffer nach dem Systemstart überschrieben
dmesg > startup.log dmesg | less
- /var/log/messages -> wenn der Start länger zurück liegt
grep kernel /var/log/messages | less
101.3 - Runlevels / System anhalten / Neu starten
Allgemeines
- Es ist nicht nur möglich das OS herauf oder herunterzufahren, es gibt weitere Abstufungen
- init ist der "Vater aller Prozesse" PID 1
Die Runlevel und ihre Funktionen
Runlevel 0
- schaltet den PC aus
- In allen Distros gleich
Runlevel 1
- Singeluser-Mode
- kein Netzwerk
- keine Multiuser Unterstützung
- Nur zur Wartung/administrativen Zwecken
- In allen Distros gleich
Runlevel 2
- keine Unterstützung für grafische Anmeldung
- Multiuser Funktionalität
- Bei manchen Distros wird in diesem Runlevel das Netzwerk gestartet
Runlevel 3
- spätestens jetzt wird das Netzwerk gestartet
- nicht bei allen Distos gleich: grafische Anmeldung steht nicht immer zur Verfügung
Runlevel 4
- wird von keiner bekannten Distribution genutzt
Runlevel 5
- Das höchste funktionale Runlevel
- Netzwerk, Multiuser-Unterstützung und grafische Anmeldung möglich
Runlevel 6
- reboot
- distributionsübergreifend festgelegt
inittab
- /etc/inittab
- telinit q liest die inittab neu ein!!
# /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
- Hauptkonfigurationsdatei für den init Prozess
# /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot.
- init als solches liegt unter /sbin
- Hier wird definiert in welchen Runlevel der Rechner standardmäßig bootet (0 und 6 sind tödlich!)
# The default runlevel. id:2:initdefault:
- Was passiert wenn CTRL+ALT+DEL gedrückt wird
# What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now #-t1 = 1 Sec. #-r neustarten #-a use /etc/shutdown.allow (jeweils der Loginname pro Zeile)
- http://www.pro-linux.de/kurztipps/2/1391/shutdown-fuer-unprivilegierte-benutzer.html
- Man kann weitere Termminals hinzufügen oder auch welche entfernen
# Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6
- TTY ist eine sehr alte Abkürzung und steht für Teletyper
- Die erste Stelle steht für die Consolen Nummer
- Die zweite Stelle steht für die Runlevel in der die Console gestartet wird
- respawn steht dafür, dass die Console automatisch neu gestartet wird, wenn sie mit kill beendet wurde
- Was tun wenn der Midnight Commander ein Terminal blockiert?
- Passiert z.B. wenn plötzlich ein NFS Laufwerk nicht mehr zur Verfügung steht
- -> per pstree den mingetty Prozess (/sbin/mingetty) suchen und killen. Dann findet der Respawn statt
Verzeichnisse und Dateien des init-Prozesses
- weitere Verzeichnisse / Dateien die der init Prozess ausliest
- Basisverzeichnis der einzelnen init Scripte: /etc/init.d bzw. /etc/rc.d
- Distributionsunterschiede: RedHat - monolythisches init Script, Debian - kleine Einzelscripte
- Init-Scripts können natürlich von Hand ausgeführt werden
- reload = SIGHUB
- $1 ist immer der Übergabeparameter (nach dem man auch suchen kann)
bl01:/~# /etc/init.d/apache2 restart Restarting web server: apache2 ... waiting . bl01:/~# /etc/rc2.d/S19apache2 status Apache2 is running (pid 13297). bl01:/~# head /etc/init.d/apache2 #!/bin/sh ### BEGIN INIT INFO # Provides: apache2 # Required-Start: $local_fs $remote_fs $network $syslog $named # Required-Stop: $local_fs $remote_fs $network $syslog $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Start/stop apache2 web server ### END INIT INFO
- Required-Start/Stop gibt an was gestartet sein muss
- Default-Start gibt die Runlevel an in denen apache2 laufen soll
- Default-Stop gibt an in welchen Runleveln apache2 gestoppt werden soll
- Die Scipts in den jeweiligen /etc/init.d/rcX.d Verzeichnissen fangen mit S = Start und K = Kill an. Gefolgt von der numerischen Reihenfolge
- Diese werden beim eintreten / verlassen des Runlevels abgearbeitet
bl01:/~# ls /etc/rc0.d/ | grep apache K01apache2 bl01:/~# ls /etc/rc2.d/ | grep apache S19apache2
Runlevel wechseln, Herunterfahren, neu starten
- Befehl runlevel:
bl01:/~# runlevel N 2
- sync vermeidet Datenverlust!
- init oder telinit zum Wechseln des Runlevels
- meißtens ist telinit kein eigenständiges Programm mehr, sondern ein Softlink auf init
- init 1 -> wechselt in den Singelusermode
- init 0 -> fährt das System herunter
- init 6 -> Startet das System neu
- Weitere Methoden zum herunterfahren / neu starten sind
- shutdown
- halt
- reboot
- poweroff
- Allerdings sollte nur shutdown verwendet werden, da es sich bei den anderen um Hilfsprogramme von init handelt
- -r reboot
- -h halt
- -t time in Sec.
- -k Konsolenmeldung
- -f kein fsck
- -F fsck erzwingen
- Folgender Befehl startet den PC ohne fsck neu:
shutdown -f -r now