Instalando Ubuntu GNULinux em um Macbook

by

PRIMEIRA PARTE: INSTALAÇÃO BÁSICA

1) Preparar o Macbook

No meu caso eu comprei um modelo básico de Macbook (core duo 1.83G, 512M RAM), branco (pra ser Mac *tem* que ser branco 🙂 ), não sei se algo aqui valeria para outro modelo, provavelmente sim, mas não testei.

A primeira coisa a fazer é atualizar seu Macbook, ao menos o MacOS X. Depois disso, baixe o BootCamp daqui:

http://www.apple.com/bootcamp/

e use-o para preparar uma partição para instalar o Dapper.

Na seqüência, baixe o rEFIt e instale-o. Este serve para criar o boot duplo.

Feito isso seu Mac está pronto para iniciar a instalação.

2) Instalando o Ubuntu Dapper Drake básico.

Insira o cd do Ubuntu e reinicie a máquina segurando a tecla “C” para forçar o boot pelo CD. Importante: use o CD de instalação padrão, que roda como Live CD. O alternate não funcionou comigo. Você vai notar que o LiveCD funciona bastante bem de cara 🙂

Comece a instalação e, durante a partição do disco, escolha fazê-la manualmente. Apague a partição que você criou via bootcamp e particione. No meu caso, deixei 30G para / (root) na partição 3 e o restante como swap na 4. Não monte a “EFI System Partition”.

É importante que a ethernet esteja conectada à internet via Ethernet, pois vamos precisar dela, não só para a instalação neste momento mas também para os passos seguintes.

Deixe a instalação continuar normalmente e na hora que o Grub for instalado, vai haver um erro. *Isso é normal*. O Macbook usa EFI e não BIOS e o grub não sabe o que fazer. Para funcionar teremos que usar o LILO.

3) Preparando para o 1o boot.

Continue usando o CD a abra um terminal. Neste terminal faça:

$ sudo mkdir /mnt/ubuntu
$ sudo mount /dev/sda3 /mnt/ubuntu/
$ sudo mount -t proc none /mnt/ubuntu/proc
$ sudo mount -o bind /dev /mnt/ubuntu/dev
$ sudo chroot /mnt/ubuntu /bin/bash

e teremos um shell dentro da instalação que você acabou de fazer.

Agora vamos instalar alguns pacotes:

# apt-get install lilo lilo-doc linux-686-smp

O kernel 686 é para que os dois núcleos sejam reconhecidos. Isso não é inteiramente necessário pois faremos uma kernel customizado depois mas é legal 🙂

Atenção, a seqüência agora é importante. Eu quebrei a cara algumas vezes até me tocar disto. Seja via liloconfig ou manualmente, ajuste no /etc/lilo.conf as entradas de acordo com o kernel instalado, por exemplo:

boot=/dev/sda3
default=Ubuntu
map=/boot/map
delay=20
image=/vmlinuz
initrd=/initrd.img
root=/dev/sda3
label=Ubuntu
read-only

Agora abra um outro terminal (não faça nada mais no “chrooted” ainda) e rode o programa parted. Nele (caso sua partição onde o Ubuntu foi instalado em /dev/sda3) faça:

set 3 (aqui 3 é a partição)
boot
on
quit

Isso tornará a sua partição do Ubuntu inicializável.

Retorne ao terminal com o shell chroot e instale o lilo usando:

# lilo -b /dev/sda3

(assumindo que a partição que ajustamos acima é esta, claro).

Saia do seu ambiente chroot (exit) e desmonte as partições montadas:

$ sudo umount /mnt/ubuntu/proc
$ sudo umount /mnt/ubuntu/dev
$ sudo umount /mnt/ubuntu

Feito isso, pode reinicializar.

4) Ajustando o rEFIt.

Você deve ser brindado agora com uma bela telinha do rEFIt com uma maçã e um pinguim mais algumas funções extras abaixo. Não entre no Linux ainda! Escolha a opção “Partition Editor” e confirme o sincronismo entre MPR e GPT. Retorne ao menu do rEFIt, escolha reiniciar e pode dar boot no Ubuntu Linux 🙂

Às vezes o boot irá parar com um erro relativo ao ACPI. Isso é normal neste kernel. Iremos depois compilar um kernel específico que resolve isso.

5) Primeiros ajustes.

O primeiro passo agora é rodar:

$ sudo dpkg-reconfigure debconf

Escolha “dialog” e as opções padrão à seguir. Para ser sincero não me lembro agora para que isso serve.

A instalação deve estar razoavelmente funcional.

SEGUNDA PARTE: AJUSTES

Agora que já temos nosso Macbook rodando

GNU/LINUX

, vamos começar alguns ajustes:

6) Ajustando o vídeo.

Se tudo correu bem, seu Dapper deve estar usando o driver de vídeo i815 mas com a resolução errada. Para acertar isso, habilite o repositório “universe” e instale o 915resolution.

Isso fará com que o seu Linux rode em 1280×800, que é a resolução nativa deste notebook ao invés de 1024×768. Pessoalmente gosto de ajustar as preferências de fontes para Suavização de Subpixel (Em Sistema -> Preferências -> Fontes).

7) Compilando um kernel específico para ele.

Como comentei na primeira parte, o kernel padrão do Dapper funciona, mas existe um comportamento que se manifesta às vezes de não querer dar boot por um problema no ACPI.

Para resolver isso, vamos compilar um kernel próprio. Comece baixando os pacotes adequados:

$ sudo apt-get install linux-source build-essential kernel-package gcc libncurses5 libncurses5-dev libqt3-mt-dev bin86 gawk linux-kernel-devel

Descompacte os fontes (me pergunto porque isso já não é feito na instalação, afinal, pra que eu quero os fontes sem que estejam prontos para uso?)

$ cd /usr/src
$ sudo tar xvfj linux-source-2.6.15.tar.bz2

Agora copie o Config do kernel 686 instalado antes para que tenhamos uma base padrão como usado no Dapper.

$ sudo cp /boot/config-2.6.15-686 /usr/src/linux-2.6.15/.config

Embora em teoria usar “make oldconfig” seria também apropriado, descobri que desta maneira funciona melhor.

Agora vamos ajustar algumas coisinhas, execute:

$ cd linux-2.6.15
$ make menuconfig

Em “Processor type and features”, mude o processador para Pentium 4 e lá embaixo, na mesma página, “Timer frequency” para 1000 Hz. Interessante que no help diz que este é o valor adequado para desktops que precisam de resposta rápida mas por padrão vem ajustado para 250Hz.

Agora volte ao menu principal e siga para Device Drivers/USB Support/USB Network Adapters e remova (aperte N) o suporte para “USB ZD1211 based wireless device support”. Isso foi feito pois há um problema de compilação neste device. O correto seria corrigir isso, mas eu não fui atrás e, em nosso caso, a não ser que você vá instalar um dongle wifi USB com este chipset, não faz diferença.

Feito isso, saia do menu e execute:

$ make-kpkg -initrd kernel_image kernel_headers

Este make-kpkg é genial. Ele vai deixar prontinhos dois pacotes .deb que vão facilitar muito a nossa vida.

Vá tomar um café. Vai levar um bom tempo para compilar tudo. Quando terminado você vai ter dois pacotes chamados:

kernel-headers-2.6.15.7-ubuntu1_10.00.Custom_i386.deb
kernel-image-2.6.15.7-ubuntu1_10.00.Custom_i386.deb

Agora basta instalar com “dpkg -i”.

Na verdade o kernel-headers não é estritamente necessário agora, mas já que estamos neste ponto, é interessante tê-lo para que possamos usá-lo depois em caso de compilação de módulos do vmware, por exemplo.

Uma vez instalado é só verificar se o seu lilo.conf precisa ser atualizado, rodar “lilo -b /dev/sda3” e está pronto para o boot.

Lembre-se de manter uma entrada para o kernel anterior por precaução.

8) Ajustando o wifi.

Uma coisa a ser notada de cara com seu kernel novo é que o wifi deixou de funcionar. Isso porque o chipset usa alguns módulos que não estão incluídos no fonte do kernel diretamente chamados madwifi.

Na verdade isso é bom para nós, pois os que vêm no kernel são meio antigos e apresentam um bug na exibição do nível de sinal.

Para resolver isso isso é simples. Primeiro baixamos os fontes do madwifi-ng daqui:

http://snapshots.madwifi.org/madwifi-ng-current.tar.gz

Descompactamos, entramos no diretório e só:

$ make
$ sudo make install

Novo boot e seu wifi deve funcionar… talvez 🙂

O talvez vêm do caso de você estar usando segurança no seu ponto de acesso wireless. O wpasupplicant que acompanha o Dapper é compilado com uma versão antiga dos drivers madwifi. Você pode pegar os fontes do wpasupplicant do Edgy e compilar ou simplesmente usar este pacote aqui:

http://librarian.launchpad.net/3413515/result.tar

Para nossos propósitos basta o instalar o pacote wpasupplicant. Sugiro também instalar o Network Manager. Excelente para gerenciar conexões de rede de notebooks.

TERCEIRA PARTE: ALGUNS AJUSTES EXTRAS

Muito bem, já temos nosso Macbook rodando bastante bem, mas podemos melhorar as coisas ainda mais, como por exemplo arrumarmos um bug no OpenGL em tela cheia e colocar a câmera embutida para funcionar.

9) Ajustes de vídeo.

O vídeo deve já estar funcionando normalmente, com aceleração inclusive. Se você instalou o 915resolution, a resolução deve ser 1280×800, que é a resolução nativa.

Alguns ajustes finos:

Certifique-se que o módulo i915 esteja sendo carregado. Eu acrescentei a linha “i915” no /etc/modules. Isso fará com que não haja problemas na carga de alguns módulos do X como o drm.
Alguns programas que usam OpenGL em tela cheia apresentam problema como o bzflag. Para resolver, instale um driver i810 atualizado, bastando seguir as instruções para adicionar os repositórios.

10) Instalando a câmera de vídeo embutida.

Esta câmera é uma das coisas mais legais deste notebook. Para fazê-la funcionar precisamos tomar algumas providências meio radicais. Uma delas é extrair o firmware dela do MacOS X e compilar um módulo.

De qualquer modo não é nada para se preocupar, pois já está tudo mastigado. Basta baixar este arquivo que contém o módulo e o programa extrator do firmware:

http://people.freedesktop.org/~rbultje/linux-uvc-0.1.0-b.tar.gz

Descompacte, monte a sua partição do MacOS X assim:

$ sudo mount -t hfsplus /dev/sda2 /mnt/mac

A seguir execute:

$ make all
$ ./extract /mnt/mac/System/Library/Extensions/\
IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/\
Contents/MacOS/AppleUSBVideoSupport $ sudo make install

Isso vai instalar o módulo uvcvideo.

Daí é só um “sudo modprobe uvcvideo” e sua câmera deve funcionar em todos os programas que suportarem V4L2, como o Ekiga.

Lembre-se que este procedimento deve ser executado no boot, então mantenha a partição do MacOS X montada (via /etc/fstab) ou copie o firmware para /lib/firmware e execute o programa “extract” apontando para este arquivo durante o boot.

Uma dica, no Ekiga vai aparecer a imagem cortada, para arrumar, abra o gconf-editor, vá em Apps/ekiga/devices/video e ajuste size para 1.

Ok, acho que até o momento é isso!