Kapitelklicken springt direkt hin
Shownotes
<p>Strom an und Ohren auf! In dieser Episode nähern wir uns Computern im Dornröschenschlaf.
Genauer sehen wir uns an, was beim Erwachen geschieht.</p><h2>Shownotes</h2><ul>
<li>
<p>Zustand bei frühen Rechenmaschinen und Computern</p>
<ul>
<li>kein Bootstrap: Strom an -> Programm starten, Programm beenden -> Strom aus (siehe <a href="youtube.com/watch?v=n8Yo-wD-QTo">Konra…;)</li>
<li>Programme waren spezifisch für die Hardware, auf der sie laufen</li>
<li>siehe auch: <a href="damals-tm-podcast.de/">damals (TM) Podcast</a></li>
<li>und <a href="cre.fm/cre193-old-school-computing">Ch… Old School Computing</a></li>
</ul>
</li>
<li>
<p>Zustand bei heutigen Computern</p>
<ul>
<li>Programme benötigen Funktionen des Betriebssystems, Betriebssystem muss sich mit der Hardware vertraut machen -> separate Startphase notwendig</li>
<li><strong>Bootstrap</strong> (oder kurz <strong>Boot</strong>): sich selbst an den Schnürsenkeln aus dem Sumpf ziehen; aus einem einfachen System heraus ein komplexeres System aktivieren</li>
<li>Konzept taucht mehrmals in verschiedenen Kontexten auf ("Wie stellt man einen Hobel her, wenn man keinen Hobel hat?"), siehe z.B. Bootstrapping von Programmiersprachen</li>
<li>Hardware-Bootvorgang meist in mehreren aufeinanderfolgenden Phasen</li>
</ul>
</li>
<li>
<p>Phase 1: Firmware</p>
<ul>
<li>minimales Startprogramm</li>
<li>in einen separaten <a href="de.wikipedia.org/wiki/Flash-Speicher">…; im Chip fest verbaut</li>
<li>Aufgabe: Hardware in einen definierten Zustand bringen (z.B. interne Speicher initialisieren), nächste Stufe finden und laden</li>
<li>heute mitunter alles andere als minimal: siehe <a href="de.wikipedia.org/wiki/Unified_Extensible_Firmw…; und <a href="de.wikipedia.org/wiki/Intel#Intel_Management_E… ME</a>/<a href="de.wikipedia.org/wiki/AMD_Security_Processor&q… PSP</a></li>
<li>bei x86 früher <a href="de.wikipedia.org/wiki/BIOS">BIOS</a…;; heute ersetzt durch UEFI, dessen definierter Endzustand modernen Konventionen folgt</li>
</ul>
</li>
<li>
<p>Phase 2: Bootloader</p>
<ul>
<li>immer noch ziemlich minimal</li>
<li>liegt auf einem Massenspeicher (Festplatte, USB-Stick)</li>
<li>Aufgabe: Massenspeicher nach Betriebssystemen durchsuchen, Auswahldialog anbieten, gewähltes Betriebssystem starten</li>
<li>unter Linux meistens <a href="de.wikipedia.org/wiki/Grand_Unified_Bootloader…; oder <a href="en.wikipedia.org/wiki/Systemd-boot">sy…;
</ul>
</li>
<li>
<p>Alternativen zum klassischen Bootloader</p>
<ul>
<li>UEFI-Firmware kann direkt das Betriebssystem starten, sofern keine interaktive Auswahl erforderlich ist</li>
<li><a href="de.wikipedia.org/wiki/Netzboot">Netzwe…; (entweder durch die Firmware oder als Option in Bootloadern wie GRUB)</li>
</ul>
</li>
<li>
<p>Phase 3: Betriebssystem</p>
<ul>
<li>Erinnerung (siehe STP019): Kernel = Betriebssystemteile in höchster Privilegenstufe, Userspace = alle Programme in niedrigerer Privilegienstufe</li>
<li>Bootloader lädt und startet den Basisteil des Kernels</li>
<li>Kernel erkennt die verfügbare Hardware, lädt von der Festplatte die benötigten Kernel-Module nach und startet den System-Manager</li>
</ul>
</li>
<li>
<p>Phase 4: System-Manager</p>
<ul>
<li>
<p>unter Unix meist als "PID 1" benannt, weil dieser erste Prozess mit der Prozess-ID (PID) 1 läuft</p>
</li>
<li>
<p>klassischerweise <a href="de.wikipedia.org/wiki/SysVinit">sysvin…;, heute unter Linux meist <a href="de.wikipedia.org/wiki/Systemd">systemd…;
</li>
<li>
<p>startet alle Userspace-Programme, die als Teil des Betriebssystems aufgefasst werden können (im Unix-Sprech "Daemons": Disk And Execution MONitors)</p>
</li>
<li>
<p>auf Systemebene z.B. Druckwarteschlange, Bluetooth-Dienst, Netzwerk-Konfigurationsdienst, Zeitsynchronisation</p>
</li>
<li>
<p>auf der Ebene einer grafischen Sitzung z.B. Dienste zum Auswählen von Tastaturlayout/Netzwerk, Einstellen der Lautstärke, Screen-Reader</p>
</li>
<li>
<p><a href="cre.fm/cre209-das-linux-system">ChaosR… Das Linux System</a></p>
</li>
</ul>
</li>
<li>
<p>Phase 5: Display-Manager</p>
<ul>
<li>bietet auf grafischen Systemen den Anmeldedialog</li>
<li>im Prinzip selbst eine komplette grafische Sitzung (Anekdote: GDM vs. LightDM)</li>
<li>startet nach erfolgreicher Anmeldung die entsprechende grafische Sitzung</li>
</ul>
</li>
<li>
<p>Phase 6: grafische Sitzung</p>
<ul>
<li>Strukturierung je nach Desktopoberfläche</li>
<li>immer mit dabei: ein Window-Manager, der die einzelnen Fenster in ein Gesamtbild zusammensetzt (heutzutage auf der GPU, dann heißt der Window-Manager "Compositor")</li>
<li>unter Windows ist der Window-Manager aus historischen Gründen Teil von <code>explorer.exe</code></li>
<li>wie besprochen: unter Linux Bootvorgang visualisieren mit <code>systemd-analyze plot > output.svg</code></li>
</ul>
</li>
</ul>