owned this note
owned this note
Published
Linked with GitHub
---
robots: index, follow
lang: de
description: Woraus besteht ein Rechner und was passiert beim Systemstart?
tags: Neumann, Motherboard, CPU, BIOS, Systemd, RAM, initrd
slideOptions:
transition: fade
center: false
---
<!-- .slide: data-background="#006F80" -->
# Woraus besteht ein Rechner und was passiert beim Systemstart?
---
## Bestandteile eines PCs
| | | |
|---|---|---|
| :computer: Bildschirm | :cd: Laufwerke | CPU |
| Tastatus | Festplatten/SSDs | WLAN/Bluetooth |
| Maus/Touchpad/Joystick | USB / Thunderbold / LAN | BIOS / andere Käfer |
| :speaker: Lautsprecher | RAM | Mainboard, :bus: Busse |
| :radio_button: Knöpfe | Grafik Karte | ... |
<!-- .element: class="fragment" data-fragment-index="1" -->
---
### Von-Neumann Architektur (1945)
![Von Neumann Architektur auf Wikipedia](https://upload.wikimedia.org/wikipedia/commons/d/db/Von-Neumann_Architektur.svg =75%x75%)
---
#### Einordnung
| Rechenwerk | Steuerwerk | I/O Werk | Speicherwerk |
|:----------:|:----------:|:--------:|:------------:|
| CPU | CPU | :computer: | HDD/SSD |
| </span> GraKa | </span> GraKa | Keyboard | RAM |
| | | Maus | Cache |
| | | :speaker: | Register |
| | | USB/LAN | |
| | | WLAN | |
<!-- .element: class="fragment" data-fragment-index="1" -->
---
#### Aufgaben Speicherwerk
- Daten speichern <!-- .element: class="fragment" data-fragment-index="1" -->
- Code speichern <!-- .element: class="fragment" data-fragment-index="2" -->
- Anhand von Adressen Daten heraus geben <!-- .element: class="fragment" data-fragment-index="3" -->
> CPU: Gib mir die Daten von `0x0DEADBEE8` bis `0x0DEADBEEF`!
<!-- .element: class="fragment" data-fragment-index="4" -->
> RAM: Ok die Daten sind: `0x000000COFFEEBABE`
<!-- .element: class="fragment" data-fragment-index="5" -->
----
#### Aufgaben I/O Werk
- Liefert Daten von der Außenwelt <!-- .element: class="fragment" data-fragment-index="1" -->
- Gibt Daten an die Außenwelt <!-- .element: class="fragment" data-fragment-index="2" -->
> I/O: Hallo CPU, jemand hat auf die Taste <kbd>a</kbd> gedrückt
<!-- .element: class="fragment" data-fragment-index="3" -->
> CPU: Hallo Monitor, schreibe mal ein "a"
<!-- .element: class="fragment" data-fragment-index="4" -->
----
#### Aufgaben Leitwerk
- Sagt dem Rechenwerk, was zu tun ist <!-- .element: class="fragment" data-fragment-index="1" -->
- Merkt sich aktuelle Stelle im Code <!-- .element: class="fragment" data-fragment-index="2" -->
- Heute: kleiner Teil in CPU <!-- .element: class="fragment" data-fragment-index="3" -->
----
#### Aufgaben Rechenwerk
- Arbeitet Code ab <!-- .element: class="fragment" data-fragment-index="1" -->
```asm
ADDI $1,$2,$3;
MULI $1,$1,5;
DIVI ...;
```
<!-- .element: class="fragment" data-fragment-index="2" -->
![Wikipedia ALU](https://upload.wikimedia.org/wikipedia/commons/0/0f/ALU_block.gif =60%x) <!-- .element: class="fragment" data-fragment-index="3" -->
----
##### Was ist dieser Code?
- maschinenlesbarer Bytecode <!-- .element: class="fragment" data-fragment-index="1" -->
- verschiedene Architekturen - verschiedener Code <!-- .element: class="fragment" data-fragment-index="2" -->
- e.g. **x86_64**, x86, **ARM**, MIPS, ... <!-- .element: class="fragment" data-fragment-index="2" -->
- Entsteht, wenn man Assemblercode assembliert <!-- .element: class="fragment" data-fragment-index="3" -->
----
#### Aufgabe Bus :bus:
- Kommunikation zwischen Bauteilen <!-- .element: class="fragment" data-fragment-index="1" -->
---
### "Aktueller" Mainboard Aufbau
| | |
|---|---|
| ![Wikipedia Chipset Schematic](https://upload.wikimedia.org/wikipedia/commons/5/51/Chipset_schematic.svg =550x500) | ![Wikipedia Motherboard](https://upload.wikimedia.org/wikipedia/commons/d/dd/MicroATX_Motherboard_with_AMD_Athlon_Processor_2_Digon3.jpg =1000x) |
---
<!-- .slide: data-background="#006F80" -->
## Was passiert beim Systemstart?
---
### Festplattenpartitionen
- Häufig unterteilt man die Festplatte in einzelne Bereiche (Partitionen) <!-- .element: class="fragment" data-fragment-index="1" -->
- In den Partitionen sind Dateisysteme angelegt <!-- .element: class="fragment" data-fragment-index="2" -->
#### Beispiel: <!-- .element: class="fragment" data-fragment-index="3" -->
| EFI | Boot | Root | Home | Swap |
|:---:|:---:|:---:|:---:|:---:|
| vfat | ext4 | btrfs | btrfs | swap |
| `/boot/efi/` | `/boot/` | `/` | `/home/` | `swap` |
| | | :lock: | :lock: | :lock: |
<!-- .element: class="fragment" data-fragment-index="3" -->
---
#### Stromversorgung beginnt
- BIOS Chip startet
- startet EFI Programm im Speicher des Chips <!-- .element: class="fragment" data-fragment-index="1" -->
- Initialisiert CPU,Festplatten, Monitor, Tastatur, ... <!-- .element: class="fragment" data-fragment-index="2" -->
- Sucht nach EFI Partitionen auf Festplatten <!-- .element: class="fragment" data-fragment-index="3" -->
- Listet/Startet EFI Programme von Partitionen <!-- .element: class="fragment" data-fragment-index="4" -->
----
#### Wenn Grub2 das gestartete EFI Programm ist:
- Ließt Grub Konfiguration <!-- .element: class="fragment" data-fragment-index="1" -->
- Lädt Grub Module <!-- .element: class="fragment" data-fragment-index="2" -->
- Ließt weitere, kompliziertere Partitionen <!-- .element: class="fragment" data-fragment-index="3" -->
- Sucht Initramfs, Linux Kernel <!-- .element: class="fragment" data-fragment-index="4" -->
- Startet Kernel im Initramfs <!-- .element: class="fragment" data-fragment-index="5" -->
----
#### Kernel im Initramfs:
- Initialisiert weitere Geräte <!-- .element: class="fragment" data-fragment-index="1" -->
- Lädt Treiber <!-- .element: class="fragment" data-fragment-index="2" -->
- Startet ersten Prozess: Init prozess: Systemd <!-- .element: class="fragment" data-fragment-index="3" -->
----
#### Systemd
- Ließt Konfigurationen <!-- .element: class="fragment" data-fragment-index="1" -->
- Bereitet alles Mögliche vor <!-- .element: class="fragment" data-fragment-index="2" -->
- Ließt komplette Festplatte <!-- .element: class="fragment" data-fragment-index="3" -->
- Mountet Partitionen <!-- .element: class="fragment" data-fragment-index="4" -->
- Startet erste Dienste <!-- .element: class="fragment" data-fragment-index="5" -->
----
#### Switchroot
- "Das eigentliche System" <!-- .element: class="fragment" data-fragment-index="1" -->
- Starten aller Hintergrundprozesse (Dienste/Services/Daemons) <!-- .element: class="fragment" data-fragment-index="2" -->
- Starten des Netzwerkstacks <!-- .element: class="fragment" data-fragment-index="3" -->
----
#### Grafische Sitzung
- Starten des Loginmanagers (sddm) <!-- .element: class="fragment" data-fragment-index="1" -->
- Nach Login <!-- .element: class="fragment" data-fragment-index="2" -->
- Starten des Displayservers (Xorg/wayland) <!-- .element: class="fragment" data-fragment-index="3" -->
- Starten der Desktopoberfläche (KDE/Gnome) <!-- .element: class="fragment" data-fragment-index="4" -->
- Starten der Hilfsprogramme, ... <!-- .element: class="fragment" data-fragment-index="5" -->
----
#### **Fertig :sweat_smile:**
---
<!-- .slide: data-background="#006F80" -->
## Live Demo :eyes:
---
<!-- .slide: data-background="#006F80" -->
## Licenses
#### Images from Wikipedia:
- Neumann: (c) Lukas Grossar [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
- ALU: (c) [Lambtron](https://commons.wikimedia.org/wiki/User:Lambtron) [CC BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
- Chipset: (c) [Fred the Oyster](https://commons.wikimedia.org/wiki/User:Fred_the_Oyster) [CC BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
- Motherboard: (c) [Jonathan Zander](https://commons.wikimedia.org/wiki/User:Digon3) [CC BY SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)
#### This Presentation:
(c) 2017 [Rommel NOC](https://rommelwood.de/) - [![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png =50x)](https://creativecommons.org/publicdomain/zero/1.0/)
[![sedrubal](https://avatars1.githubusercontent.com/u/5571650 =50x50)](https://sedrubal.de/)
sedrubal
<p style="height:25em;"></p>