pasta / boot excluída por engano e reiniciada

16

Eu excluí por engano a pasta / boot do meu sistema de arquivos, reiniciei e tudo o que recebo agora é o seguinte:

error: file '/boot/grub/i368-pc/linux.mod' not found.

grub rescue>
Imad Nouari
fonte
é diferente, nesse caso, a pasta / boot foi completamente excluída. não apenas alguns arquivos, obrigado.
Imad Nouari
Eu não acho que nenhuma das respostas sobre a outra pergunta seja suficiente para corrigir isso.
Graeme
É justo, realmente não leu todas as respostas. Eu sempre sugeriria reconstruir a coisa toda, em vez de tentar descobrir o que estava faltando, de modo que alguém lá também teria. Leva metade do tempo.
Tentáculos de Cthulhu
7
O erro muito maior comparado à exclusão /booté, é claro, reiniciar o sistema antes que isso fosse corrigido.
Anthon

Respostas:

36

Opa!

Aqui está o que fazer:

  1. Inicialize uma distribuição ao vivo. Este pode ser o seu disco de instalação do Ubuntu ou outro como o Knoppix .

  2. Encontre a unidade / partição em que você instalou seu sistema de arquivos raiz. Para fazer isso, você pode abrir um terminal e executar sudo parted -lou sudo fdisk -l. Se você não souber, edite sua pergunta e adicione a saída.

  3. Supondo que a partição raiz que você encontrou da última etapa seja /dev/sdxy( xdeve ser outra letra e ydeve ser um número), execute os seguintes comandos em um terminal:

    mkdir mnt
    sudo mount /dev/sdxy mnt
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo chroot mnt
    
  4. Agora você estará dentro de um chrootambiente, o que significa que executar comandos aqui é equivalente a executá-los em seu sistema instalado. A primeira coisa que você deseja fazer é reinstalar o GRUB2 no dispositivo para que ele copie os arquivos corretos na /bootpasta. Para fazer isso, execute o seguinte com a unidade em que sua partição raiz está (ou seja, /dev/sdxycom o número ( y) removido):

    grub-install /dev/sdx
    
  5. Agora você deseja descobrir quais pacotes instalados possuem arquivos no diretório de inicialização e reinstalá-los. Isso substituirá as imagens do kernel que foram excluídas entre outras coisas. O comando para encontrar os pacotes é:

    dpkg -S /boot
    

    E para reinstalá-los:

    apt-get --reinstall install ...
    

    Onde ...é substituído pelos nomes dos pacotes do primeiro comando. Não inclua vírgulas, apenas tenha os nomes dos pacotes com espaços para separar.

    Essa etapa provavelmente exigirá acesso à Internet (a menos que os pacotes já estejam no cache), portanto, verifique se você está conectado se houver algum problema.

  6. Como você excluiu seus kernels e os reinstalou, isso deve ter acionado uma atualização do GRUB2 automaticamente. Mas, caso não tenham, você pode executar:

    update-grub
    
  7. Reinicie e agora as coisas devem ser corrigidas. Um problema que tive na última vez que fiz algo semelhante foi que as instalações do Windows não foram encontradas update-grubquando executadas no chrootdevido a um erro no Windows os-prober. Se este for um problema, basta executar sudo update-grubnovamente no sistema reparado.

Graeme
fonte
@ Oliver, obrigado eu originalmente tinha em /dev/sdaxtodos os lugares, em seguida, mudou para /dev/sdxy.
Graeme
Obrigado pela ótima informação - ele me salvou, com uma adição. Como tenho um RAID de software, também tive que seguir as instruções aqui: help.ubuntu.com/community/Grub2/Instalando sob a reinstalação usando o método chroot para iniciar o mdadm e montar os membros do RAID e fazer as montagens adequadamente. Depois do chroot, reinstale os pacotes como descrito nesta resposta e está tudo bem!
bitfiddler