Je tente de déplacer mon dossier /boot
de la partition /
, vers /dev/sdb
. Le script suivant:
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
produit cette erreur:
error: file '/boot/grub/i386-pc/normal.mod' not found. grub rescue>
Des idées?
Edit : Il semble que le script ci-dessus fonctionne correctement, si le directory original /boot
trouve sur une partition séparée (par exemple /dev/sda2
). Il échoue seulement s'il se trouve sur la même partition que la partition /dev/sda1
( /dev/sda1
).
J'ai essayé beaucoup de variantes du script ci-dessus, sur Ubuntu 13.04 et Fedora 19, et je n'ai pas encore trouvé le file '/boot/grub/i386-pc/normal.mod' not found
erreur file '/boot/grub/i386-pc/normal.mod' not found
.
D'autres idées?
Le problème est que grub search /boot/grub/i386-pc/normal.mod
sur la nouvelle partition . Comme la racine de cette partition est maintenant montée dans /boot
, le file se trouve actuellement dans /grub/i386-pc/normal.mod
sur la nouvelle partition. Vous devez réinstaller grub
sur cette partition ou, à titre de mesure temporaire, vous pouvez créer un lien symbolique en appelant ln -s . /boot/boot
ln -s . /boot/boot
, ce qui permettra de find le file sous n'importe quel nom.
Faites un "ls" pour find votre partition de démarrage (nouvelle qui est) dire (hdX, Y).
Ensuite, ls (hdX, Y) / usr / lib / grub / i386-pc
Voyez-vous le file là-bas?
Probablement, vous devez démarrer avec un CD de secours ou USB, et réinstaller grub. Quelque chose est corrompu.
Cela arrive parce que la variable prefix
, qui est codée en dur dans l'image core.img
par grub-install
ne correspond plus à la disposition de la partition. Vous pouvez replace temporairement cette variable manuellement et charger GRUB une fois en exécutant les commands suivantes dans le shell de secours:
set prefix=(hd0,1)/boot/grub insmod normal normal
Le préfixe doit être le path vers où résident les files de GRUB (grub.cfg, etc), c'est généralement quelque chose comme (hdX,Y)/boot/grub
dans le cas d'une seule partition racine, ou (hdX,Y)/grub
si vous avoir une partition dédiée /boot
. Dans le cas de RAID géré par mdadm, le hdX,Y
serait probablement md/xxx
ou mduuid/xxxx...
Si tout se passe bien, GRUB devrait pouvoir charger ses modules et charger son grub.cfg
et vous devriez être capable de démarrer votre operating system. Une fois démarré, lancez grub-install
pour régénérer un core.img
(qui sera incorporé dans le MBR du disque) avec le nouveau préfixe.
Plus d'infos dans leur (terrible) documentation .