summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Altenberg <jan@linutronix.de>2013-02-20 11:46:30 +0100
committerJan Altenberg <jan@linutronix.de>2013-02-20 11:46:57 +0100
commit92ce02814205f1276dcfe94d49874719748360bb (patch)
treec56c61e778e7046264dabc32fe513ba93e14524e
parentc7d219f71cbb06b2e97dde65ec95b46fe9ee254f (diff)
some basic description about SystemV, upstart and systemd
-rw-r--r--linux-basics/boot-process-basics/Makefile9
-rw-r--r--linux-basics/boot-process-basics/pres_boot-process-basics_de.tex156
2 files changed, 165 insertions, 0 deletions
diff --git a/linux-basics/boot-process-basics/Makefile b/linux-basics/boot-process-basics/Makefile
new file mode 100644
index 0000000..d641258
--- /dev/null
+++ b/linux-basics/boot-process-basics/Makefile
@@ -0,0 +1,9 @@
+all:
+ for pdf in `ls -1 *.tex` ; do \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ done
+
+clean:
+ rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out
+
diff --git a/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex b/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex
new file mode 100644
index 0000000..6175d86
--- /dev/null
+++ b/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex
@@ -0,0 +1,156 @@
+\input{configpres}
+
+\title{Der Linux-Boot-Prozess}
+\maketitle
+
+\begin{frame}
+\frametitle{Komponenten des Bootprozesses}
+\begin{itemize}
+\item Bootloader
+\item Linux
+\item ''Userspace''
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Ablauf des Bootprozesses}
+\begin{enumerate}
+\item Bootloader initialisiert Hardware
+\item Bootloader reloziert Kernel
+\item Bootloader übergibt Parameter und startet Kernel
+\item Linux bootet
+\item Linux Kernel bindet RFS ein
+\item Linux Kernel startet ersten Prozeß (/sbin/init, /linuxrc, oder mit init= spezifizierter Prozeß)
+\end{enumerate}
+\end{frame}
+
+\begin{frame}
+\frametitle{Das INIT System}
+\begin{itemize}
+\item System V Init (z.B. Debian)
+\item Upstart (Ubuntu)
+\item Systemd (z.B. Fedora)
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{System V Init}
+\begin{itemize}
+\item Verhalten in /etc/inittab definiert
+\item Startscripte in /etc/init.d
+\item Aufteilung in sogenannte Runlevels
+\item Runlevel beschreiben verschiedene Systemzustände (Shutdown, Single-User, Multi-User mit / ohne Netzwerk, ...)
+\item System V kennt keine Abhängigkeiten, sequentielles Ausführen der Startscripte
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Upstart}
+\begin{itemize}
+\item Ereignisgesteuert
+\item Kein /etc/inittab !!
+\item Konfigurationsdateien in /etc/init/, Beispiel:
+\begin{verbatim}
+start in stopped rc RUNLEVEL=[2345]
+stop on runlevel [!2345]
+respawn
+exec /sbin/getty -8 38400 tty1
+\end{verbatim}
+\item Upstart benötigt Runlevel, bildet aus Kompatibilitätsgründen aber Runlevel nach
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Upstart: Erweitertes Beispiel}
+\begin{verbatim}
+# /etc/init/smbd.conf
+description "SMB/CIFS File Server"
+author "Steve Langasek"
+
+start on (local-filesystems and net-device-up)
+stop on runlevel [!2345]
+
+respawn
+[...]
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Upstart: Erweitertes Beispiel}
+\begin{verbatim}
+# /etc/init/network-interface.conf
+description "configure network device"
+
+emits net-device-up
+emits net-device-down
+[...]
+\end{verbatim}
+\end{frame}
+
+\begin{frame}
+\frametitle{Systemd}
+\begin{itemize}
+\item Kann Prozesse parallel starten (ohne explizite Konfiguration der Abhängigkeiten):
+\begin{itemize}
+\item Legt Sockets zur Kommunikation der zu startenden Prozesse an
+\item Dorthin geschriebene Daten werden so lange gepuffert, bis der zu startende Prozeß diese entgegennehmen kann
+\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Systemd}
+\begin{itemize}
+\item Konfiguration durch einzelne Textdateien und nicht durch Shellscripte
+\item Aktionen werden basierend von diesen Konfigurationen von Systemd (Linux-Executable) ausgeführt. Dies vermeidet das Starten vieler einzelner Shell-Instanzen.
+\item Administraion mittels systemctl
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Systemd}
+\begin{itemize}
+\item Targets übernehmen die Rolle von Runleveln (z.B. Runlevel 0 == poweroff.target)
+\item Mehrere Targets können gleichzeitig aktiv sein
+\item Konfigurationsdateien in /etc/systemd und /lib/systemd
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Systemd}
+\begin{itemize}
+\item Kompatibel zu System V Init. Skripte, die in /etc/init.d liegen, werden wie gewohnt gestartet
+\item Verwendet ''Control Groups'' zur Überwachung / Ausführung von Prozessen (daher mind. Kernel 2.6.24; und CGROUPS in .config aktivieren!!)
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Aufgaben des Bootloaders}
+\begin{itemize}
+\item Low-Level-Initialisierung:
+\item Clocks (CPU, PLLs, Peripherie...)
+\item Speicher (DRAM-Controller, NAND-Controller...)
+\item serielle Schnittstelle
+\item Parameterübergabe an den Linux Kernel
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Der Linux Kernel}
+\begin{itemize}
+\item Setzt Interrupts auf (z.B. Timer Interrupt)
+\item Lädt Treiber, initialisiert Hardware
+\item Mountet ''root filesystem'' nach /
+\item Startet ersten Prozeß
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Quellen}
+\begin{thebibliography}{1}
+\bibitem{kof} Linux 2012, Michael Kofler, PEARSON Verlag
+\bibitem{heise} http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-1-1563259.html
+\end{thebibliography}
+\end{frame}
+
+\input{tailpres}