diff options
| author | Jan Altenberg <jan@linutronix.de> | 2013-02-20 11:46:30 +0100 |
|---|---|---|
| committer | Jan Altenberg <jan@linutronix.de> | 2013-02-20 11:46:57 +0100 |
| commit | 92ce02814205f1276dcfe94d49874719748360bb (patch) | |
| tree | c56c61e778e7046264dabc32fe513ba93e14524e | |
| parent | c7d219f71cbb06b2e97dde65ec95b46fe9ee254f (diff) | |
some basic description about SystemV, upstart and systemd
| -rw-r--r-- | linux-basics/boot-process-basics/Makefile | 9 | ||||
| -rw-r--r-- | linux-basics/boot-process-basics/pres_boot-process-basics_de.tex | 156 |
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} |
