
Estoy intentando mover mi /boot
carpeta de la /
partición a /dev/sdb
. El siguiente guión:
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
produce este error:
error: file '/boot/grub/i386-pc/normal.mod' not found.
grub rescue>
¿Algunas ideas?
Editar: Parece que el script anterior funciona bien, si el /boot
directorio original está en una partición separada (por ejemplo /dev/sda2
). Sólo falla si está en la misma partición que la /
partición ( /dev/sda1
).
Probé muchas, muchas variaciones del script anterior, tanto en Ubuntu 13.04 como en Fedora 19, y todavía tengo que evitar el file '/boot/grub/i386-pc/normal.mod' not found
error.
¿Alguna otra idea?
Respuesta1
El problema es que grub está buscando/boot/grub/i386-pc/normal.mod
en la nueva partición. Como la raíz de esa partición ahora está montada en /boot
, el archivo se encuentra actualmente /grub/i386-pc/normal.mod
en la nueva partición. Debe reinstalar grub
en esa partición o, como medida temporal, puede crear un enlace simbólico llamando a ln -s . /boot/boot
, lo que permitirá que el archivo se encuentre con cualquier nombre.
Respuesta2
Haga un "ls" para encontrar su partición de arranque (es decir, una nueva), diga (hdX,Y).
Entonces ls (hdX,Y)/usr/lib/grub/i386-pc
¿Ves el archivo allí?
Probablemente necesites arrancar con un CD o USB de rescate y reinstalar grub. Algo está corrupto.
Respuesta3
Esto sucede porque la prefix
variable, que está codificada en la core.img
imagen, grub-install
ya no coincide con el diseño de su partición. Puede anular temporalmente esta variable manualmente y cargar GRUB una vez ejecutando los siguientes comandos en el shell de rescate:
set prefix=(hd0,1)/boot/grub
insmod normal
normal
El prefijo debe ser la ruta donde residen los archivos de GRUB (grub.cfg, etc.), generalmente es algo así como (hdX,Y)/boot/grub
en el caso de una única partición raíz o (hdX,Y)/grub
si tiene una /boot
partición dedicada. En el caso de un RAID administrado por mdadm, hdX,Y
probablemente sería md/xxx
o mduuid/xxxx...
.
Si todo va bien, GRUB debería poder cargar sus módulos y cargarlos grub.cfg
y usted debería poder iniciar su sistema operativo. Una vez iniciado, ejecute grub-install
para regenerar un core.img
(que estará incrustado en el MBR del disco) con el nuevo prefijo.
Más información en su (horrible)documentación.