Ich habe eine virtuelle Box mit CentOS.

Ich habe eine neue virtuelle Festplatte an die vorhandene CentOS-VM angeschlossen und bin „m Ich versuche jetzt, GRUB auf dieser neu angeschlossenen Festplatte zu installieren.

Später werde ich eine zweite VM mit einer neu vorbereiteten bootfähigen Festplatte mit einem benutzerdefinierten Root-Dateisystem und Kernel aufrufen.

I. Ich habe die folgenden Schritte ausgeführt:

  • Eine neue virtuelle Festplatte wurde an die vorhandene funktionierende CentOS-Maschine angehängt.
  • Erstellt eine neue Partition mit fdisk /dev/sdb. Während der Partitionierung habe ich die Optionen primäre Partition, Partitionsnummer 1 und andere Standardoptionen ausgewählt.
  • Formatierte die Festplatte mit mkfs.ext3 /dev/sdb1.
  • Die Festplatte wurde an /media/new_drive gemountet.
  • Installierter GRUB grub-install /dev/sdb1 --root-directory=/media/new_drive/.

Danach wurde die zweite VM mit der neu vorbereiteten Festplatte nicht mehr gestartet. Ich habe den Fehler erhalten: could not read from the boot medium. Es scheint, dass der MBR nach grub-install nicht aktualisiert wird, aber ich kann GRUB unter /boot/grub auf dem neuen Laufwerk installiert sehen.

Aber das Schlimmste ist, dass mein vorhandener CentOS GRUB beschädigt wurde: Die CentOS-VM hängt mit einem schwarzen Bildschirm. Der einzige Text ist GRUB.

Warum Ändert grub-install /dev/sdb1 den MBR von sdb1 nicht? Ist dies nicht der richtige Weg, um GRUB auf einem neuen Laufwerk zu installieren?

Kommentare

  • /dev/sdb1 ist dies nicht Wenn das BIOS nach MBR sucht, befindet es sich ‚ in /dev/sdb, dh dem allerersten Sektor der Festplatte.
  • Meinst du, ich muss grub-install /dev/sdb --root-directory=/media/new_drive/ anstelle von sdb1
  • verwenden? Ja, genau das bedeutet @wurtel
  • Ja. Angenommen, Sie ‚ haben ein geeignetes Root-Dateisystem an diesem Speicherort abgelegt (‚ sieht diesen Schritt nicht zwischen dem Mounten und dem Ausführen von Grub) -install).
  • Ich werde es mit / dev / sdb versuchen, ja, ‚ hat nicht erreicht, bis das Root-Dateisystem eingestellt wurde. Ich dachte, ich werde zuerst versuchen, es zu zeigen up grub screen.

Antwort

Ich bin kein grub2-Experte (sorry), aber versuchen Sie, --skip-fs-probe zu Ihrer grub-install-Zeile. Ich habe festgestellt, dass dies die Erstellung von /boot/grub/device.map verhindert, was zum Booten einer grub-Eingabeaufforderung führen kann. Ich denke, dass dies ohne dies der Fall ist Der Parameter grub-install hält das, anstatt das zu tun, was Sie ihm sagen, für klüger als Sie und kann etwas anderes tun.

Eine andere Sache ist, sicherzustellen, dass Sie die richtige grub-install verwenden (dh für grub2 und nicht für original grub). Dies ist kein Problem, wenn Sie sich in Centos befinden, aber mit SystemRecoveryCD sind beide Versionen verfügbar und Sie müssen also grub2-install verwenden. Ich habe es auf die harte Tour gelernt …

Und wie @wurtel betonte (Lob), sollten Sie ein Laufwerk angeben, keine Partition. Grub2 wird in Sektor 0 des gesamten Festplattenlaufwerks installiert, und dieser „Stub“ wird beim Booten ausgeführt. Er muss jedoch wissen, wo sich die Dateien auf der Festplatte befinden, um die Dateien für die nächste Phase des Bootens zu installieren. Dies ist das --root-directory ist für. (Ich denke.)

Lesen von man grub-install und googeln Ich sehe, dass --root-directory nicht wirklich dazu gedacht ist grub2 Versionen 1.99 ++, obwohl es meiner Erfahrung nach funktioniert. Sie sollten --boot-directory verwenden und auf das tatsächliche Startverzeichnis verweisen, sodass Sie Folgendes erhalten:

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot 

Kommentare

  • Mein erster Versuch war ohne Partitionierung und Formatierung grub-install /dev/sdb, aber es gab einen Fehler. Später habe ich es mit einer partitionierten und formatierten Festplatte versucht. Mit einer formatierten Festplatte, die ich immer / dev / sdb1 verwendet habe, werde ich es mit –skip-fs-probe
  • @Renjith versuchen. Oh, und das Stammverzeichnis sollte sich darauf beziehen Der gemountete Mountpunkt, wenn Sie grub-install ausführen. Sie müssen also die Partition auf dem neuen Laufwerk mounten, z Geben Sie bei /mnt/sys2 und dann in Ihrer Grub-Install-Zeile --root-directory=/mnt/sys2 an. Es ist ‚ kontraintuitiv (wie viele Grub-Sachen, denke ich), aber ‚ funktioniert so.
  • habe meine Antwort etwas bearbeitet …
  • Der Grub im Moment verwende ich 0.97, was ‚ nicht unterstützt –skip-fs-probe . aber ohne das hat es funktioniert. sdb1 war der Fehler.
  • ok, ich bin froh, dass du es gelöst hast, das ist altes Maden, nicht das neuere ‚ glänzende ‚ grub2. Ich habe ‚ nicht bemerkt, dass RedHat so langsam zu grub2 überging. CentOS 7 verwendet grub2, CentOS 6 (und früher) verwendet grub.

Antwort

So habe ich eine Debian-Installation verschoben, die aus einer Boot-Partition und eine Root-Partition / auf ein neues Laufwerk und machte es mit GNU GRUB bootfähig:

Klonen von Partitionen

  • Erstellen Sie mithilfe der GParted-Live-CD die Boot- und Root-Partition auf der neuen Laufwerk.
  • Mounten Sie mithilfe einer Root-Konsole in GParted die alte Boot-Partition (sagen wir mal /dev/sda1) und die neue Partition (/dev/sdb1): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Kopieren Sie die Daten von der alten Boot-Partition auf die neue: cp -afv /mnt/oldBoot /mnt/newBoot. Erläuterung von cp -afv:
    • a steht für “ archive “ was bedeutet:
      • keine Dereferenzierungslinks
      • rekursiv kopieren (wie -R)
      • alle Attribute beibehalten (Zeitstempel, Eigentümer, Berechtigung)
  • f: Erzwingen, wenn eine Zieldatei vorhanden ist kann nicht geöffnet werden, entfernen Sie es und versuchen Sie es erneut
  • v: ausführlich, erklären Sie, was getan wird
  • Dadurch wird auf Ihrer Konsole eine Ausgabe generiert, die Ihnen zeigt, welche Datei gerade kopiert wird und ob cp Fortschritte macht.
  • Hängen Sie die Dateien von Ihrer alten Root-Partition ein und kopieren Sie sie auf die neue:
    • Aus Sicherheitsgründen: umount /mnt/oldBoot && umount /mnt/newBoot
    • Mounten Sie die alte und die neue Root-Partition (vorausgesetzt, es ist „s und /dev/sdb2): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Kopieren Sie die Daten a der alten Root-Partition zur neuen Root-Partition: cp -afv /mnt/oldRoot /mnt/newRoot
  • Bearbeiten Sie die Dateisystemtabelle , die definiert, welche Partitionen beim Booten gemountet werden (ich werde dafür Vim verwenden):
    • vi /etc/fstab

    • Sie werden feststellen, dass hier auf Ihre alten Partitionen verwiesen wird. Verwenden Sie stattdessen die UUIDs der neuen Partitionen.

    • Sie können alle UUIDs vorübergehend in fstab einfügen, um das Kopieren und Einfügen mit :r !blkid

    • Verwenden Sie die UUIDs Ihrer neuen Partitionen, um die Einträge in fstab zu ändern. Sie sollten ungefähr so aussehen:

       `# <file system> <mount point> <type> <options> <dump> <pass> # Root partition UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1 # Boot partition UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2` 
      • Entfernen Sie die Ausgabe von blkid aus der von Ihnen eingefügten fstab früher mit :r !blkid
  • GRUB

      installieren

    • Mounten Sie die virtuellen Dateisysteme der GParted-Live-CD:

      mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys

    • Make Die GRUB-Dienstprogramme der GParted-Live-CD, die der Root-Partition zur Verfügung stehen: mount --bind /usr/ /mnt/newRoot/usr

    • Mounten Sie die Boot-Partition seit GRUB auf der Root-Partition speichert seine Konfiguration in /boot: mount /dev/sdb1 /mnt/newRoot/boot

    • Verwenden Sie chroot /mnt/newRoot, um die neue Root-Partition vorübergehend zum Root des Dateisystems zu machen

    • Erstellen Sie eine GRUB-Konfigurationsdatei unter /boot/grub/grub.cfg Verwenden von update-grub2

    • Installieren Sie GRUB auf dem neuen Laufwerk: grub-install /dev/sdb. Sie dürfen hier keine Partitionsnummer angeben.

    • Kehren Sie zum Dateisystem der GParted-Live-CD zurück: exit

    • Partitionen aushängen: umount /mnt/newRoot/*

    • Maschine herunterfahren

    • Wenn Sie mehrere Laufwerke angeschlossen haben, stellen Sie sicher, dass das neuere Laufwerk in der Startreihenfolge an erster Stelle steht.

    • Starten Sie den Computer

    Diese Anweisungen sind von denen von oaktreepeak.com inspiriert.

    Alternativ können Sie Clonezilla ein Versuch, dasselbe zu erreichen.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.