Linux Betriebssystem
Betriebssystemkern Grundlegende Bibliotheken Systemprogramme Oberfläche
Betriebssystemkern Grundlegende Bibliotheken Systemprogramme Oberfläche
-
- 1 / 48
-
Cartes-fiches
Betriebssystemkern
Schnittstelle zur Hardware:
- Prozessor, Speicher, Geräte
Speicherverwaltung
Prozessverwaltung/Scheduler
Geräteverwaltung
Dateisysteme
Unterschied Monolythischer- und Microkernel
Monolythisch: alles (Treiber, Code) in höchster Schutzstufe (Kernel Modus) (hier ist Linux einzuordnen)
Micro:wenig auf höchster Schutzstufe (Kernel Modus) (Treiber usw...)
Kernel Threads, Beispiel SWAP
existieren trotz monolythischer Struktur
Hintergrundtasks, die auf Kernel durchgeführt werden (assynchron, "housekeeping")
SWAP: Hängt direkt mit Memory zusammen
Wie ist Linux aufgebaut
Kernel + weitere (unabhängige) Software
GNU Projekt
gcc / g++ Compiler, libgcc
init System
POSIX Struktur (Datei)
Shell / X11
verschiedene Distributionen (Installierfähige Ausprägung)
Oberfläche in Linux
Shell (Textinterface)
X11 (Grafische Oberfläche), Nutzbar mit Window Manager (KDE, Gnome)
X11 "Grafiktreiber" (Rechtecke)
Philosophie von Linux
ALLES IST EINE DATEI
Universelles Interface
Leicht verknüpfbar
Bootvorgang in Linux
Firmeware Stage --> Bootloader Stage --> Kernel Stage (Common Kernel, Initial Ramdisk) --> Init Stage (rc.sysinit, Runlevel Scripts)
Firmware Stage (1/4)
BIOS
Master Boot Record wird ausgeführt (512 Byte vom Bootmedium)
Boatloader wird gestartet
Bootloader (2/4) + GRUB
Kernel laden und mit Bootinfos versorgen
z.B. LILO
GRUB:
- Firmware lädt GRUB boot sector
- /boot/grub/stage2 über BIOS geladen (mehrere 100kbyte)
- GRUB stellt Komandozeile + Menü bereit
- Ausführen des Befehls: BOOTEN
Kernel (3/4)
Initialisierung:
-CPU Geschwindigkeit und delay loop
Anzeige Hardware
PCI Bus anbinden
Virtual Memory Management
Einkompilierte Treiber initialisieren
Initial Ramdisk
Zugriff for Systemstart
kann Treiber laden (notwendige)
Init (4/4)
Prozessnr 1
Systemstart nach dem Kernel
/etc/inittab
-runlevel (Zustand des OS --> Übergänge bei Zuständen: starten/stoppen von Diensten)
-Systeminitialisierungskomando
runlevel scripts (alt, init Scripte werden nacheinander ausgeführt)
upstart (neu, eigenes Softwaresystem das eigenständig Sachen hochfahren kann, schnelle bootzeiten)
/dev
ALLES IST EINE DATEI
ANsteuerung von Hardware
Treiber Interface = device file (ttyS0, sda, zero)
3 Infos für jedes Device:
-Art des Zugriffs: Block (z.B. Festplatte), Zeichenorientiert (z.B. Tastatur)
- Hauptgerätenummer (major device number)
- Nebengerätnummer (minor device number)
sysfs
neuerung zu /dev
virtuelles Dateisystem
Baum gibt Struktur, Blätter les/schreibbare Pseudodateien
udev
Brücke zwischen /dev und /sys
Prozess läuft mit und legt alles im dev an, was angesteckt wird, quasi "on the fly"
/proc
Schnittstelle zwischen User und Kernel
Virtuelles Filesystem
Funktion: Infos auslesen(über Prozesse), Kernelparameter ändern
Shell Bash Grundlagen
#!/bin/bash Interpreter
STDIN, STDOUT, STDERR: Standards: In, out, error
Redirection: | = Verknüpfung, > Umleitung
Environment
Home directory
Umgebungsvariablen (set/export)
$PATH Ausführungspfad
VFS
nur 1 Dateibaum, alles wird eingehängt mit "mount"
Trennzeichen: /
Dateirechte
owner, group und "andere"
3 Rechte: read, write, execute
Exit Status
exit FUnktion 0-255 Argumente
nur 0 steht für Sucess, Rest für Fehler
Paketmanager
Sinn: Erlauben Distributionsbasiertes Installieren von Binarys
File Archiv + Meta Daten
Herkunftssignierung (Package GPG signing)
YUM
Automatisches Auflösen von Abhängigkeiten
Automatisches Nachladen von benötiger Software bei Installation
Automatische Updates
syslog
Loggingsystem für alle Prozesse
syslogd/klogd sammeln log Messages aller Prozesse und speichern in Dateien (Facilities)
unterteilung nach facility und level (alles was höheres Level hat wird an entsprechende Stelle gesendet)
Zeitgesteuerte Jobs (Cron)
Management
MI S T Mo Wt Kommando
01 * * * * root run-parts
Zeiten, in denen ein Kommando ausgeführt wird
Netwerkbausteine
link (Netzwerkschnittstelle) --> Layer 2 / Layer 1 ISO/OSI
address (protokollabhängige Adressen) --> Layer 3
neighbour (ARP Cache) --> Layer 2
route (Routen) --> Layer 3
rule (Routing Regeln) --> Layer 2
ARP Cache
Rechner will mit IP kommunizieren --> Routingentscheidung --> ARP Request --> Verbindung speichern in ARP Cache --> Schicken an MAC-Adresse
Lokale IP: Mac-Adresse des Users
Remote IP: Mac-Adresse des Routers
links/Interfaces
Loopback (127.0.0.1)
MTU (Maximum Transfer Unit)
Administration via Network
SSH --> Verschlüsselt auf Shell auf anderem Rechner zugreifen
scp --> Verschlüsselt Dateien auf anderen Rechner kopieren
Meldung von public key von System sich ändert --> Man in the MIddle Angriff
Netfilter
Paketfilter im Kernel
3 Funktionsgruppen: filter, nat (umschreiben Adresse), mangle (sonstige Änderungen)
filter: INPUT, OUTPUT, FORWARD
nat: vor (Ziel Ändern), nach (Quelle ändern) routing
Regelliste (Chains pro table)
Pro Regel 1 Target (ACCEPT; DROP/REJECT; DNAT/SNAT/MASQUERADE; LOG/ULOG; MARK; NOTRACK/TARPIT)
Regel: iptables -A FORWARD -s 192.168.1.5 -d 192.168.3.10 -p tcp --dport 80 -j ACCEPT
connection tracking
Statefull firewall
Tabelle, die Kernel hält und Verbindungen trackt --> Pakete nach nadshake erlauben/zuordnen, Kernel schreibt mit
SNAT
Quelladress verändern
Bilden eines Netzwerks hinter einem Router ins Netz mit 1 Adresse
DNAT
Port auf externe IP auf interne IP weitergeben ("Portforwarding")
Dateisystem:ext2
Stadard Linux Dateisystem
Partitionen bis 4TB
Dateinamen bis 255 Zeichen
Block size variable (z.B. 1024 byte), organisiert in Block groups
Superblock/Groupdescriptors werden repliziert
ext2 inode
inode enthält Metadaten (Zeitpunkt der erstellung, verlinkung auf nächsten Datenblock)
3 stufige Verlinkung für große Block
FS Journaling
Konsistenz: Jede Änderung ist Nachvollziehbar
Log wird mitgeschrieben --> Warten bis Daten sicher geschrieben sind --> Änderung ins Dateisystem übertragen vgl DB
ext3
ext2 + Journaling
3 Modi: Journal (alle Daten und metadaten, slow and safe), Ordered (Nur Metadaten + flush, Änderung an Inode geloggt), Writeback (Nur Metadaten)
ext4
EXTENTS
definition von Blockbereichen möglich (große Dateien)
Block based storage
physikal Volume (speichergerät) --> VolumeGroup (Speicherpool) --> Aufteilung in logical Volume (Einzelne Blockdevices)
loopback/loopdevice
loopdevice macht aus Carrier ein Blockdevise