
Estou tentando mover minha /boot
pasta da /
partição para /dev/sdb
. O seguinte roteiro:
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
produz este erro:
error: file '/boot/grub/i386-pc/normal.mod' not found.
grub rescue>
Alguma ideia?
Editar: Parece que o script acima funciona bem, se o /boot
diretório original estiver em uma partição separada (digamos /dev/sda2
). Só falha se estiver na mesma partição que a /
partição ( /dev/sda1
).
Eu tentei muitas variações do script acima, tanto no Ubuntu 13.04 quanto no Fedora 19, e ainda não consegui evitar o file '/boot/grub/i386-pc/normal.mod' not found
erro.
Alguma outra ideia?
Responder1
A questão é que o grub está procurando/boot/grub/i386-pc/normal.mod
na nova partição. Como a raiz dessa partição agora está montada em /boot
, o arquivo está atualmente localizado em /grub/i386-pc/normal.mod
na nova partição. Você precisa reinstalar grub
essa partição ou, como medida temporária, pode criar um link simbólico chamando ln -s . /boot/boot
, o que permitirá que o arquivo seja encontrado com qualquer um dos nomes.
Responder2
Faça um "ls" para encontrar sua partição de inicialização (nova), digamos (hdX,Y).
Então ls (hdX,Y)/usr/lib/grub/i386-pc
Você vê o arquivo aí?
Provavelmente você precisará inicializar com um CD de resgate ou USB e reinstalar o grub. Algo está corrompido.
Responder3
Isso acontece porque a prefix
variável, que está codificada na core.img
imagem, grub-install
não corresponde mais ao layout da sua partição. Você pode substituir temporariamente esta variável manualmente e carregar o GRUB uma vez executando os seguintes comandos no shell de resgate:
set prefix=(hd0,1)/boot/grub
insmod normal
normal
O prefixo deve ser o caminho para onde residem os arquivos do GRUB (grub.cfg, etc), geralmente é algo como (hdX,Y)/boot/grub
no caso de uma única partição raiz ou se você tiver uma partição (hdX,Y)/grub
dedicada . /boot
No caso de RAID gerenciado pelo mdadm, hdX,Y
provavelmente seria md/xxx
ou mduuid/xxxx...
.
Se tudo correr bem, o GRUB deverá ser capaz de carregar seus módulos e carregá-los grub.cfg
e você poderá iniciar seu sistema operacional. Uma vez inicializado, execute grub-install
para regenerar um core.img
(que será incorporado no MBR do disco) com o novo prefixo.
Mais informações em seu (horrível)documentação.