segunda-feira, 30 de novembro de 2009

Perdeu a linha do Kernel no grub?

Depois de milhares de anos estou de volta. Um caso relativamente raro mas que aconteceu comigo e pode acontecer com quem não se contenta em aguardar quando é lançada uma nova versão do sistema operacional. Então, o que aconteceu foi o seguinte, após lançada a versão 9.10 do ubuntu logo eu quis atualizar a minha 9.04. O problema foi que após atualizar, fui querer remover as versões antigas do kernel que estavam instaladas (o que é ensinado em um post anterior) e acabei desinstalando todas. (Sim, não deixei nenhuma hehe.. foi sem querer). Quando fui reiniciar só entrava no windows e no ubuntu falava que não encontrava o arquivo para inicializar. Para resolver esse problema não é tão complicado, basta inicializar o computador com um LIVE-CD e após carregar todo o sistema abrir o shell e executar os seguintes comandos:
user@ubuntu:-$ sudo -s
(Esse comando o torna superusuário(root) necessário para executar comandos de administração).

root@ubuntu:-# fdisk -l
(Com esse comando você irá listar todas as partições existentes no(s) hd(s) instalados no seu computador).
Exemplo de saída do comando fdisk -l:
Disco /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador do disco: 0x024a024a

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 * 1 2550 20482843+ 7 HPFS ou NTFS
/dev/sda2 2551 3766 9767520 83 Linux
/dev/sda3 3767 6245 19912567+ 83 Linux
/dev/sda4 6246 14593 67055310 f Win95(LBA)Part Ext
/dev/sda5 6246 6294 393529+ 82 Linux swap/Solaris
/dev/sda6 6295 14593 66661686 c W95 FAT32 (LBA)

Perceba que a linha em vermelho é a partição onde está instalado o sistema operacional. Como eu sei disso? Bom, além de eu conhecer meu hd e os sistemas operacionais instalados neles bem como o tamanho de cada partição, aqui vão algumas dicas para você conseguir interpretar essa sopa de letrinhas:
- Como tenho dual boot (windows x linux) no meu computador, sei que o windows só pode estar instalado em uma partição FAT32 ou NTFS, logo, a primeira que inclusive está com um '*' que significa partição pela qual está sendo inicializado o sistema de boot é a partição do windows. A segunda e a terceira são semelhantes, ambas são ReiserFS, partições linux, onde obviamente estará instalado o linux. Nesse caso a primeira é onde está instalado o linux e a segunda foi uma partição que criei para o diretório "/home" dos usuários. Se você tiver uma instalação padrão terá somente uma dessas. A quarta partição é uma partição extendida onde está contida outras duas que são a partição SWAP (memória virtual obrigatória para o linux) e uma outra partição FAT32 que uso para guardar arquivos.
Bom, voltando ao assunto, agora que já sabemos qual a partição onde está instalada minha distribuição linux vamos montar ela em um diretório para trabalharmos na reinstalação do kernel removido.

root@ubuntu:-# mount /dev/sda2 /mnt
Com o comando acima eu posso acessar todo o conteúdo da partição sda2 (que é onde está meu sistema operacional) através do diretório /mnt.

root@ubuntu:-# chroot /mnt
Com esse comando eu passo a assumir que o diretório /mnt passa a ser o diretório raiz, ou seja, não enxergo mais os diretórios da distribuição live que estou rodando mas sim os diretórios da minha instalação que está montada no diretório /mnt e que está com o kernel(linux-image-2.6.31-15-generic) faltando.

root@ubuntu:-# apt-get install linux-image-2.6.15-generic
Com esse comando instalo novamente o kernel que estava faltando, nesse caso utilizei por exemplo o linux-image-2.6.15-generic, mas você pode utilizar outra versão que se encaixe com a sua arquitetura de hardware. Depois verifique no arquivo /boot/grub/menu.lst se os menus foram criados corretamente após a reinstalação da imagem do kernel. Deve estar nestes moldes:
title Ubuntu 9.04, kernel 2.6.31-15-generic
uuid 838318f5-1962-41bf-b9d9-9f45c3c1647b
kernel /boot/vmlinuz-2.6.31-15-generic root=UUID=838318f5-1962-41bf-b9d9-9f45c3c1647b ro locale=pt_BR quiet splash
initrd /boot/initrd.img-2.6.31-15-generic
quiet

Salve o arquivo reinicie e a sua opção de inicialização estará novamente habilitada e funcional.

Nenhum comentário: