Linux Prinzipien und Programmierung



Ähnliche Dokumente
Dienste und Runlevel. September 2010 Oliver Werner Linux Systemmanagement 1

Tutorial -

Windows 7 Winbuilder USB Stick

systemd Michael secure Stapelberg GPN12, powered by LuaLATEX 1 / 22

Tanuki Service Wrapper 101. JVM Verwaltung mit der Community Edition. Alexander Pacnik Karlsruhe,

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Initramfs - The initial RAM filesystem

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Step by Step Webserver unter Windows Server von Christian Bartl

Netzwerk einrichten unter Windows

Leitfaden zum Sichern einer Festplatte als Image mit der System Rescue CD

Notfall-Wiederherstellung mit der Super Grub Disk

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Installation OMNIKEY 3121 USB

Installationshinweise Linux Edubuntu 7.10 bei Verwendung des PC-Wächter

Artikel Schnittstelle über CSV

Bei der Installation folgen Sie den Anweisungen des Installations- Assistenten.

Backup der Progress Datenbank

Schritt-für-Schritt Anleitung: Windows 7 per USB-Stick installieren

How to install freesshd

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

SAPGUI-Installation. Windows Bit-Edition auf x64 (AMD) und Intel EM64T (nur die Editionen

Linux Prinzipien und Programmierung

Prozesse und Logs Linux-Kurs der Unix-AG

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software

Dokumentation. Erstellung eines bootfähigen USB-Sticks zur Veränderung einer bestehenden Partitionierung

Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

Vorgehensweise bei der Installation Bob50SQL für einen unabhängigen PC.

Lizenzen auschecken. Was ist zu tun?

! " # $ " % & Nicki Wruck worldwidewruck

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Wissenswertes über LiveUpdate

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Installation Linux agorum core Version 6.4.5

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

SFTP SCP - Synology Wiki

EASYINSTALLER Ⅲ SuSE Linux Installation

Lokale Installation von DotNetNuke 4 ohne IIS

Icinga Teil 2. Andreas Teuchert. 25. Juli 2014

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Live Update (Auto Update)

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

BSV Software Support Mobile Portal (SMP) Stand

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Stepperfocuser 2.0 mit Bootloader

easysolution GmbH easynet Bessere Kommunikation durch die Weiterleitung von easynet-nachrichten per nach Hause

HÄUFIG GESTELLTE FRAGEN. 4. Wie kann man den FixMeStick für Mac auf Fabrikeinstellungen upgraden?

Update Messerli MySQL auf Linux

Mitarbeiter-Alarm. 1x Taster mit Kabel zum Anschluss an den seriellen Com-Port (optional) 1x Installationsprogramm auf CD 1x Lizenz

Barcodedatei importieren

Installation / Aktualisierung von Druckertreibern unter Windows 7

DNS 323 Datenwiederherstellung mit Knoppix (DVD) ab Firmware Version 1.04b84

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

Local Control Network Technische Dokumentation

GFAhnen Datensicherung und Datenaustausch

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Adminer: Installationsanleitung

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

Kleines Handbuch zur Fotogalerie der Pixel AG

Anleitung: Confixx auf virtuellem Server installieren

Datensicherung. Beschreibung der Datensicherung

Artikel ID: 2399 Erstellt am: :36 Überschrift: STRATO HiDrive Software - Installation und Konfiguration

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

TrekStor - ebook-reader TrekStor (TS) Edition - Firmware-Update

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Modul Windows XP Professional

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Task: Nmap Skripte ausführen

FrogSure Installation und Konfiguration

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

System-Update Addendum

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Inhaltsverzeichnis. Vorwort... 3 Installation von XAMPP... 3 Installation von Joomla... 8 Schlusswort Copyright

Aber mancher braucht diese Funktionalität halt, doch wo ist sie unter Windows 8 zu finden?

Zentrale Installation

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Dokumentation IBIS Monitor

Virtual Channel installieren

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Hex Datei mit Atmel Studio 6 erstellen

Installation SQL- Server 2012 Single Node

Comtarsia SignOn Familie

Transkript:

Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 27 2 / 27 Der Linux- Hier sollen die einzelnen Phasen des es von Linux betrachtet werden: 1. Systemstart im BIOS 2. Stage 1 bootloader im MBR 3. Stage 2 bootloader 4. Starten des Linux-Kernels 5. Init 3 / 27 Handout S. 1

Übersicht Bilder: Tim Jones, http://www.ibm.com/developerworks/library/l-linuxboot/ 4 / 27 Die ersten Stufen Beim Starten des PC werden die ersten Schritte durch das BIOS des Rechners ausgeführt, dazu gehört insbesondere das Suchen nach einem bootbaren Medium (Festplatte, CD, USB-Stick, früher Diskette) in der im BIOS-Setup festgelegten Reihenfolge. Die Identifizierung eines Mediums als bootbar erfolgt hierbei durch das Vorhandensein eines gültigen Master Boot Records (MBR) auf dem Medium. Dieser MBR enthält den Linux-Bootloader der ersten Stufe (Stage 1). Dieser lädt im Wesentlichen den Bootloader Stage 2. 5 / 27 Linux-Bootloader Die unter Linux verbreiteten Bootloader stellen sowohl den ausführbaren Code für Stage 1 als auch Stage 2 bereit. Der früher benutzte LILO (Linux Loader) wurde hierbei bei den meisten Distributionen inzwischen durch GRUB (GNU Grand Unified Bootloader) ersetzt. Der im MBR befindliche Teil GRUB Stage 1 beschränkt sich weitgehend auf das Laden des GRUB Stage 2 (ggfs. nach Ausführen von Code, der zum Lesen von großen Festplatten notwendig ist, manchmal als Stage 1.5 bezeichnet). In GRUB Stage 2 wird (je nach Konfiguration) ein Boot-Menü angezeigt, in dem z. B. zwischen verschiedenen Kerneln (oder zwischen Linux und anderen OS wie Windows) ausgewählt werden kann. Nach Auswahl des gewünschten Kernels wird dieser dann geladen. 6 / 27 Handout S. 2

Kernel-Phase Im Allgemeinen liegt der Kernel in einer Image-Datei, die das (früher mit zlib, inzwischen mit bzip- oder lzma) komprimierte Kernel-Image enthält (zusammen mit dem Code, um das Image in das RAM zu entpacken). Komplizierter wird es, wenn der Kernel noch einige Kernel-Module benötigt. Da das Dateisystem der Festplatte hier noch nicht zur Verfügung steht, müssen diese Module auf anderem Weg geladen werden. Hierzu wird eine Initial RAM Disk (früher initrd, heute initramfs) verwendet. Diese initrd kann z. B. Treiber enthalten, die der Kernel braucht, um das Dateisystem mit dem eigentlichen Linux-System überhaupt mounten zu können. Innerhalb der Inital RAM Disk befindet sich ein Init-Skript, ein normales Shell-Skript mit Code, der nach dem Laden des initramfs ausgeführt wird. initramfs ist ein cpio-archiv, das mit gzip komprimiert wird. 7 / 27 Init-Prozess, klassisch und modern Unter Linux läuft der so genannte init-prozess, der insbesondere Systemdienste startet und beendet. Hier geschieht gerade ein wichtiger Umbruch: Ältere, stabile Linux-Distributionen verwenden ein Init-System, das kompatibel zum Großteil der Unix-Welt ist, indem dem Schema von Unix System V gefolgt wird, neue, moderne Distributionen verwenden mittlerweile alternative Init-Systeme, insbesondere das von RedHat entwickelte bzw. geförderte systemd (Fedora, OpenSuse) oder upstart unter Ubuntu. Zunächst wird nun die klassische Variante dargestellt. 8 / 27 Der klassische Init-Prozess (SysV) Nach dem Laden des Kernels werden die Dateisysteme des Systems gemountet (wie in /etc/fstab konfiguriert), dann führt der so genannte init-prozess Programme aus, bis in den in /etc/inittab eingestellten Runlevel gewechselt wird. Im vom Administrator gewählten Runlevel werden die für das System gewünschten gestartet. Neben üblichen Aufgaben wie Konfiguration der Netzwerkschnittstellen und -einstellungen gehören hierzu insbesondere das Mounten bzw. Exportieren weiterer Dateisystem (z. B. über Netzwerk) und das Starten von Services als Dämon, z. B. sshd, httpd. 9 / 27 Handout S. 3

Übliche Runlevel Level Bedeutung 1 Single User 2 Multi User (ohne Netzwerk) 3 Multi User, mit Netzwerk, ohne X11 5 Multi User mit X11 Die Angaben beziehen sich auf Red Hat, Fedora. Bei anderen Distributionen können die Zahlen abweichen. 10 / 27 Aktionen in den einzelnen Runlevels Welche beim Betreten eines Runlevels gestartet (oder beim Wechseln aus einem anderen Runlevel gestoppt) werden, wird in Linux über verschiedene Skripten und Links gesteuert, die sich unterhalb des Verzeichnisses /etc/rc.d befinden: /etc/rc.d/init.d Start-/Stop-Skripte (meist Init-Skript genannt) der einzelnen, /etc/rc.d/rc?.d Init-Skripte für den betreffenden Runlevel, wobei diese jeweils symbolische Links auf das entpsrechende Skript in /etc/rc.d/init.d sind. 11 / 27 Anatomie eines Init-Skriptes Die Start-/Stop-Skripte müssen zwingend zwei Kommandozeilenparameter zum Starten bzw. Beenden eines s verstehen: /etc/rc.d/init.d/myscript start oder /etc/rc.d/init.d/myscript stop Im Allgemeinen sind noch andere Parameter zulässig: status zur Ausgabe des Status (running oder stopped), restart führt stop und start hintereinander aus, condrestart falls der Dienst läuft, wird er beendet und neu gestartet, reload weist einen laufenden Dienst an, seine Konfigurationsdateien neu einzulesen. 12 / 27 Handout S. 4

Anatomie eines Start-/Stop-Skriptes (Forts.) Was soll nun das Start-/Stop-Skript machen: Beim Start soll natürlich ein Dienstprozess gestartet werden. Hierbei wird erwartet, dass der Dienstprozess seine Prozess-ID in die Datei /var/run/dienst.pid schreibt. Außerdem legt das Start-Skript eine Datei /var/lock/subsys/dienst an. Beim Stoppen wird der Prozess mit der in /var/run/dienst.pid stehenden Prozess-ID gestoppt, anschließend die Datei unter /var/lock/subsys gelöscht. In beiden Fällen wird auf dem Bildschirm ausgegeben, ab das Starten bzw. Stoppen des s erfolgreich war. Für die häufig benötigten Aktionen in den Skripten gibt es vordefinierte Shell-Funktionen in der Datei /etc/rc.d/init.d/functions, die in den Skripten daher zu Beginn inkludiert (per Punkt-Befehl) wird. 13 / 27 Ablauf beim Wechseln in einen Runlevel In dem Verzeichnis /etc/rc.d/rc?d befinden sich Links auf die Start-/Stop-Skripte, die jeweils die Form SddSkriptname bzw. KddSkriptname haben, d. h diese beginnen mit S oder K und einer zweistelligen Zahl. Beim Wechseln in diesen Runlevel werden nun zunächst die mit K beginnenden Links mit dem Parameter stop aufgerufen (also K=kill), wenn es einen entsprechenden Link unter /var/lock/subsys gibt (!), danach die mit S beginnenden Links mit dem Parameter start aufgerufen (also S=start). Hierbei werden die Stop- bzw. Start-Befehle in aufstehender Reihenfolge der zweistelligen Zahlen ausgeführt, also lautet die Reihenfolge z. B. K01abc, K85def, S25ghi, S95jkl 14 / 27 Beispieldienst Das folgende C-Programm schreibt als Hintergrundprozess alle 10 Sekunden eine Meldung mit dem Inhalt ping über den syslog-dämon in die Liste der Systemmeldungen: #include <stdio.h> #include <syslog.h> #include <unistd.h> #include <stdlib.h> void usage(char* prog) { printf("usage: %s [-b] [-p pidfile]\n"); int main(int argc, char** argv) { int do_bg = 0; char* pidfile = NULL; 15 / 27 Handout S. 5

Beispieldienst (Forts.) int iarg = 1; while (iarg<argc) { char* thisarg = argv[iarg]; if (!strcmp(thisarg,"-b")) { do_bg=1; iarg++; else if (!strcmp(thisarg,"-p")) { if (iarg+1>=argc) { usage(argv[0]); exit(exit_failure); pidfile = argv[iarg+1]; iarg += 2; else { usage(argv[0]); printf("unknown option %s\n",thisarg); exit(exit_failure); 16 / 27 Beispieldienst (Forts.) if (do_bg) { int fork_pid = fork(); if (fork_pid<0) return(exit_failure); if (fork_pid>0) return(exit_success); if (pidfile) { FILE* pid = fopen(pidfile,"w"); fprintf(pid,"%d\n",getpid()); fclose(pid); openlog("ping",log_odelay,log_local0); while (1) { syslog(log_info,"%s","ping"); sleep(10); 17 / 27 Das Start-/Stop-Skript Nun legen wir das Start-/Stop-Skript als /etc/init.d/log an: #! /bin/bash # # log service to send pings to syslog # # chkconfig: 345 99 01 # description: pings to syslog as test service # # pidfile: /var/run/log.pid. /etc/init.d/functions RETVAL=0 prog=log progdir=/root lockfile=/var/lock/subsys/$prog pidfile=/var/run/$prog.pid CMD=$progdir/$prog OPTIONS=-b -p $pidfile 18 / 27 Handout S. 6

Das Start-/Stop-Skript (Forts.) start() { [ "$EUID"!= 0 ] && exit 4 [ -x "$CMD" ] exit 1 echo -n $"Starting $prog: " daemon $CMD $OPTIONS RETVAL=$? [ $RETVAL -eq 0 ] && success failure echo [ $RETVAL -eq 0 ] && touch $lockfile return $RETVAL 19 / 27 Das Start-/Stop-Skript (Forts.) stop() { [ "$EUID"!= 0 ] && exit 4 echo -n $"Stopping $prog: " if [ -n "$(pidfileofproc $prog)" ]; then killproc $prog else failure $"Stopping $prog" fi RETVAL=$? [ $RETVAL -eq 0 ] && rm -f $lockfile echo return $RETVAL 20 / 27 Das Start-/Stop-Skript (Forts.) case "$1" in start) start stop) stop restart) stop start status) status $prog 21 / 27 Handout S. 7

Das Start-/Stop-Skript (Forts.) condrestart) if status $prog >/dev/null; then stop start fi reload) exit 4 *) echo $"Usage: $0 {start stop status restart condrestart reload" exit 2 esac 22 / 27 Arbeiten mit Start-/Stop-Skripten Im Prinzip kann unser Start-/Stop-Skripte von Hand gestartet werden: /etc/init.d/log start oder /etc/init.d/log stop oder /etc/init.d/log status Stattdessen kann aber (auf Redhat-Systemem) das Programm service genutzt werden, das sich in /usr/sbin befindet: service log start usw. Nebenbei unterstützt service noch den Aufruf service --status-all 23 / 27 Verwalten der Start-/Stop-Skripte Zu einem ordnungsgemäß konfigurierten Systemdienst gehören neben dem eigentlichen Init-Skript die entsprechenden Links in den einzelnen Runlevel-Verzeichnissen, so dass der Dienst beim Wechsel in den Runlevel entweder gestartet oder beendet wird. Soll unser Dienst log in den Runlevels 3, 4 und 5 laufen, so müssen also folgende Links existieren: /etc/rc.d/rc0.d/k01log (Halt) /etc/rc.d/rc1.d/k01log /etc/rc.d/rc2.d/k01log /etc/rc.d/rc3.d/s99log /etc/rc.d/rc4.d/s99log /etc/rc.d/rc5.d/s99log /etc/rc.d/rc6.d/k01log (Reboot) 24 / 27 Handout S. 8

chkconfig Auf RedHat-Systemen existiert (übernommen von IRIX) das Programm chkconfig, mit dem diese Links in den Runlevel-Verzeichnissen verwaltet werden können. Dabei wird der Kommentar # chkconfig: 345 99 01 im Init-Skript ausgewertet, die die Runlevel angibt, in denen der Dienst laufen soll, sowie die zweistellige Zahl für die Startbzw. Stop-Links angibt. 25 / 27 Benutzen von chkconfig chkconfig log prüft, ob der Dienst log korrekt konfiguriert ist, chkconfig --add log erzeugt dabei die Links für den Dienst log, chkconfig --list log listet auf, in welchen Runlevels der Dienst läuft. chkconfig --del log entfernt alle Start-/Stop-Links zum Dienst. Die Einstellung für einzelne Runlevel kann mit chkconfig --levels {level log {on off geändert werden. 26 / 27 Beispiele für ntpd, Dämon zum laufenden Synchronisieren mit Zeitserver über das Network Time Protocl, optional auch als Server für andere Rechner. httpd, Webserver (i. A. Apache). nfs, zum Exportieren von Verzeichnissen an andere Rechner über NFS. sshd, zum Zulassen von Verbindungen über Secure Shell. crond, Dämon zum zeitgesteuerten Ausführen von Aufgaben. 27 / 27 Handout S. 9