|
|
|
|
Bootloader Funktion |
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
|
|
Bootloader Funktion |
|
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 |
|
|
cyperdark
Neuling
Dabei seit: 22.01.2003
Beiträge: 11
Herkunft: NRW
|
|
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 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
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 |
|
|
CDW
eine Simulation
Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread
|
|
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
(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 |
|
|
Zirias
BlackBoarder
Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom
|
|
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 |
|
|
Mr.Stevens
BlackBoarder
Dabei seit: 10.01.2002
Beiträge: 873
Herkunft: Lower Oak Creek
|
|
@ 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 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
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 |
|
|
Zirias
BlackBoarder
Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom
|
|
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
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 |
|
|
|
|
|
|