Wie findet der Bootloader die Datei /boot/grub/xxx_stage1_5 ?
Hallo Liste, mein Problem habe ich lösen können, aber aus Neugier (und fürs bessere Reparieren beim nächsten mal) noch Fragen zur Wirkungsweise von grub. Diverse Seiten im Netz sagen, dass im MBR der Bootcode liegt, um die stage1_5 Datei laden und ausführen zu können. Nun nehme ich an, dass der Code im MBR sicher nicht mit dem/jedem file-system umgehen kann, wo das System drauf ist, das es zu booten gilt. Frage 1: Wie findet der Bootloader die Datei "/boot/grub/<fs>_stage1_5" ? Ist im MBR die physikalische Adresse auf der Platte hinterlegt, wo die Datei zu finden ist? Ist es dann so, dass diese Datei nie physikalisch auf einen anderen Platz "verschoben" werden darf ? Frage 2: Welche grub Befehle werden bei einer Neu-Installation defaultmäßig von openSuse ausgeführt? Ist es das gleiche wie grub> root (hd0,x) setup (hd0) Oder wird noch mehr gemacht, wie z. B. "grub-install /dev/hda" Danke, Michael -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Wed, 03 Aug 2011, Michael schrieb:
Frage 1: Wie findet der Bootloader die Datei "/boot/grub/<fs>_stage1_5" ? Ist im MBR die physikalische Adresse auf der Platte hinterlegt, wo die Datei zu finden ist?
Die Datei wird i.d.R. direkt hinter den MBR geschrieben (beim Install: "embedding stage1.5 ... 17 Sectors" (o.ä.). Stage 1 hat nur 1 Sektor ;) Die Adresse von Stage1.5 wird mit in den MBR geschrieben. Nur wenn das nicht möglich ist verwedet Grub wohl die Sektoradresse in /boot/, z.B. wenn du in die /-Partition installierst (und es kein reiserfs ist, da hat's vorne 128 Sektoren frei),
Ist es dann so, dass diese Datei nie physikalisch auf einen anderen Platz "verschoben" werden darf ?
womit auch das beantwortet sein sollte.
Frage 2: Welche grub Befehle werden bei einer Neu-Installation defaultmäßig von openSuse ausgeführt? Ist es das gleiche wie
grub> root (hd0,x) setup (hd0)
Oder wird noch mehr gemacht, wie z. B. "grub-install /dev/hda"
Mehr oder weniger. Guck in deine /etc/grub.conf. -dnh -- "If Pacman had affected us as kids we'd be running around in dark rooms, munching pills and listening to repetitive music." -- Marcus Brigstocke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 03.08.2011 20:26, schrieb Michael:
mein Problem habe ich lösen können, aber aus Neugier (und fürs bessere Reparieren beim nächsten mal) noch Fragen zur Wirkungsweise von grub. Diverse Seiten im Netz sagen, dass im MBR der Bootcode liegt, um die stage1_5 Datei laden und ausführen zu können. Nun nehme ich an, dass der Code im MBR sicher nicht mit dem/jedem file-system umgehen kann, wo das System drauf ist, das es zu booten gilt.
Korrekt, der Platz reicht nicht aus. Und dann stehen dem grub nicht mal die kompletten 512 Byte zur Verfügung, sondern er muss sich den Platz u.a. auch noch mit der Partitionstabelle teilen. Ihm, genau stage1 von grub, gehören somit nur 440 Byte vom MBR. Mit diesem "Stummel" wird entweder direkt stage2, oder zunächst mal stage1_5 (das ist mittlerweile die Regel) geladen.
Frage 1: Wie findet der Bootloader die Datei "/boot/grub/<fs>_stage1_5" ? Ist im MBR die physikalische Adresse auf der Platte hinterlegt, wo die Datei zu finden ist?
Zunächst mal ist es ja so, dass stage1_5 nicht immer gebraucht wird. Ob es gebraucht wird, entscheidet Grub bei der Installation. Wenn es zum Booten gebraucht wird, dann kopiert grub die benötigte Variante von stage1_5 (entscheidend ist das Dateisystem auf dem /boot residiert) zwischen MBR und den Beginn der ersten Partition. Das ist übrigens auch ein Grund, warum Deine erste Partition nicht bei Sektor 1 beginnt (fdisk -l).
Ist es dann so, dass diese Datei nie physikalisch auf einen anderen Platz "verschoben" werden darf ?
Doch, darfst Du verschieben.
Frage 2: Welche grub Befehle werden bei einer Neu-Installation defaultmäßig von openSuse ausgeführt? Ist es das gleiche wie
grub> root (hd0,x) setup (hd0)
Welche Optionen Yast verwendet, kannst Du in /etc/grub.conf nachlesen. Dabei wird Dir auffallen, dass Yast das alles in einer "setup"-Zeile ab handelt. Das verstehst Du wenn du die man page von grub liest. Das was Du da mit root angibst, kann bei dem von Yast verwendeten Syntax weggelassen werden. Inhaltlich ist das aber das selbe. Ansonsten verwendet Yast noch standardmäßig die Option --force-lba. Die hilft, wenn das BIOS buggy ist und falsche Informationen zu LBA liefert. BTW: Das was da in der grub.conf steht, kannst Du übrigens auch direkt in der Kommandozeile verwenden: grub < /etc/grub.conf
Oder wird noch mehr gemacht, wie z. B. "grub-install /dev/hda"
Was Yast sonst noch macht, weiß ich nichtgenau, aber das Script ruft es bestimmt nicht auf. Wenn Du nämlich mal in das Script "grub-install" rein guckst, findet sich u.a. ein Hinweis, dass man diese Script nicht verwenden soll und stattdessen "yast2 bootloader" aufrufen soll. Und ansonsten endet das Script mit "grub --batch < /etc/grub.conf", also der Möglichkeit, die ich oben aufführte. Wie auch immer, ich habe bisher keine Unterschiede zwischen der manuellen und der yast-Installation festgestellt. Wobei neulich hatten wir hier auf der Liste einen Fall ... aber das war wirklich schräg und lies sich eigentlich gar nicht richtig erklären, weder das Verhalten nach manueller, noch nach Installation via yast. -- Herzliche Grüße Tao -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On 03.08.2011 22:25, Tao te Puh wrote:
Am 03.08.2011 20:26, schrieb Michael:
mein Problem habe ich lösen können, aber aus Neugier (und fürs bessere Reparieren beim nächsten mal) noch Fragen zur Wirkungsweise von grub. Diverse Seiten im Netz sagen, dass im MBR der Bootcode liegt, um die stage1_5 Datei laden und ausführen zu können. Nun nehme ich an, dass der Code im MBR sicher nicht mit dem/jedem file-system umgehen kann, wo das System drauf ist, das es zu booten gilt.
Korrekt, der Platz reicht nicht aus. Und dann stehen dem grub nicht mal die kompletten 512 Byte zur Verfügung, sondern er muss sich den Platz u.a. auch noch mit der Partitionstabelle teilen. Ihm, genau stage1 von grub, gehören somit nur 440 Byte vom MBR. Mit diesem "Stummel" wird entweder direkt stage2, oder zunächst mal stage1_5 (das ist mittlerweile die Regel) geladen.
Frage 1: Wie findet der Bootloader die Datei "/boot/grub/<fs>_stage1_5" ? Ist im MBR die physikalische Adresse auf der Platte hinterlegt, wo die Datei zu finden ist?
Zunächst mal ist es ja so, dass stage1_5 nicht immer gebraucht wird. Ob es gebraucht wird, entscheidet Grub bei der Installation. Wenn es zum Booten gebraucht wird, dann kopiert grub die benötigte Variante von stage1_5 (entscheidend ist das Dateisystem auf dem /boot residiert) zwischen MBR und den Beginn der ersten Partition. Das ist übrigens auch ein Grund, warum Deine erste Partition nicht bei Sektor 1 beginnt (fdisk -l).
Ist es dann so, dass diese Datei nie physikalisch auf einen anderen Platz "verschoben" werden darf ?
Doch, darfst Du verschieben.
Frage 2: Welche grub Befehle werden bei einer Neu-Installation defaultmäßig von openSuse ausgeführt? Ist es das gleiche wie
grub> root (hd0,x) setup (hd0)
Welche Optionen Yast verwendet, kannst Du in /etc/grub.conf nachlesen. Dabei wird Dir auffallen, dass Yast das alles in einer "setup"-Zeile ab handelt. Das verstehst Du wenn du die man page von grub liest. Das was Du da mit root angibst, kann bei dem von Yast verwendeten Syntax weggelassen werden. Inhaltlich ist das aber das selbe.
Ansonsten verwendet Yast noch standardmäßig die Option --force-lba. Die hilft, wenn das BIOS buggy ist und falsche Informationen zu LBA liefert.
BTW: Das was da in der grub.conf steht, kannst Du übrigens auch direkt in der Kommandozeile verwenden:
grub < /etc/grub.conf
Oder wird noch mehr gemacht, wie z. B. "grub-install /dev/hda"
Was Yast sonst noch macht, weiß ich nichtgenau, aber das Script ruft es bestimmt nicht auf. Wenn Du nämlich mal in das Script "grub-install" rein guckst, findet sich u.a. ein Hinweis, dass man diese Script nicht verwenden soll und stattdessen "yast2 bootloader" aufrufen soll.
Und ansonsten endet das Script mit "grub --batch < /etc/grub.conf", also der Möglichkeit, die ich oben aufführte.
Wie auch immer, ich habe bisher keine Unterschiede zwischen der manuellen und der yast-Installation festgestellt. Wobei neulich hatten wir hier auf der Liste einen Fall ... aber das war wirklich schräg und lies sich eigentlich gar nicht richtig erklären, weder das Verhalten nach manueller, noch nach Installation via yast.
Danke euch allen für die Antworten! VG, Michael -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
David Haller
-
Michael
-
Tao te Puh