Kerneltheorie: Nanokernel und Modularer Kernel
40 Questions
2 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Was war der ursprüngliche Zweck von Linus Torvalds' Programm?

Um ein kleines Terminalprogramm zu entwickeln, um sich auf den Servern seiner Universität einzuloggen.

Wie viele Zeilen Code umfasst das Open Source Betriebssystem MINIX?

Ungefähr 12.000 Zeilen Code.

Welchen Ansatz verfolgt der Micro-Kernel von MINIX?

Er verwendet einen Micro-Kernel Ansatz.

An welchem Datum kündigte Linus Torvalds die Entwicklung seines Betriebssystems an?

<p>Am 25.08.1991.</p> Signup and view all the answers

Was ist Torvalds' Einstellung zu Sicherheitsfehlern in Software?

<p>Er betrachtet Sicherheitsfehler als 'normale Fehler' und verfolgt sie nicht speziell.</p> Signup and view all the answers

Welche Rolle spielt Linus Torvalds in der Entwicklung von Linux?

<p>Er ist eine starke Persönlichkeit, die Diskussionen und verschiedene Entwicklungsziele zulässt.</p> Signup and view all the answers

Warum wird Linux als erfolgreich angesehen?

<p>Wegen Linus Torvalds' Führung und seiner Teamarbeit mit anderen Entwicklern.</p> Signup and view all the answers

Welche Programme hatte Torvalds zu seinem Betriebssystem portiert?

<p>Bash (1.08) und gcc (1.40).</p> Signup and view all the answers

Was sind die Hauptverzeichnisse im Linux Kernel und ihre Funktionen?

<p>Die Hauptverzeichnisse sind: <code>documentation/</code> für Dokumentation, <code>arch/</code> für architekturabhängige Dateien, <code>drivers/</code> für Treiber, <code>fs/</code> für Filesysteme, <code>include/</code> für C-Header, <code>init/</code> für den Bootstart, <code>kernel/</code> für architekturunabhängige Schnittstellen, <code>mm/</code> für Memory Management und <code>net/</code> für Netzwerkfunktionalität.</p> Signup and view all the answers

Welche Werkzeuge benötigen Sie, um den Linux Kernel zu übersetzen?

<p>Man benötigt einen Compiler zur Übersetzung, ein Build-Tool wie <code>make</code> und ein Tool zur Installation des Kernels, wie <code>update-grub</code>.</p> Signup and view all the answers

Welche unterstützenden Tools können optional beim Bauen eines Linux Kernels verwendet werden?

<p>Optionale Tools sind Ncurses, GTK+, QT und der g++ Compiler.</p> Signup and view all the answers

Was ist die Funktion des Verzeichnisses mm/ im Linux Kernel?

<p><code>mm/</code> ist für die Memory Management Schnittstelle zuständig und verwaltet den Speicher des Systems.</p> Signup and view all the answers

Warum ist das Verzeichnis drivers/ im Linux Kernel so wichtig?

<p><code>drivers/</code> enthält alle Low-Level Treiber, die für die Interaktion mit der Hardware notwendig sind.</p> Signup and view all the answers

Was ist die Rolle des Verzeichnisses init/ im Linux Kernel?

<p>Das Verzeichnis <code>init/</code> ist verantwortlich für den Einstiegspunkt nach dem Booten des Systems, insbesondere für die <code>start_kernel</code>-Funktion.</p> Signup and view all the answers

Erläutern Sie die Funktion des Verzeichnisses net/ im Linux Kernel.

<p><code>net/</code> enthält die Netzwerk-Schnittstellen des Kernels, jedoch keine Treiber.</p> Signup and view all the answers

Wo finden Sie eine Schritt-für-Schritt-Anleitung zum Konfigurieren und Bauen eines Linux Kernels?

<p>Die Anleitung findet sich auf dem GitLab Server der HS Esslingen unter <a href="https://gitlab.hs-esslingen.de/dgrewe/betriebssysteme">https://gitlab.hs-esslingen.de/dgrewe/betriebssysteme</a>.</p> Signup and view all the answers

Was ist ein Nanokernel und welche Vorteile und Nachteile hat er?

<p>Ein Nanokernel ist eine kleinere Version eines Microkernels mit geringer Basisfunktionalität. Vorteile sind die Leichtgewichtigkeit und Minimalismus, Nachteile sind der hohe Entwicklungsaufwand.</p> Signup and view all the answers

Erkläre, was ein modularer Kernel ist und nenne ein Beispiel.

<p>Ein modularer Kernel ist ein monolithischer Kernel, der zur Laufzeit Module nachladen kann, ohne das System neu zu starten. Ein Beispiel ist der Linux-Kernel mit Linux Kernel Modules.</p> Signup and view all the answers

Wer ist Linus Torvalds und was war sein Beitrag zur Entwicklung von Linux?

<p>Linus Torvalds ist ein Informatikstudent, der 1991 den ersten Linux-Kernel programmierte. Er begann, um die Schutzmechanismen des Intel i386 Prozessors auszuprobieren.</p> Signup and view all the answers

Welche Rolle spielte die Free Software Foundation in der Geschichte von Linux?

<p>Die Free Software Foundation, gegründet von Richard Stallman, fördert die Entwicklung freier Software und stellte essentielle Werkzeuge wie den GNU C Compiler zur Verfügung. Sie hat auch die GNU Public License (GPL) ins Leben gerufen.</p> Signup and view all the answers

Was wurde 1985 von Richard Stallman gegründet und wie beeinflusste dies die Softwareentwicklung?

<p>Richard Stallman gründete die Free Software Foundation (FSF) im Jahr 1985. Dies legte den Grundstein für die Idee der freien Software und die Verbreitung von Lizenzen wie der GPL.</p> Signup and view all the answers

Was ist der Unterschied zwischen einem Nanokernel und einem modularen Kernel?

<p>Der Nanokernel hat eine sehr geringe Funktionalität und ist minimalistisch, während ein modularer Kernel zusätzliche Funktionalitäten zur Laufzeit nachladen kann. Dies macht den modularen Kernel flexibler.</p> Signup and view all the answers

Nenne einen Nachteil des modularen Kernels.

<p>Ein Nachteil des modularen Kernels ist, dass er die Komplexität eines monolithischen Kernels beibehält. Dies kann die Fehleranfälligkeit erhöhen.</p> Signup and view all the answers

Was war der Zweck des verwendeten Host-Betriebssystems Minix durch Linus Torvalds?

<p>Minix wurde als Host-Betriebssystem genutzt, um die Programme auf dem Intel i386 auszuführen. Es diente als Grundlage für Torvalds' experimentelle Arbeiten.</p> Signup and view all the answers

Wie erstellen Sie die .config-Datei aus der aktuell laufenden Konfiguration?

<p>$ make oldconfig</p> Signup and view all the answers

Welche Befehle können Sie verwenden, um eine neue Kernel-Konfiguration zu erstellen?

<p>$ make menuconfig oder $ make xconfig</p> Signup and view all the answers

Wie können Sie die Anzahl der Zeilen in der .config-Datei ermitteln?

<p>$ wc -l .config</p> Signup and view all the answers

Was bewirken die Befehle $ make localmodconfig und $ make localyesconfig?

<p>$ make localmodconfig aktiviert nur die momentan geladenen Module, während $ make localyesconfig diese Module fest im Kernel kompiliert.</p> Signup and view all the answers

Welchen Befehl nutzen Sie, um das Kernel-Abbild und alle Module zu bauen und zu installieren?

<p>$ make all install modules_install</p> Signup and view all the answers

Wie machen Sie den neuen Kernel dem Boot-Manager bekannt?

<p>$ update-grub</p> Signup and view all the answers

Welchen Befehl verwenden Sie, um eine Liste aller derzeit geladenen Module anzuzeigen?

<p>$ lsmod</p> Signup and view all the answers

Warum könnte das Übersetzen eines Kernels mit vielen aktivierten Optionen sehr lange dauern?

<p>Weil zusätzliche Treiber, Debugging-Optionen und viele Parallel-Builds die Build-Zeit erheblich verlängern können.</p> Signup and view all the answers

Welche Abhängigkeiten müssen installiert werden, um mit der Linux-Kernel-Entwicklung zu beginnen?

<p>build-essential, libncurses-dev, bison, flex, libssl-dev, libelf-dev</p> Signup and view all the answers

Was ist der Zweck des Befehls make oldconfig?

<p><code>make oldconfig</code> fragt neue Parameter basierend auf einer vorhandenen .config-Datei ab.</p> Signup and view all the answers

Welches Tool wird verwendet, um den Linux-Kernel zu übersetzen?

<p>Das Tool <code>make</code> wird verwendet, um den Linux-Kernel zu übersetzen.</p> Signup and view all the answers

Wie wird der Linux-Kernel-Quellcode heruntergeladen?

<p>Mit dem Befehl <code>wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.1.tar.xz</code>.</p> Signup and view all the answers

Nennen Sie zwei Befehle, die notwendig sind, um die Kernel-Module zu installieren.

<p><code>make modules_install</code> und <code>make install</code>.</p> Signup and view all the answers

Welche grafische Benutzeroberfläche wird empfohlen, um die Linux-Kernel-Konfiguration zu erleichtern?

<p>Die <code>menuconfig</code>-Oberfläche wird empfohlen.</p> Signup and view all the answers

Was ist der Zweck des Befehls make help?

<p><code>make help</code> zeigt Hilfe zu Make-Parametern an.</p> Signup and view all the answers

Welche zusätzlichen Pakete müssen installiert werden, um menuconfig zu verwenden?

<p>libncurses5-dev und g++ sollten installiert werden.</p> Signup and view all the answers

Study Notes

Nanokernel

  • Der Nanokernel ist eine kleinere Version des Microkernels, die nur grundlegende Funktionen wie Prozesskommunikation und Interrupt-Management bereitstellt.
  • Vorteile: Sehr leichtgewichtig und minimalistisch; geeignet für Embedded-Geräte.
  • Nachteil: Hoher Aufwand in der Entwicklung und Anpassung an Geräte.
  • Beispiele: EPOC Kernel von Symbian (z.B.: Nokia Telefone wie 3210).

Modularer Kernel

  • Der modulare Kernel ist im Wesentlichen ein monolithischer Kernel, der jedoch das Nachladen von Funktionalität zur Laufzeit mittels Modulen ermöglicht, ohne das System neu starten zu müssen.
  • Vorteile: Sehr flexibles System um Funktionalität nachzuladen, ohne Neustart; Reduzierung des Speicherverbrauchs, da nur geladene Module Ressourcen verbrauchen.
  • Nachteil: Erbt weiterhin die Komplexität von Monolithischen Kernel.
  • Beispiele: Linux (moderne Versionen mit Linux Kernel Modules).

Linux Geschichte

  • Linus Torvalds, ein 21-jähriger Informatikstudent aus Helsinki, kaufte 1991 einen PC-AT mit Intel i386 Prozessor.
  • Er wollte die Schutzmechanismen des neuen Prozessors ausprobieren und entwickelte einen kleinen Bootloader, der zwei Prozesse startet, wechselseitig ausführt, und diese "a" und "b" ausgeben lässt.
  • Für die Entwicklung nutzte er den gcc Compiler der GNU Free Software Foundation und das Minix Betriebssystem, einen UNIX-Clone von Prof. Andrew Tanenbaum der Freien Universität Amsterdam.

Vorherige Entwicklungen

  • 1985 gründete Richard Stallman die Free Software Foundation (FSF).
  • 1991 gründete Richard Stallman die GNU Public License (GPL) und entwickelte die Software GNU Hurd, GNU Emacs und GNU C Compiler.
  • 1991 entwickelte Prof. Andrew S. Tanenbaum für seine Betriebssystemvorlesung an der Freien Universität Amsterdam das MINIX Betriebssystem.
  • MINIX wurde als Open-Source-Software veröffentlicht (~12k Zeilen Code).
  • Änderungen am Code waren jedoch stark eingeschränkt.
  • MINIX basierte auf einem Micro-Kernel Ansatz.

Linus Torvalds & Minix

  • Linus Torvalds wollte ein kleines Terminalprogramm entwickeln, um sich auf den Servern seiner Universität einzuloggen
  • Am 25.08.1991 sandte Linus eine E-Mail an die Newsgroup des MINIX Teams, in der er einen freien Minix-Clone ankündigte.

Erfolg von Linux

  • Gründe für den Erfolg von Linux:
    • Linus Torvalds ist eine starke Persönlichkeit, die die Entwicklung vorantreibt.
    • Linus Torvalds akzeptiert und bindet frühzeitig Vertraute und Mitstreiter in die Entwicklung ein.
    • Er versteht es, auch konträre Entwicklungsziele zu berücksichtigen.

Übersicht des Linux Kernels

  • Die Struktur des Linux Kernels hat sich seit Beginn nicht verändert:
    • documentation/ (Alles über Linux)
    • arch/ (Architektur-abhängige Dateien z.B. x86)
    • drivers/ (Alle Low-Level Treiber für Hardware)
    • fs/ (Schnittstelle und Code für Filesysteme)
    • include/ (Alle C-Header Dateien)
    • init/ (Einsprung nach dem Booten: start_kernel)
    • kernel/ ( Architektur-unabhängige Schnittstellen)
    • mm/ (Memory Management Schnittstelle)
    • net/ (Netzwerk Schnittstelle – ohne Treiber)

Linux Kernel bauen

  • Um den Linux Kernel zu übersetzen und auszutauschen, benötigt man folgende Werkzeuge:
    • Einen Compiler zur Übersetzung des Programmcodes.
    • Build-Tool um den Kernel zu bauen (make).
    • Tool um den gebauten Kernel zu installieren (update-grub).

Hilfestellung

  • Auf dem GitLab Server der Hochschule finden Sie eine Schrittweise Anleitung zum Konfigurieren und Bauen eines Linux-Kernels.
  • https://gitlab.hs-esslingen.de/dgrewe/betriebssysteme

Voraussetzungen (II)

  • Abhängigkeiten installieren:
    • sudo apt-get update
    • sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev
  • Kernel-Quellcode herunterladen und entpacken
    • 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

Kernel Übersetzung mit Make

  • Die "Eigenschaften" von Linux werden konfiguriert.
  • Das Tool make ermöglicht den Bau des Kernels.
    • make help (zeigt Hilfe zu Make-Parametern an)
    • make config (fragt nach allen Parametern, erzeugt .config)
    • make oldconfig (basierend auf einer .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 (Das selbe evtl. mit neuerer Firmware)

Kernel Konfiguration mit Qt

  • Für die Verwendung von Qt benötigt Ubuntu:
    • sudo apt-get install libqt4-dev
    • sudo apt-get install g++

Kernel Konfiguration mit Menuconfig

  • Für die Verwendung von Menuconfig benötigt man:
    • sudo apt-get install libncurses5-dev
    • sudo make menuconfig

Kernel Konfiguration Menuconfig (II)

  • Erstellen/Machen Sie die .config aus der aktuell laufenden Konfiguration:
    • make oldconfig
  • Erstellen/Umkonfigurieren Sie den Kernel:
    • make menuconfig (Ncurses Oberfläche)
    • make xconfig (QT Oberfläche, falls QT4-Bibliothek installiert)
  • Suchen Sie die Option für das Dateisystem EXT4 …
  • Speichern Sie Ihre .config-Datei beim Beenden.
  • Wieviele Zeilen hat Ihre .config-Datei?(Hint: wc…)

Kernel Übersetzung (I)

  • Die Übersetzung des Kernels mit der aktuell erstellten Konfiguration würde eine Ewigkeit dauern.

  • Das von Debian bereitgestellte Dateisystem ist schnell, aber bei vielen parallelen "builds" wäre es sehr langsam.

  • Debian aktiviert alle möglichen Treiber und Optionen!

  • Kernel-Debugging und andere Optionen sind ebenfalls aktiviert, die uns (und unter einer VM) nicht interessieren.

  • Modifizierte Konfiguration:

    • make localmodconfig (erzeugt .config, die nur die momentan geladenen Module aktiviert)
    • make localyesconfig (erzeugt .config, die alle momentan geladenen Module fest in den Kern kompiliert! Keine weiteren Module)
    • Kleinerer Kern, weniger Module, kürzere "build" Zeit

Kernel Übersetzung & Installation (II)

  • Bauen und installieren Sie das Kernel-Abbild / Image und alle Module:
    • make all install modules_install
    • make V=1 all install modules_install (v = verbose; liefert Ausgaben)
  • Machen Sie den neuen Kernel dem Boot-Manager (hier: grub) bekannt: update-grub
  • Wie groß sind die Images in /boot?
  • Geben Sie sich eine Liste aller geladenen Module auf der Konsole aus:
    • lsmod (Liste aller derzeit geladenen Module)

Kernel Booten / Starten

  • Booten / Starten Sie Ihren neuen Kernel.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Linux Kernel (PDF)

Description

Dieser Quiz behandelt die Konzepte des Nanokernels und des modularen Kernels in Betriebssystemen. Er lernt die Vor- und Nachteile beider Kerneltypen sowie deren Anwendungen und historische Entwicklungen kennen. Ideal für Studierende der Informatik und Technikinteressierte.

Use Quizgecko on...
Browser
Browser