Erro no Grub, nada dá certo! DD:

Iniciado por giovannipaquier, 01 de Julho de 2011, 09:52

tópico anterior - próximo tópico

giovannipaquier

Olá, eu tenho um ubuntu que foi instalado no meu HD externo Samsung S2 Portable através da versão 10.10. A atualização dele para a versão 11.04 ocorreu "normalmente", porém ele anda muito lerdo ultimamente. Então, recentemente resolvi usar o dpkg do modo de recuperação, e desde então ele dá um erro no grub, aparece o seguinte texto:

"Minimal BASH-Like line editing is supported... [e mais texto]
[e depois do texto aparece:]
grub>"

Eu já tentei realizar através do live-cd no terminal o sudo fdisk -l, blábláblá,e quando executo isso no terminal instalo o grub na unidade sdf (sda, sdb, sdg, etc) e acaba dando um outro tipo de erro, e ele pede o

"grub rescue>"

Porém não consigo reinstalar o grub2. Então achei uma série de tópicos, e em um deles encontrei os seguintes comandos:

"linux (hd0,1)/vmlinuz root=/dev/sdf1 (ou sdg, sdb, etc)
[enter]
initrd (hd0,1)/initrd.img
[enter]
boot
[enter]"

aí tudo corre normalmente, porém tenho que realizar isso todas as vezes que ligo o ubuntu, e queria saber como reparar meu grub2 de vez. Se não tem jeito, queria reinstalar o ubuntu, já com a versão 11.04 sem perder meus aplicativos e preferências, pois demorei muuuito para conseguir deixar meu ubuntu do meu jeito.

Por favor, ajudaaa. DD:

xluisfernando

Aparentemente, o endereço UUID da partição foi alterado com a recuperação e com isso o sistema não localiza no boot. Uma opção seria recuperar o grub a partir do live-CD, tomando o cuidado de fazer isso com o HD externo conectado. Assim, teoricamente, os endereços UUID seriam corrigidos.

Se não der certo, você terá que editar manualmente o /etc/grub.d/40_custom e criar uma entrada personalizada
Samsung Ativ Book i3 - Ubuntu 20.04LTS

giovannipaquier

CitarUma opção seria recuperar o grub a partir do live-CD, tomando o cuidado de fazer isso com o HD externo conectado. Assim, teoricamente, os endereços UUID seriam corrigidos.

como faço isso? e o comando que tenho que digitar (/etc/grub.d/40_custom) eu faço quando aparece o "minimal bash" ou iniciando pelo live-cd e digitando no terminal?

xluisfernando

Você deve iniciar uma sessão live-CD (com o CD de instalação do ubuntu), com o HD externo conectado e seguir o tutorial:
http://ubuntuforum-br.org/index.php/topic,14614.0.html
Samsung Ativ Book i3 - Ubuntu 20.04LTS

giovannipaquier

consegui, usei a seguinte dica:

CitarA-3 - Dica do Éderson (única que veio das dicas do GRUB legacy)
   
    Com um LiveCD do Ubuntu 9.10 abra um terminal (Aplicações -> Acessórios -> Terminal) e digite:
   
Código:
sudo fdisk -l
   Você verá com este comando todas as partições disponíveis no seu computador.
    Agora monte a partição que possui o seu Ubuntu.
   
Código:
sudo mount -t ext3 /dev/sda5 /mnt
   NÃO esqueça de trocar ext3 pelo tipo de partição (reiserfs, ext2, ext3, ext4, xfs) e sda5 pela
    partição onde você instalou o Ubuntu!
    Com a partição montada, chega a hora de recuperar o Grub
   
Código:
sudo grub-install --root-directory=/mnt /dev/sda
   Pronto, acabou!

já que agora ta arrumado o grub, como faço pra remover as versões anteriores que ficam aparecendo lá?
e também como faço para reparar outros danos no sistema, caso haja algum?

xluisfernando

O grub2 lista os kerneis linux disponíveis no HD, independentemente da partição em que estão instalados, além de outros sistemas operacionais presentes. Logicamente, você poderia resolver isso simplesmente desinstalando o kerneis antigos e deixando somente o que está em uso, mas isso não é muito recomendável, pois se por algum motivo houver uma falha nesse kernel sempre haverá a possibilidade de carregar o mais antigo.

Uma coisa interessante a se fazer é criar uma entrada personalizada no arquivo /etc/grub.d/40_custom

Para isso:
Citarsudo gedit /boot/grub.cfg

Copie somente as entradas referentes ao último kernel de cada distribuição e dos outros sistemas operacionais instalados
Citarsudo gedit /etc/grub.d/40_custom
Cole as entradas copiadas e edite o nome que você quer que apareça na lista.
Citarsudo -x /etc/grub.d/10_linux /etc/grub.d/20_memtest86+ 30_os-prober
Esse comando simplesmente vai retirar do menu as entradas geradas automaticamente, deixando o menu limpo, apenas com as entradas que você selecionou.

Logicamente que esse comando só será efetivamente aplicado depois do sudo update-grub

Existe um inconveniente: com esse comando ficam disponíveis apenas as entradas para os kerneis e sistemas selecionados previamente e o sistema simplesmente deixa de atualizar as entradas para o kerneis novos liberados para as distribuições. Desse jeito, ou você fica restrito ao kernel definido anteriormente (o que pode ser interessante se você usa uma versão LTS com Kernel novo e otimizado), ou você terá que reverter o comando usando "+x", rodar o sudo update-grub e refazer o processo, sempre que quiser usar um kernel mais novo.
Samsung Ativ Book i3 - Ubuntu 20.04LTS