Podcast
Questions and Answers
Was ist der Linux Kernel?
Was ist der Linux Kernel?
Der zentrale Bestandteil eines Betriebssystems, der als Vermittler zwischen der Hardware und Softwareanwendungen dient.
Welche dieser Kernel-Arten gehören zu den bekannten Kernel-Strukturen? (Wählen Sie alle zutreffenden aus)
Welche dieser Kernel-Arten gehören zu den bekannten Kernel-Strukturen? (Wählen Sie alle zutreffenden aus)
Der Microkernel unterstützt alle Betriebssystemdienste im Kernel-Space.
Der Microkernel unterstützt alle Betriebssystemdienste im Kernel-Space.
False
Nennen Sie einen Vorteil des monolithischen Kernels.
Nennen Sie einen Vorteil des monolithischen Kernels.
Signup and view all the answers
Welche Software benötigt Linus Torvalds zur Entwicklung des Linux Kernels?
Welche Software benötigt Linus Torvalds zur Entwicklung des Linux Kernels?
Signup and view all the answers
Wie loggen Sie sich als User „test“ in die Ubuntu VM ein?
Wie loggen Sie sich als User „test“ in die Ubuntu VM ein?
Signup and view all the answers
Wie wechseln Sie zum 'root' User in der Kommandozeile?
Wie wechseln Sie zum 'root' User in der Kommandozeile?
Signup and view all the answers
Der Modular Kernel ermöglicht die Nachladung von Funktionalität zur Laufzeit ohne Neustart des Systems.
Der Modular Kernel ermöglicht die Nachladung von Funktionalität zur Laufzeit ohne Neustart des Systems.
Signup and view all the answers
Ordnen Sie die Kernel-Arten ihren Vorteilen zu:
Ordnen Sie die Kernel-Arten ihren Vorteilen zu:
Signup and view all the answers
Wo liegen die Kernel-Quellen?
Wo liegen die Kernel-Quellen?
Signup and view all the answers
Was müssen Sie machen, um eine .config-Datei aus der aktuell laufenden Konfiguration zu erstellen?
Was müssen Sie machen, um eine .config-Datei aus der aktuell laufenden Konfiguration zu erstellen?
Signup and view all the answers
Um den Linux Kernel zu übersetzen und auszutauschen, benötigen wir einen ______ zum Übersetzen des Programmcodes.
Um den Linux Kernel zu übersetzen und auszutauschen, benötigen wir einen ______ zum Übersetzen des Programmcodes.
Signup and view all the answers
Welcher Kernel-Typ hat eine hohe Leistung, jedoch komplexe Entwicklungen?
Welcher Kernel-Typ hat eine hohe Leistung, jedoch komplexe Entwicklungen?
Signup and view all the answers
Welche Option müssen Sie wählen, um eine neue Konfiguration des Kernels zu erstellen?
Welche Option müssen Sie wählen, um eine neue Konfiguration des Kernels zu erstellen?
Signup and view all the answers
Wie viele Zeilen hat Ihre .config-Datei?
Wie viele Zeilen hat Ihre .config-Datei?
Signup and view all the answers
Welche Befehle verwenden Sie, um das Kernel-Abbild/Image und alle Module zu bauen und zu installieren?
Welche Befehle verwenden Sie, um das Kernel-Abbild/Image und alle Module zu bauen und zu installieren?
Signup and view all the answers
Wie machen Sie den neuen Kernel dem Boot-Manager (grub) bekannt?
Wie machen Sie den neuen Kernel dem Boot-Manager (grub) bekannt?
Signup and view all the answers
Was müssen Sie tun, um den neuen Kernel zu booten?
Was müssen Sie tun, um den neuen Kernel zu booten?
Signup and view all the answers
Wie können Sie die geladenen Module anzeigen?
Wie können Sie die geladenen Module anzeigen?
Signup and view all the answers
Study Notes
Betriebssystem Kernels
- Der Kernel ist der zentrale Baustein eines jeden Betriebssystems, der als Vermittler zwischen der Hardware und der Software agiert
- Aufgaben: Speicherverwaltung, Prozessverwaltung, Gerätesteuerung und die Vermittlung zwischen Hardware und Software
Klassen von Kernel Strukturen
- Monolithischer Kernel: alle Betriebssystemdienste in einem gemeinsamen Adressraum organisiert, schnelle Performance, schwer zu warten, Fehler können System zum Absturz bringen (Beispiele: Linux, UNIX)
- Microkernel: minimalistischer Kernel mit essentiellen Mechanismen, wie Memory Management, Prozesskommunikation und Low-Level-Hardware, Vorteile: geringe Codebasis, einfach zu warten, robuster gegenüber Fehlern, Nachteile: geringere Performance, da Kommunikation zwischen User-Space - Diensten und Kernel-Space-Mechanismen vorliegt (Beispiele: Minix, QNX)
- Hybrid Kernel: vereint Aspekte von monolithischen und Microkernel, ausgewählte Dienste laufen im Kernel-Space um Performance zu erreichen, Vorteile: gute Balance zwischen Performance, Modularität und Systemsicherheit, Nachteile: komplex in Entwicklung und Wartung (Beispiele: Windows, macOS)
- Exokernel: minimalistischer Kernel, der Anwendungen die direkte Kontrolle über die Hardwareressourcen gibt, Vorteile: hohe Performance, da Abstraktionsschichten fehlen, Nachteile: Komplex in der Entwicklung (Beispiele: MIT's Exokernel)
- Nanokernel: kleinere Version des Microkernel mit geringer Basisfunktionalität, Vorteile: sehr leichtgewichtig und minimalistisch, Nachteile: hoher Aufwand in der Entwicklung (Beispiel: EPOC Kernel von Symbian)
- Modular Kernel: monolithischer Kernel, der das Nachladen von Funktionalität zur Laufzeit mittels Module ermöglicht, ohne das System neu zu starten, Vorteile: flexibler, reduziert Speicherverbrauch, Nachteile: erbt die Komplexität von monolithischen Kernel (Beispiele: Linux)
Linux Historie
- Linus Torvalds, ein Informatik-Student, entwickelte Linux als Hobbyprojekt
- Grundlage für Linux war MINIX, ein UNIX-Clone von Prof. Andrew Tanenbaum
- Die Free Software Foundation (FSF) und die GNU Public License (GPL) waren wichtige Vorläufer für Linux
- Die Verbreitung von Linux führte zu einem immensen Wachstum
- Linux ist ein Open-Source-Projekt, was die Entwicklung vorantrieb
Linux Releases
- 9.1991: Linux v0.01 (10.239 LOC)
- 12.1991: Linux v0.11
- 2.1991: Linux v0.12 (unter GPL)
- 3.1991: X Windows System (~40k LOC)
- 3.1994: Linux v1.0 (176.250 LOC)
- 3.1995: Linux v1.2 (310.950 LOC)
- 6.1996: Linux v2.0 (716.119 LOC)
- 1.1999: Linux v2.2 (1.800.847 LOC)
- 1.2001: Linux v2.4 (3.377.902 LOC)
- 12.2003: Linux v2.6 (5.929.913 LOC, bis 2011, dann 3.0-Schema)
- 1.2012: Linux v3.2 (14.998.651 LOC)
- 10.2015: Linux v4.2.3 (18.756.142 LOC)
- 11.2019: Linux v5.8.3 (24.711.894 LOC)
- 2.2022: Liunx v5.16.11 (29.086.702 LOC)
- 11.2022: Linux v6.1 (~28.000.000 LOC)
Übersicht: Linux Kernel
-
Struktur:
- documentation/
- arch/
- drivers/
- fs/
- include/
- init/
- kernel/
- mm/
- net/
- Der Kurs betrachtet Interrupts und Scheduler im kernel
- Der Linux-Kernel soll nun übersetzt werden
Linux Kernel Bauen
- Werkzeuge: Compiler, Build-Tool (make), Tool zur Installation (update-grub), weitere unterstützende Werkzeuge (Ncurses, GTK+, QT)
-
Voraussetzungen:
- sudo apt-get update
- sudo apt-get install build-essential libncurses-dev bison flex libssl- dev libelf-dev
-
Linux Kernel-Quellcode Herunterladen:
- wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.1.tar.xz
- tar -xvf linux-5.10.1.tar.xz
- cd linux-5.10.1
Linux Kernel Übersetzung mittels make
- make help: Zeigt Hilfe zu Make-Parametern
- make config: Abfrage aller Parameter, erzeugt .config
- make oldconfig: basierend auf .config, neue Abfragen
- make listnewconfig: zeigt neue Parameter an
- make all: Baut Kernel-Datei/Image und alle Module
- make modules_install: Installiert Kernel-Module unter /lib
- make install: Installiert Kernel-Image unter /boot
- make firmware_install: Installiert Firmware
Linux Kernel Config mit GUI: QT
-
Installation:
- sudo apt-get install libqt4-dev
- sudo apt-get install g++
Linux Kernel Menuconfig
-
Installation:
- sudo apt-get install libncurses5-dev
- make menuconfig
-
Optionen:
- nicht ausgewählt
- [*] ausgewählt und wird in den Kernel übersetzt
- ausgewählt, so wird das Modul übersetzt (nachladbar!)
- ( ) frei wählbare Option
- --> weiteres Menü folgt
- Navigation: Tabulator, Cursortaste
-
Kommandos:
- /: Suche nach einer Option
- H: Hilfetext
- Y: selektiert eine Option
- N: deselektiert eine Option
- M: wählt die Option als Modul aus
- E: Exit
Linux Kernel Menuconfig (I)
-
Anleitung: Starten Sie die Ubuntu VM, loggen Sie sich als User „test“ (pw: „test“) ein, starten Sie Terminal (CTRL + T), werden Sie „root“ user (sudo bash), Passwort für User „test“ eingeben
- Die Kernel-Quellen liegen unter: /usr/src/linux-XX.YY.ZZ/
Linux Kernel Menuconfig (II)
-
Konfiguration:
- make oldconfig: Erstellt .config aus der aktuell laufenden Konfiguration
- make menuconfig: Ncurses Oberfläche
- make xconfig: QT Oberfläche
- Suchen Sie nach dem Dateisystem EXT4
- Speichern Sie Ihre .config-Datei
- Zählen Sie die Zeilen in der .config-Datei mit wc
Linux Kernel Übersetzung (I)
-
Konfiguration:
- make localmodconfig: erzeugt .config mit nur den momentan geladenen Modulen
- make localyesconfig: erzeugt .config mit allen momentan geladenen Modulen fest im Kern kompiliert
- Vorteile: Kleinerer Kern, weniger Module, kürzere Build Zeit
Linux Kernel übersetzen & installieren
- Den Kernel und alle Module können Sie mit
make all install modules_install
bauen und installieren. - Um detaillierte Ausgaben zu erhalten, fügen Sie
V=1
hinzu:make V=1 all install modules_install
. - Der neue Kernel wird mit
update-grub
dem Boot-Manager (hier: grub) bekannt gemacht. - Überprüfen Sie die Größe der Kernel-Images im Verzeichnis
/boot
. - Verwenden Sie
lsmod
um eine Liste der geladenen Module auf der Konsole anzuzeigen. - Weitere Systemprogramme für Module finden Sie in der Dokumentation.
Linux Kernel booten / starten
- Starten Sie die virtuelle Maschine neu (reboot / restart) um den neuen Kernel zu booten.
- Wählen Sie im Boot-Manager (hier: grub) den neu übersetzten Kernel aus.
- Überprüfen Sie nach dem Einloggen, welche Module geladen sind (Hinweis: lsm…).
- Analysieren Sie die übersetzten Module und identifizieren Sie überflüssige Module, die aus der Konfigurationsdatei (
.config
) entfernt werden können.
Zusammenfassung
- Die Vorlesung vermittelt ein grundlegendes Verständnis des Linux Kernels und seiner Geschichte.
- Sie lernen verschiedene Möglichkeiten zur Konfiguration des Linux Kernels kennen.
- Sie haben praktische Erfahrung mit dem Übersetzen (menuconfig), Installieren und Starten des Linux Kernels gesammelt.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
In diesem Quiz lernen Sie die verschiedenen Klassen von Kernel-Strukturen kennen, wie monolithische, Mikro- und Hybrid-Kernel. Sie erfahren mehr über ihre spezifischen Eigenschaften, Vor- und Nachteile. Testen Sie Ihr Wissen über diese grundlegenden Konzepte der Betriebssystemarchitektur.