BlackBoard » Computerecke » Betriebssysteme » Linux Bootloader Funktion » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Bootloader Funktion
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Bootloader Funktion       Zum Anfang der Seite springen

Hi,

durch eine Diskussion im IRC ist eine Frage aufgetaucht, die wir irgendwie noch nicht lösen konnten. Daher stelle ich sie mal zu Diskussion:

Beim Bootvorgang wird ja durch das BIOS der Bootloader aufgerufen. Da aber im Bootsektor viel zu wenig Platz für den Kernel ist, wollte ich mal fragen wie lilo da eigentlich rankommt. Das Kernel-Image liegt ja auf der Festplatte in einem bestimmten Verzeichnis und unterliegt somit einem Dateisystem. Wie kann lilo auf dieses Verzeichnis zugreifen? Besitzt lilo einen eigenen ext2-Dateisystemtreiber (was ich mir irgendwie nicht vorstellen kann)?

Und noch eine Frage (aus der die obige eigentlich entstanden ist). Ist es abhängig von der lilo-Version ob der Kernel von einem Reiser-Dateisystem ausgestarter werden kann? Bei meinem System ist nämlich auch die Root-Partition als ReiserFS formatiert. Ich dachte sonst immer, das wenigstens die Root-Partition als ext2 formatiert sein muß.

Danke
MfG Compuholic
05.02.2003 19:42 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Mr.Stevens Mr.Stevens ist männlich
BlackBoarder


images/avatars/avatar-35.gif

Dabei seit: 10.01.2002
Beiträge: 873
Herkunft: Lower Oak Creek

      Zum Anfang der Seite springen

Die Frage müsste man evtl. etwas anders formulieren.
LILO besteht ja bekanntlicherweise aus 2 Stufen. Die erste wird in einem vom BIOS erreichbaren Sektor (Mbr, Bootsektor einer Partition, Diskette...) abgelegt. Ihre Aufgabe ist einzig das Laden der zweiten Stufe (meist /boot/boot.b) in den Hauptspeicher. Die zweite Stufe kennt nun anhand der Datei /boot/map die Lage der verschiedenen Kernel bzw. der zu ladenden Bootsektoren anderer Betriebssysteme.
Die Frage gilt also hier eher boot.b ...
Kann dieses kleine Tool Dateisysteme lesen? Wahrscheinlich schon, sonst wärs ja nicht möglich irgendwas zu laden/booten.

Genau weis ich das jetzt allerdings auch nicht Augen rollen

[edit]
Hab jetzt im SuSE Handbuch was ordentliches zu diesem Thema gefunden. Nachzulesen ab Seite 85 ...
Download des eBooks als zip File ---> HIER
[/edit]

__________________
Jede lumpige Grippewelle erreicht doch heutzutage
mehr Leute als der Humor von Karl Valentin.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Mr.Stevens: 06.02.2003 11:58.

06.02.2003 08:29 Mr.Stevens ist offline E-Mail an Mr.Stevens senden Homepage von Mr.Stevens Beiträge von Mr.Stevens suchen
cyperdark cyperdark ist männlich
Neuling

images/avatars/avatar-249.gif

Dabei seit: 22.01.2003
Beiträge: 11
Herkunft: NRW

      Zum Anfang der Seite springen

beim booten wird eine ramdisk im speicher angelegt. diese erlaubt den zugriff auf das dateisystem. es gibt sogar linuxversionen im inet die auf einer einzigen disk und ganz ohne hd laufen. "minilinux" ist hier das schlüsselwort. such mal bei google, dort wird zum teil auch sehr gut und genau erklärt wie das funktioniert mit dem booten. falls du doch noch fragen hast kann ich auch mal in meinen alten linuxunterlagen suchen und dir was zum thema schicken.

__________________
cu
cyperdark

~*\member/*~
www.txtdepot.de.vu
www.egocrew.de
06.02.2003 13:54 cyperdark ist offline E-Mail an cyperdark senden Homepage von cyperdark Beiträge von cyperdark suchen
DooMRunneR
Aufsteiger


images/avatars/avatar-511.jpg

Dabei seit: 14.10.2002
Beiträge: 43

      Zum Anfang der Seite springen

Genau genommen handelt es sich bei Lilo um verschiedene Programme und Dateien. Das Kommando lilo ist dabei der so genannte Map-Installer, der alle für den Bootmanager benötigten Dateien an die entsprechenden Stellen im System platziert. lilo ist stets aufzurufen, sobald sich an irgend einer für den Bootmanager wichtigen Datei (/etc/lilo.conf, Kernel, /boot/map) etwas geändert hat.

Der Bootmanager lilo selbst besteht aus zwei Stufen. Die erste wird in einem vom BIOS erreichbaren Sektor (Mbr, Bootsektor einer Partition, Diskette...) abgelegt. Ihre Aufgabe ist einzig das Laden der zweiten Stufe (meist /boot/boot.b) in den Hauptspeicher.

Die zweite Stufe kennt nun anhand der Datei »/boot/map« die Lage der verschiedenen Kernel bzw. der zu ladenden Bootsektoren anderer Betriebssysteme. Zur Auswahl dieser bietet lilo ein einfaches Kommandozeileninterface an, das neben der Selektion des Betriebssystems auch die Übergabe von Optionen an dieses erlaubt. Alternativ präsentieren neuere Programmversionen eine grafische Oberfläche. Diese kann ggf. durch Eingabe von [Esc] verlassen werden, um Optionen an einen Kernel zu übergeben.

Lilo lädt nun den Kernel in den Hauptspeicher, teilt diesem die Lage des Root-Verzeichnisses und eventuelle Optionen mit und übergibt abschließend die Kontrolle an den Kernel.

__________________

Sicherheit ist relativ

06.02.2003 16:27 DooMRunneR ist offline E-Mail an DooMRunneR senden Homepage von DooMRunneR Beiträge von DooMRunneR suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Das war doch gar nicht die Frage *kopfschüttel*

Ich formuliere sie noch einmal anders. Wie kann LILO auf Dateien auf der Festplatte, die sich ja innerhalb eines Dateisystems befinden, lesen? Bevor der Kernel gestartet ist, ist es doch nicht möglich auf Dateisysteme zuzugreifen, weil der Treiber erst mit dem Kernel gestartet wird.
06.02.2003 16:49 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

Zitat:

lilo erstellt so etwas wie eine Tabelle mit "Sektornummern" von
den zu ladenden Sektoren. Der eigentliche Bootloader kennt GAR KEIN
Filesystem, nur der "Installer" (der diese Load-Map, also diese Liste
von Blocknummern, erzeugt, muss das Filesystem kennen, um diese Infor-
mation herauszubekommen). Das ist auch der Grund, warum man lilo nach
Austausch des Boot-Kernels neu aufrufen ("installieren") muss, grub
aber nicht (solange sich der Name des Boot-Kernels nicht geaendert hat).

Der eigentliche
Bootloader kennt kein Linux-Filesystem, deswegen wird beim installieren
eine Liste der Platten-Sektoren angelegt, die zu dem Kernel gehoeren (die
sog. "load-map"). Wird ein neuer Kernel installiert, MUSS die load-map
neu erstellt werden.


so wie ich das verstanden hab, sind die sektoren,wo Lilo-Hauptprogramm liegt, im Bootsektor mitgespeichert - da der Code in Bootsektor automatisch ausgeführt wird,nehme ich an, dass angegeben wird, von welchem bis welchem sektor Lilo zu finden ist - da muss auch kein Dateisystemvorhanden sein smile (da meinem Verständniss nach das DAteisystem vereinfacht gesagt eine Art Tabelle ist, wo man die Dateinamen und die zugehörigen Sektoren findet - deshalb nimmt z.b bei NTFS bei meiner 30 GB platte das Dateisystem "system volume Information" auch so viel Platz weg (etwa 125 MB)
naja, hier kann mans vielleicht genau nachlesen:
http://packages.qa.debian.org/l/lilo.html
Der Zugriff kann dadurch erfolgen, dass man die BIOS Routinen dafür einsetzt (interrupts *g*)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von CDW: 06.02.2003 18:39.

06.02.2003 18:38 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
Zirias Zirias ist männlich
BlackBoarder


images/avatars/avatar-450.jpg

Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom

      Zum Anfang der Seite springen

Bei ext2 (sowie wahrscheinlich auch bei den meisten anderen Filesystemen) sind Datenblocks von Metadatenblocks getrennt. Lilo muss also nur die Blocknummern wissen, auf denen es den Kernel findet. Achja die Blockeinteilung der Platte ist dateisystemunabhängig, sie wird beim lowlevel-Format vorgenommen. LILO liest einfach nur die Block ein, eine "triviale" Plattenoperation.

Im Gegensatz dazu hat grub wirklich eine ext2-Leseunterstützung und findet also über die Metadatenblocks die richtigen zu lesenden Blocknummern erst beim booten heraus. Es muss also nur einen Pfadnamen wissen, um den Kernel zu finden. Das hat den Vorteil, dass man wegen einer neuen Kernelversion nicht auch einen neuen Bootblock schreiben muss, außerdem kann man über die Kommandozeile auch im Notfall ein Kernel laden, das in der Konfigurationsdatei garnicht angegeben war.

Greets, Ziri

__________________
palmen-it.de
GCS/MU d+(++) s+: a C++ UL++++ P+++$ L+++ !E W+++ N+ o? K? w++$ !O M-- V?
PS+ PE++ Y+ PGP++ t !5 X- R- tv b+ DI++ D+ G e++ h r y+
06.02.2003 23:26 Zirias ist offline Homepage von Zirias Beiträge von Zirias suchen
Mr.Stevens Mr.Stevens ist männlich
BlackBoarder


images/avatars/avatar-35.gif

Dabei seit: 10.01.2002
Beiträge: 873
Herkunft: Lower Oak Creek

      Zum Anfang der Seite springen

@ DoomRunner

Sag mal, liest du eigentlich nicht die Posts die vor deinem abgegeben werden, oder schreibst du gern schon dagewesenes ??

tststs

__________________
Jede lumpige Grippewelle erreicht doch heutzutage
mehr Leute als der Humor von Karl Valentin.
07.02.2003 07:19 Mr.Stevens ist offline E-Mail an Mr.Stevens senden Homepage von Mr.Stevens Beiträge von Mr.Stevens suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Noch etwas:

Was passiert eigentlich, wenn das Kernel-Image fragmentiert auf der Platte abgelegt wird? Dann müßte lilo doch eigentlich am Ende sein. Oder kann man beim Speichern irgendetwas ähnliches wie das DONT_FRAGMENT Flag bei IP setzen?
07.02.2003 16:11 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Zirias Zirias ist männlich
BlackBoarder


images/avatars/avatar-450.jpg

Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom

      Zum Anfang der Seite springen

Ich kenne die Details zwar nicht, aber spekuliere einfach mal wild, dass Lilo nicht nur den ersten sondern alle Blocks (oder zumindest Anfänge) kennt. Und solange das Kernel nicht neu geschrieben wird kann es ja auch nicht fragmentiert werden großes Grinsen Wenn man es neu schreibt, muss sich Lilo eh neu in den Bootblock schreiben.

__________________
palmen-it.de
GCS/MU d+(++) s+: a C++ UL++++ P+++$ L+++ !E W+++ N+ o? K? w++$ !O M-- V?
PS+ PE++ Y+ PGP++ t !5 X- R- tv b+ DI++ D+ G e++ h r y+
07.02.2003 20:59 Zirias ist offline Homepage von Zirias Beiträge von Zirias suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Computerecke » Betriebssysteme » Linux Bootloader Funktion

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH