
Ich versuche, ein Multiboot-USB-Flash-Laufwerk zu erstellen, indem ich GRUB2 verwende, um verschiedene Partitionen auf dem Laufwerk zu verketten. Es funktioniert nicht. IchnichtIch möchte Ratschläge zum Erstellen eines Multiboot-Flash-Laufwerks. Ich weiß, dass es viele Möglichkeiten gibt, das zu tun. Ich binnurinteressiert daran, herauszufinden, warum diese spezielle Methode nicht funktioniert.
Einige Hintergrundinformationen: Ich habe zwei USB-Laufwerke, nennen wir sie USB1 und USB2. Ich versuche gerade, Debian Wheezy auf einem der beiden auf eine Multiboot-freundliche Weise zu installieren. Wenn ich nun einfach das ISO auf USB1 (/dev/sdb) dd:
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb
Dadurch wird ein schönes, bootfähiges Laufwerk erstellt, von dem ich Debian installieren kann. Wenn ich GRUB2 auf USB2 installiere, kann ich außerdem USB1 erfolgreich davon mit folgendem Befehl kettenladen:
search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot
Nun zu meinem Problem: Wenn ich stattdessen eine zweite Partition auf USB2 erstelle und das ISO darauf dd:
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2
Chainloading funktioniert nicht. Es wird keine Fehlermeldung ausgegeben, sondern nur ein schwarzer Bildschirm mit einem blinkenden Strich (reagiert nicht). (Ich habe das mit beiden Laufwerken versucht, daher glaube ich nicht, dass fehlerhafte Hardware schuld ist.)
Warum funktioniert das nicht? Was ist der Unterschied zwischen dem Chainloading eines anderen Laufwerks und dem Chainloading einer anderen Partition auf demselben Laufwerk, wenn sie genau dieselben Daten enthalten?
Antwort1
Zunächst einmal ist ein Disk-Image etwas anderes als ein Partitions-Image. Sie versuchen, Ihr Disk-Image (scheinbar) als beides zu verwenden, was falsch ist. Gehen Sie nicht davon aus, dass alles in Ordnung ist, nur weil dd
keine Fehler angezeigt werden: Es wird alles tun, was Sie ihm sagen, es sei denn, es liegt ein echter IO-Fehler vor.
Wenn Sie das Laufwerk kettenladen, sucht GRUB nach einem Master Boot Record – das ist eine Art Ding, das den Festplatteninhalt startet und Bootcode enthält. Die Partitionsstruktur ist jedoch anders – sie startet nicht einmal mit Code; sie hat einen Boot Record, aber an einem anderen Ort. GRUB kann das auch kettenladen; das Verfahren ist jedoch anders. Da Sie ein Disk-Image in die Partition eingefügt haben, haben Sie nichts leicht Verwendbares erstellt und GRUB erwartet dort mit Sicherheit keinen MBR. Stattdessen führt es zufälligen Maschinencode aus, was für Ihren PC nie gesund ist.
Damit das funktioniert, müssen Sie den Inhalt der Debian-Partition dorthin kopieren und GRUB darauf installieren. Sofern dabei kein Fehler passiert, sollte es einwandfrei funktionieren. Vergessen Sie nicht, Ihre neu zu erstellen /dev/sdc2
!