Ich bin kein Grub2-Experte (sorry), aber versuchen Sie, --skip-fs-probe
hinzuzufügen zu Ihrer Grub-Installationszeile habe ich festgestellt, dass dies die Erstellung von /boot/grub/device.map
verhindert was dazu führen kann, dass zu einer Grub-Eingabeaufforderung gebootet wird. Ich denke, ohne diesen Parameter denkt grub-install, anstatt zu tun, was Sie ihm sagen, dass es klüger ist als Sie und möglicherweise etwas anderes macht.
Eine andere Sache ist sicherzustellen, dass Sie die richtige Grub-Installation verwenden (dh für Grub2 und nicht für Original Grub). Dies ist kein Problem, wenn Sie sich innerhalb von 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 (Kudos), sollten Sie ein Laufwerk und keine Partition angeben. Grub2 wird in Sektor 0 des gesamten Festplattenlaufwerks installiert, und dieser 'Stub' wird beim Booten ausgeführt, aber es muss wissen, wo auf der Festplatte es die Dateien für die nächste Phase des Bootens installieren soll - das ist, was der --root-directory
Parameter ist für. (glaube ich.)
Lesen von man grub-install
und googeln sehe ich diesen --root-directory
ist nicht wirklich für die grub2-Versionen 1.99++ gedacht, obwohl es meiner Erfahrung nach funktioniert. Sie sollen --boot-directory
verwenden und beziehen Sie sich auf das eigentliche Boot-Verzeichnis, also würden Sie Folgendes erhalten:
grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot
So habe ich eine Debian-Installation verschoben, die aus einer Boot-Partition /boot
besteht und eine Root-Partition /
auf ein neues Laufwerk und machte es mit GNU GRUB bootfähig:
Partitionen klonen
- Erstellen Sie mit der Live-CD von GParted die Boot- und Root-Partition auf dem neuen Laufwerk.
- Mounten Sie mit einer Root-Konsole in GParted die alte Boot-Partition (sagen wir, sie ist
/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 Bootpartition auf die neue:
cp -afv /mnt/oldBoot /mnt/newBoot
. Erläuterung zucp -afv
:a
steht für "archivieren", was bedeutet:- Links nicht dereferenzieren
- rekursiv kopieren (wie
-R
) - alle Attribute beibehalten (Zeitstempel, Eigentümer, Berechtigung)
f
:Erzwingen, wenn eine vorhandene Zieldatei nicht geöffnet werden kann, entfernen Sie sie und versuchen Sie es erneutv
:wortreich, erklären, was getan wird
- Dies erzeugt eine Ausgabe auf Ihrer Konsole, die Ihnen zeigt, welche Datei gerade kopiert wird und ob
cp
macht Fortschritte - Mounten und kopieren Sie die Dateien von Ihrer alten Root-Partition auf die neue:
- Zur Sicherheit:
umount /mnt/oldBoot && umount /mnt/newBoot
- Mounten Sie die alte und die neue Root-Partition (vorausgesetzt, es ist
/dev/sda2
und/dev/sdb2
):mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
- Kopieren Sie die Daten der alten Root-Partition auf die neue Root-Partition:
cp -afv /mnt/oldRoot /mnt/newRoot
- Zur Sicherheit:
- Bearbeite die Dateisystemtabelle, die definiert, welche Partitionen beim Booten gemountet werden (dafür verwende ich Vim):
-
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 zum einfacheren Kopieren und Einfügen mit
:r !blkid
vorübergehend in fstab einfügen -
Verwenden Sie die UUIDs Ihrer neuen Partitionen, um die Einträge in fstab zu ändern. Sie sollten in etwa 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 fstab, die Sie zuvor mit:r !blkid
eingefügt haben
- Entfernen Sie die Ausgabe von
-
GRUB installieren
-
Hängen Sie die virtuellen Dateisysteme der GParted-Live-CD ein:
mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys
-
Stellen Sie die GRUB-Dienstprogramme der GParted-Live-CD für die Root-Partition zur Verfügung:
mount --bind /usr/ /mnt/newRoot/usr
-
Mounten Sie die Boot-Partition auf der Root-Partition, da GRUB seine Konfiguration in
/boot
speichert :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
mitupdate-grub2
-
Installieren Sie GRUB auf dem neuen Laufwerk:
grub-install /dev/sdb
. Sie dürfen hier keine Partitionsnummer angeben -
Zurück zum Dateisystem der GParted Live-CD:
exit
-
Partitionen aushängen:
umount /mnt/newRoot/*
-
Maschine herunterfahren
-
Wenn Sie mehrere Laufwerke angeschlossen haben, vergewissern Sie sich, dass das neuere Laufwerk in der Startreihenfolge an erster Stelle steht
-
Maschine starten
Diese Anweisungen sind inspiriert von denen von oaktreepeak.com.
Alternativ können Sie Clonezilla versuchen, dasselbe zu erreichen.