Mover / boot para nova partição produz: file '/boot/grub/i386-pc/normal.mod' não encontrado

3

Estou tentando mover minha pasta /boot da partição / para /dev/sdb . O script a seguir:

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 idéia?

Editar : parece que o script acima funciona bem, se o diretório /boot original estiver em uma partição separada (digamos, /dev/sda2 ). Ele só falha se estiver na mesma partição que a partição / ( /dev/sda1 ).

Eu tentei muitas, muitas variações do script acima, tanto no Ubuntu 13.04 quanto no Fedora 19, e ainda tenho que evitar o erro file '/boot/grub/i386-pc/normal.mod' not found .

Alguma outra ideia?

    
por Ross Smith II 16.07.2013 / 18:02

3 respostas

6

O problema é 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 nessa partição ou, como uma medida temporária, você pode criar um link simbólico chamando ln -s . /boot/boot , o que permitirá que o arquivo seja encontrado em qualquer nome.

    
por 16.07.2013 / 23:52
3

Faça um "ls" para encontrar a sua partição de boot (nova que seja) diga (hdX, Y).

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

Você vê o arquivo lá?

Provavelmente você precisa inicializar com um cd de resgate ou usb e reinstalar o grub. Algo está corrompido.

    
por 16.07.2013 / 18:21
0

Isso acontece porque a variável prefix , que é codificada permanentemente na imagem core.img por grub-install , não corresponde mais ao layout da partição. Você pode substituir temporariamente esta variável manualmente e carregar o GRUB uma vez executando os seguintes comandos no shell de recuperação:

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

O prefixo deve ser o caminho para onde os arquivos do GRUB (grub.cfg, etc) residem, geralmente é algo como (hdX,Y)/boot/grub no caso de uma única partição raiz ou (hdX,Y)/grub se você tiver uma partição /boot dedicada . No caso de RAID gerenciado pelo mdadm, o hdX,Y provavelmente seria md/xxx ou mduuid/xxxx... .

Se tudo der certo, o GRUB deve conseguir carregar seus módulos e carregar seu grub.cfg e você deve ser capaz de iniciar o seu sistema operacional. Uma vez iniciado, execute grub-install para gerar um core.img (que será incorporado no MBR do disco) com o novo prefixo.

Mais informações na documentação <(horrível) .

    
por 14.04.2015 / 18:39

Tags