Das Verschieben von /boot auf eine neue Partition führt zu: Datei „/boot/grub/i386-pc/normal.mod“ nicht gefunden

Das Verschieben von /boot auf eine neue Partition führt zu: Datei „/boot/grub/i386-pc/normal.mod“ nicht gefunden

Ich versuche, meinen /bootOrdner von der /Partition nach zu verschieben /dev/sdb. Das folgende Skript:

parted -s /dev/sdb mklabel msdos mkpart primary ext2 1M 100% set 1 boot on
mkfs.ext2 /dev/sdb1
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
cd /boot
find . -depth -print0 | \
    cpio --null --sparse --make-directories --pass-through --verbose /mnt/boot
cd /
umount /mnt/boot
mv /boot /boot.orig
mkdir /boot
echo "/dev/sdb1 /boot ext2 ro 0 2" >>/etc/fstab
mount /dev/sdb1 /boot
parted /dev/sda set 1 boot off
grub-install /dev/sdb
update-grub
reboot

erzeugt diesen Fehler:

error: file '/boot/grub/i386-pc/normal.mod' not found.
grub rescue>

Irgendwelche Ideen?

Bearbeiten: Es scheint, dass das obige Skript einwandfrei funktioniert, wenn sich das Originalverzeichnis /bootauf einer separaten Partition befindet (sagen wir /dev/sda2). Es schlägt nur fehl, wenn es sich auf derselben Partition befindet wie die /Partition ( /dev/sda1).

Ich habe viele, viele Variationen des obigen Skripts sowohl unter Ubuntu 13.04 als auch unter Fedora 19 ausprobiert und konnte den file '/boot/grub/i386-pc/normal.mod' not foundFehler bisher nicht vermeiden.

Irgendwelche anderen Ideen?

Antwort1

Das Problem ist, dass Grub sucht nach/boot/grub/i386-pc/normal.mod auf der neuen Partition. Da das Stammverzeichnis dieser Partition nun unter gemountet ist /boot, befindet sich die Datei derzeit unter /grub/i386-pc/normal.modauf der neuen Partition. Sie müssen entweder grubauf dieser Partition neu installieren oder können als vorübergehende Maßnahme einen symbolischen Link erstellen ln -s . /boot/boot, indem Sie aufrufen, wodurch die Datei unter jedem beliebigen Namen gefunden werden kann.

Antwort2

Führen Sie ein „ls“ aus, um Ihre (neue) Bootpartition zu finden, sagen wir (hdX,Y).

Dann ls (hdX,Y)/usr/lib/grub/i386-pc

Sehen Sie die Datei dort?

Wahrscheinlich müssen Sie mit einer Rettungs-CD oder einem USB-Stick booten und Grub neu installieren. Irgendetwas ist beschädigt.

Antwort3

Dies liegt daran, dass die prefixVariable, die im core.imgImage fest codiert ist, grub-installnicht mehr mit Ihrem Partitionslayout übereinstimmt. Sie können diese Variable vorübergehend manuell überschreiben und GRUB einmal laden, indem Sie die folgenden Befehle in der Rettungsshell ausführen:

set prefix=(hd0,1)/boot/grub
insmod normal
normal

Das Präfix sollte der Pfad sein, in dem die GRUB-Dateien (grub.cfg usw.) gespeichert sind. Normalerweise ist es so etwas wie (hdX,Y)/boot/grubbei einer einzelnen Root-Partition oder (hdX,Y)/grubwenn Sie eine dedizierte /bootPartition haben. Bei einem von mdadm verwalteten RAID hdX,Ywäre das wahrscheinlich md/xxxoder mduuid/xxxx....

Wenn alles richtig läuft, sollte GRUB in der Lage sein, seine Module zu laden grub.cfgund Sie sollten Ihr Betriebssystem starten können. Führen Sie nach dem Booten aus, grub-installum ein core.img(das in den MBR der Festplatte eingebettet wird) mit dem neuen Präfix neu zu generieren.

Weitere Infos in ihrem (schrecklichen)Dokumentation.

verwandte Informationen