Como recuperar a inicialização do Linux depois de instalar Windows

Esse é um problema super comum que já resolvi para dezenas de pessoas e resolvi escrever aqui pra não ficar tendo que repetir a resolução toda vez que alguém me perguntar.

O caso é o seguinte: você tem Linux numa das suas partições e por algum motivo estranho instala Windows (ou reinstala) na outra. O Windows, como todo sistema operacional para idiotas, simplesmente limpa sua MBR (master boot record do HD) sem lhe perguntar nada e com isso deleta seu gerenciador de boots (neste post estarei tratando o Grub e o Lilo).

Aí você se vê triste, desiludido e em muitos casos resolve reinstalar o Linux só pra recuperar o boot. Péssimo, não? Mas não se preocupe: seus problemas acabaram.

Tudo o que você precisará para recuperar sua MBR (com Grub ou Lilo) é:

  1. Um livecd (não precisa ser um daqueles pesadões, um disco 1 do Slackware ou Gentoo Minimal resolve) com a mesma arquitetura do seu Linux. Se você não tem, sugiro o Gentoo Minimal porque é leve: o download você faz aqui. Se você não sabe o que é arquitetura, você provavelmente usa x86.
  2. Saber em que partição se encontra seu Linux (tipo: /dev/hda1, /dev/sda1, ou algo do gênero) e em que HD ele se encontra (tipo: /dev/hda, /dev/sda… é só tirar o número da partição)

Se você não sabe em que partição/hd está seu Linux, é fácil descobrir através do comando fdisk -l

Boote o livecd (considerarei que você sabe fazer isso, do contrário não teria conseguido instalar o Windows) e abra um terminal se seu livecd for gráfico (é aquela telinha preta, também pode ser chamado de Console).

Agora o que vamos fazer é montar a partição root do seu Linux (e considerarei que /boot não está numa partição separada, se estiver monte ela também), entrar nela e reinstalar o Grub ou o Lilo.

Se o seu terminal terminar com um caractere $ (cifrão), digite “sudo su” para virar root. Agora pode digitar o que segue:

# mkdir linux
# mount /dev/hda1 linux
# mount -o bind /dev linux/dev
# mount -t proc none linux/proc
# chroot linux /bin/bash
# source /etc/profile
# cat /proc/mounts > /etc/mtab

Não se esqueça de substituir /dev/hda1 pela partição do seu Linux.

Agora, se você usa Grub (se não, provavelmente esse comando não dará problema, então se você estiver na dúvida pode chutar esse):

# grub-install --recheck /dev/hda

(substituindo /dev/hda pelo device do seu hd)

Ou se você usa Lilo:

# lilo

E pronto! Limpando a sujeira…

# exit
# umount linux/proc
# umount linux/dev
# umount linux

E pode rebootar pro seu velho Linux.

Se você não tinha Windows antes, o Windows não vai por mágica aparecer nas suas opções de boot. Então, no seu velho Linux, é só editar o arquivo /boot/grub/menu.lst (pra quem usa Grub) ou /etc/lilo.conf (pra quem usa Lilo) e colocar linhas para bootar o Windows, respectivamente:

title Windows
rootnoverify (hd0,1)
makeactive
chainloader +1

e

other=/dev/hda2
label=Windows

(assumindo que seu Windows está em /dev/hda2)

É importante que você note que o Grub inicia suas contagens a partir do 0. hda1 é (hd0,0), hda2 é (hd0,1), hdb1 é (hd1,0), hdc2 é (hd2,1). Deu pra entender? Letra antes da vírgula (a = 0, b = 1, c = 2, …) e número depois da vírgula (1 = 0, 2 = 1, 3 = 2, …)

Para editar um arquivo como root, escreva “su” para virar root e use “vim”, ou, se você não sabe fazer isso, sua distribuição provavelmente permite que você digite algo como: “sudo gedit arquivo” ou “sudo kwrite arquivo”.

Se você usa Lilo, é necessário que depois de salvar o arquivo você entre no terminal como root e digite:

# lilo

… para salvar suas alterações na MBR.

É isso. Reinicie seu computador e divirta-se com seu gerenciador de boots funcionando novamente. Qualquer dúvida, escrevam comentários.

Um pouco de tudo

Hoje é dia 21… Faltam 4 dias pro natal. Dia 24, vou viajar pra Floripa e não vou voltar para casa provavelmente até provavelmente 2-5 de janeiro.

Estou de férias, em casa, sem nada pra fazer. Eu fiz uma besteira no meu Slackware (com objetivos experimentais) e acabei desinstalando um monte de bibliotecas dele. A partição do Windows ficava com as músicas e já tava meio pesada, então aproveitei pra formatar tudo. Nova tabela de partições:

  • hda1, 10gb, FAT32, músicas apenas
  • hda2, 14gb, FAT32, Windows XP
  • hda3, 500mb, Linux Swap, swap
  • hda5, 500mb, ReiserFS, /boot
  • hda6, 5gb, ReiserFS, nada por enquanto
  • hda7, 6gb, ReiserFS, Slackware (/)
  • hda8, 5gb, ReiserFS, nada por enquanto

Deixei dois espaços estratégicos em branco pra instalar distribuições para teste ou simplesmente fazer experiências (ao invés de desinstalar as libs do Slackware oficial, eu desinstalo as delas! hehehe).

O pior é que quando eu particionei e comecei a instalação do Slackware, eu percebi que o disco tava totalmente riscado e não funcionou aquela instalação. Então instalei primeiro o Windows e dele baixei o ISO do Slackware.

Como sempre, perdi mais tempo personalizando o Windows do que o Slackware, até porque já tô mais acostumado com o Linux. Aí eu aproveitei um pouco as férias, instalando o Age of Empires II (um jogo de estratégia da Microsoft) e tentei emulá-lo no Linux, mas ainda não consegui fazer dar tudo certo.

Pra completar, meu desktop deu pau no HD. Estamos rodando só lives, criei até um script para configurar rede, compartilhar internet e redirecionar algumas portas pro laptop.

Ahh.. E chegaram meus 20 cds do Ubuntu que eu pedi há dois meses! :)


Coisas que tenho lido

Lista de Presentes

Se você quer muito me dar um presente, mas não sabe o que, essa é a solução!

  • iPod 30gb (ou mais, porque menos que isso não cabe minhas músicas)
  • Máquina fotográfica digital
  • HD de 80gb+ para desktop ou laptop HP Pavilion ze4610us

O HD chegou!

Finalmente de HD novo, já intalei WinXP e Slackware (aliás, coloquei umas fotos no Flickr). Dessa vez, dividi o HD em sete partições.

  • hda1 – 10gb, Linux ext3, Slackware
  • hda2 – 7,5gb, NTFS, Windows XP
  • hda3 – 7,5gb, FAT32, Windows 98*
  • hda5 – 5gb, Linux, **
  • hda6 – 1gb, Linux Swap
  • hda7 – 5gb, FAT32, ***
  • hda8 – 4gb, Linux ext3, homes****

* – Ainda não instalei o Windows 98 nela, mas farei-o em breve. “Por que você quer ter um Win98 aí?” Porque eu gosto do DOS e quero fazer uns testes lá.
** – É uma partição que eu criei pra instalar outros sistemas para testar. O hda1 sempre vai ser alguma coisa mais estável, como esse Slackware que eu tô usando agora.
*** – Uma FAT para passar dados do NTFS para o Linux e vice-versa. “Por que não uso o do Win98?” Pelo mesmo motivo que eu separo o home do sistema (veja abaixo o ****)
**** – Resolvi deixar as Home fora dos sistemas, porque além de poder acessar das duas partições o mesmo home (os mesmos arquivos de configuração, por exemplo), quando eu quero formatar um sistema ou reinstalar, fico mais tranquilo.

Ficou legal, né?

Baixei o Grub (agora só tô usando ele em todos os computadores que tenho instalado Linux), refiz alguns programas em Bash, reconfigurei todo o sistema, coloquei até as extensões no meu Firefox e aqui estou de volta outra vez.

Ultimamente, já que estava sem computador, andei brincando com dois computadores. O primeiro, do laboratório de informática do Colégio, é o que eu vou usar a partir de agora para fazer o site. Instalei Slackware, Fluxbox e tá bem legalzinho. O segundo é o computador que meu pai usa no trabalho. Um Pentium 4 animal, instalei Slack com KDE (que pra abrir o sistema inteiro, porque coloquei o runlevel dele pra 4, demora uns 20s).

Além disso, andei fazendo outras coisas legais também, como apresentando o fórum do Colégio para os alunos: Quer saber? e iniciando um projeto de software livre para leigos: http://sl.tiagomadeira.net. Aqui tem a explicação de porquê estou criando essa página.

Bom, por enquanto é isso. Ontem foi a primeira vez que desenvolvi um problema lógico desde o curso da OBI (também, não deu tempo, o computador pifado aqui!), que foi de geometria (ver se um ponto está dentro ou fora de um polígono). Mas ainda estou corrigindo-o, então depois coloco na seção de códigos.

© 2005–2020 Tiago Madeira