
Ich versuche, meinen /boot
Ordner 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 /boot
auf 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 found
Fehler 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.mod
auf der neuen Partition. Sie müssen entweder grub
auf 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 prefix
Variable, die im core.img
Image fest codiert ist, grub-install
nicht 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/grub
bei einer einzelnen Root-Partition oder (hdX,Y)/grub
wenn Sie eine dedizierte /boot
Partition haben. Bei einem von mdadm verwalteten RAID hdX,Y
wäre das wahrscheinlich md/xxx
oder mduuid/xxxx...
.
Wenn alles richtig läuft, sollte GRUB in der Lage sein, seine Module zu laden grub.cfg
und Sie sollten Ihr Betriebssystem starten können. Führen Sie nach dem Booten aus, grub-install
um 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.