Was passiert nach dem Laden des Linux-Kernel-Images in den RAM?


9

Ich möchte nur wissen, wie viele Aktivitäten nach dem Laden des Linux-Kernel-Images in den RAM nach dem Startvorgang ablaufen.


2
Das solltest du nicht wissen wollen . Was Sie wollen sollten, ist es zu lernen .
Alex

Antworten:


15

Ab Linux 2.6:

Kernel

Nach dem Laden in den RAM führt der Kernel die folgenden Funktionen aus.

setup()::

  1. Erstellen Sie eine Tabelle im RAM, die das Layout des physischen Speichers beschreibt.
  2. Stellen Sie die Verzögerung und Rate der Tastaturwiederholung ein.
  3. Initialisieren Sie die Videoadapterkarte.
  4. Initialisieren Sie den Festplattencontroller mit Festplattenparametern.
  5. Suchen Sie nach dem IBM Micro Channel-Bus.
  6. Suchen Sie nach PS / 2-Zeigegeräten (Busmaus).
  7. Überprüfen Sie, ob Advanced Power Management (APM) unterstützt wird.
  8. Wenn dies unterstützt wird, erstellen Sie eine Tabelle im RAM, in der die verfügbaren Festplatten beschrieben werden.
  9. Wenn das Kernel-Image wenig RAM hat, verschieben Sie es auf High.
  10. Setzen Sie den A20-Pin (ein Kompatibilitäts-Hack für alte 8088-Mikroprozessoren).
  11. Richten Sie eine vorläufige Interrupt-Deskriptortabelle (IDT) und eine vorläufige globale Deskriptortabelle (GDT) ein.
  12. Setzen Sie die Gleitkommaeinheit (FPU) zurück.
  13. Programmieren Sie die programmierbaren Interrupt-Controller (PIC) neu.
  14. Wechseln Sie vom Real- in den geschützten Modus.

startup_32()::

  1. Initialisieren Sie Segmentierungsregister und einen vorläufigen Stapel.
  2. Löschen Sie alle Bits im eflagsRegister.
  3. Füllen Sie den Bereich nicht initialisierter Daten mit Nullen.
  4. Ruft decompress_kernel()auf, um das Kernel-Image zu dekomprimieren.

startup_32() (gleicher Name, andere Funktion):

  1. Initialisieren Sie die endgültigen Segmentierungsregister.
  2. Füllen Sie das bssSegment mit Nullen.
  3. Initialisieren Sie vorläufige Kernel-Seitentabellen.
  4. Paging aktivieren.
  5. Richten Sie den Kernel-Modus-Stack für Prozess 0 ein.
  6. Löschen Sie erneut alle Bits im eflagsRegister.
  7. Füllen Sie das IDT mit Null-Interrupt-Handlern.
  8. Initialisieren Sie den ersten Seitenrahmen mit Systemparametern.
  9. Identifizieren Sie das Modell des Prozessors.
  10. Initialisieren Sie Register mit den Adressen von GDT und IDT.

start_kernel(): Nahezu jede Kernelkomponente wird von dieser Funktion initialisiert, dies sind nur einige wenige.

  • Planer
  • Speicherzonen
  • Buddy-Systemzuordnung
  • IDT
  • SoftIRQs
  • Datum (und Uhrzeit
  • Plattenverteiler
  • Prozess erstellen 1 ( /sbin/init)

Die vollständige "Liste" finden Sie in den Quellen unter linux / init / main.c.

Drin

Init startet den gesamten erforderlichen Benutzerprozess, um das System in den gewünschten Zustand zu versetzen. Diese Routine hängt stark von der Verteilung und dem aufgerufenen Runlevel ab.

Geben Sie runlevelin die Konsole ein, um den aktuellen Runlevel Ihres Systems anzuzeigen.

Schauen Sie sich /etc/rcX.d/(oder /etc/rc.d/rcX.d/) an und ersetzen Sie das X durch Ihr Runlevel.
Dies sind Symlinks, die nach Ausführungspriorität geordnet sind. S01....Dies bedeutet, dass dieses Skript sehr früh gestartet wird und S99....am Ende des Startvorgangs ausgeführt wird. Die KXX....Symlinks machen dasselbe, nur für die Shutdown-Sequenz.

Im Allgemeinen verarbeiten diese Skripte Festplatten, Netzwerke, Protokollierung, Gerätesteuerung, spezielle Treiber, Umgebung und viele andere erforderliche Sequenzen.


LXR ist eine schöne Schnittstelle zum Lesen der Linux- Kernelquelle . Schöne Liste, aber Vorsicht, viele davon sind sehr architekturabhängig (dies ist die PC-Version).
Gilles 'SO - hör auf böse zu sein'

1
  • Der Kernel übernimmt die Steuerung des System-H / W, sobald Sie "Linux dekomprimieren .." sehen.
  • Der Kernel überprüft und legt die BIOS-Register der Grafikkarten und das Bildschirmausgabeformat fest.
  • Der Kernel liest dann die BIOS-Einstellungen und initialisiert grundlegende Hardwareschnittstellen.
  • Als nächstes initialisieren die Treiber im Kernel die Hardware.
  • Dann prüft der Kernel die Partitonen
  • Anschließend wird das Root-Dateisystem bereitgestellt
  • Dann startet der Kernel init, das das Hauptsystem mit all seinen Programmen und Konfigurationen startet.

0

Der Bootloader springt über die Kernel-Befehlszeile (falls vorhanden) zum Image-Einstiegspunkt, und der Kernel erledigt den Rest.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.