On Mon, Feb 04, 2008 at 09:17:06PM +0100, Thomas Findeisen wrote: > Gibt es eine Möglichkeit den vorhandenen Grub auszulesen? Ich weiss von > welchem MBR gestartet wird aber kann die Kette nicht mehr ganz > nachvollziehen durch welche sich die SCSI-Platten dann einhängen.
Bevor die Datei /boot/grub/menu.lst ins Spiel kommt, definiert der MBR, auf welcher Platte/Partition nach ihr gesucht wird Der Zugriff läuft so ab: Als erstes lädt das i386-BIOS den Grub First Stage Bootloader, der im MBR abgespeichert ist. Im MBR ist zusätzlich abgespeichert, auf welcher Platte auf welcher Stelle der Fist Stage Bootloader den Grub Second Stage Bootloader findet, den er ins RAM laden muß. Beim Installieren von Grub wurde dieser Second Stage Bootloader in ein Verzeichnis /boot/grub gespeichert und gleichzeitig der eben erwähnte Zeiger im MBR passend gesetzt. Dieser Zeiger findet sich im MBR ab der Stelle 07C40, anzuschauen z.B. durch dd if=/dev/hda of=- bs=512 count=1 | od -xa Dort ist folgendes zu finden: 07C40 .... Das einzelne Byte an dieser Stelle definiert das Startlaufwerk, auf dem der Second Stage Bootloader liegt. 80 definiert die erste Platte, 81 die zweite usw. Wen interessiert, von welcher Platte Grub bootet, muß also dieses Byte anschauen. 07C41 .... Ist dieses Byte auf 0 gesetzt (Regelfall), dann gilt im folgenden LBA-Schreibweise. 07C42 .... 07C43 .... Diese beiden Bytes sind für uns in diesem Zusammenhang nicht wichtig. 07C44 .... 07C45 .... 07C46 .... 07C47 .... Diese vier Bytes definieren in LBA-Schreibweise den ersten Sektor, in dem der Second Stage Bootloader liegt. Grub kümmert sich an dieser Stelle nicht um Partitionen oder Part- tionsgrenzen. Diese vier Byte können auf eine beliebige Stelle auf der Platten verweisen. Will man wissen, welche Partition betroffen ist, muß man die Partitionstabelle der betroffenen Platte analysieren. Grub kümmert an dieser Stelle auch nicht, welches Dateisystem auf der betreffenden Partition installiert wurde. In dieser Phase arbeitet Grub ähnlich wie Lilo, nämlich rein blockorientiert. D.h. insbesondere, dass man Grub neu installieren/anpassen muss, sollte der Second Stage Bootloader aus irgendeinen Grund verschoben werden, z.B. durch Umkopieren. Den Second Stage Bootloader von Grub kann man im Dateisystem der be- troffenen Partition als ganz normale Datei sehen. Üblicherweise liegt sie im Verzeichnis /boot/grub. Dorthin wird sie standardmässig von Grub installiert (und kaum jemand wird sich die Mühe machen, das zu ändern). Im Dateisystem trägt dieser Second Stage Bootloader verschiedene Namen, je nachdem, in was für einen Dateisystemtyp er liegt. Handelt es sich um ein EXT2-Dateisystem, heißt der Grub Second Stage Bootloader e2fs_stage_1_5, im Fat-Dateisystem fat_stage_1_5 usw. Grub installiert der Einfachheit halber alle Second Stage Bootloader gleichzeitig. Von diesen wird aber immer nur ein bestimmter genutzt, nämlich derjenige, der zum jeweiligen Dateisystem passt. Erst *** nachdem *** der Second Stage Bootloader im Ram geladen ist und ausgeführt wird, kommt die Datei /boot/grub/menu.lst ins Spiel. Hier kann man, wie bereits in der Mail von Frank Guthausen ausgeführt wurde, nachsehen, welche Platten/Partitionen/Kernel/Paramter etc anschliessend zum Hochfahren eines Betriebssystemes verwendet werden. Für weitere Details zum MBR von Grub siehe: http://mirror.href.com/thestarman/asm/mbr/GRUB.htm pv -- Linux mailing list [email protected] subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo
