sexta-feira, 31 de julho de 2015

Instalando Ubuntu (ou Elementary OS) em Dual Boot com OSX no Macbook (EFISTUB)

Sumário

  1. Introdução
  2. Abrindo Espaço no Disco
  3. Boot no Elementary ou Ubuntu
  4. Procedimento de Instalação
  5. Boot Manual no Elementary/Ubuntu instalado

1. Introdução


Este tutorial vale para o Ubuntu 15.04 (Vivid Vervet) e para o Elementary OS Freya. Deve funcionar ao menos para o Ubuntu 14.04 (Trusty Tahr) ou superior e seus derivados. A versão do OSX utilizada foi a 10.10 (Yosemite) mas creio que funcionará com versões anteriores.

Não irei cobrir a criação de um disco de inicialização USB para o Ubuntu, Elementary ou OSX. A internet possui muitos tutoriais e até posso escrever um artigo explicando resumidamente como fazer. No caso do Ubuntu ou derivados, é bem fácil criar um pendrive de inicialização tendo um computador com Ubuntu instalado e utilizando o "Criador de Discos de Inicialização" e uma imagem ISO baixada da internet. Mesmo se a imagem não for um ubuntu puro (caso do Elementary) o programa deve funcionar perfeitamente. Usuários do ArchLinux podem instalar este programa via AUR, através deste link.

Tendo o pendrive em mãos, vamos começar. Vou fazer a instalação do Elementary OS Freya. Eu simplesmente adoro o Pantheon Desktop, embora ele tenha fortemente se inspirado no OSX. É leve e o tema padrão está muito bonito. No meu computador o desempenho é muito superior ao Unity e ao KDE, empatando com o Gnome-Shell (que não gosto muito).

Pantheon Desktop do Elementary OS Freya

2. Abrindo Espaço no Disco


Primeiramente, inicialize o disco ou partição de Recuperação do OSX e acesse o "Utilitário de Disco". Lá, redimensione sua partição para acomodar espaço para o novo sistema Linux. No espaço vazio, crie uma partição de apenas 128MB e formate para FAT32. É onde iremos acomodar o bootloader. No espaço restante crie outra partição de tipo FAT32. Clique em "Aplicar" e aguarde.

3. Boot no Elementary ou Ubuntu


Então reinicie o Mac e inicialize o pendrive da sua distribuição escolhida. Após o boot, configure internet e certifique-se de que o cabo de energia esteja conectado.

Inicie o GParted. Verifique quais as partições são as que você criou no passo anterior. Anote. A menor você utilizará para instalar o bootloader, a outra para o sistema restante. No meu caso, elas são respectivamente /dev/sda4 e /dev/sda5. No seu sistema estes locais podem ser diferentes. Após isso, feche o GParted para darmos início ao processo de instalação.

GParted com as partições já reservadas e formatadas previamente em FAT32.

4. Procedimento de Instalação


Normalmente no Ubuntu e Derivados, há um ícone para instalar o sistema. No nosso caso vamos inicializar o programa via terminal:

sudo ubiquity -b

Este procedimento foi feito pois não iremos permitir que o programa instale o bootloader (GRUB). Nós faremos isso manualmente mais tarde. Esta é a função do parâmetro -b. Digite man ubiquity ou ubiquity --info para mais informações.

Instalador do Elementary OS
 Proceda a instalação normalmente. No momento do particionamento, escolha a "Opção Avançada" e selecione apenas sua partição de dados (meu caso, /dev/sda5), formate-a para ext4 e coloque como ponto de montagem a raiz do sistema (/).
Minha partição de dados formatada para ext4 e montada na raiz do sistema.
Continue a instalação normalmente. Caso você não utilize a partição de swap você será avisado da sua ausência. Apenar clique em "Continuar" e siga o procedimento normal (layout de teclado, usuário, senha, etc).

Ao finalizar a instalação, você deve reiniciar o computador. Mantenha o pendrive conectado à porta USB, visto que precisaremos dele para carregar o sistema novo, sem um bootloader instalado nele.

5. Boot Manual no Elementary/Ubuntu instalado


Reinicie o computador e segure a tecla Option para selecionar o pendrive para inicializar (EFI Boot). No menu do GRUB, pressione a tecla 'c' para acessar o console do GRUB.

grub>

Liste as partições existentes:

grub> ls
(memdisk) (hd0) (hd0,msdos1) (hd1) (hd1,gpt7) (hd1,gpt6) (hd1,gpt5) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1)

Tente descobrir qual é a partição onde você instalou o sistema. Uma ideia é tentar achar a pasta /home/USUARIO. Use o comando ls.

grub> ls (hd1,gpt5)/home
vinicius/

Pronto! Achei-a. Dá para entender a lógica se você se lembrar que eu instalei o sistema exatamente na partição /dev/sda5 do SSD interno (reveja o item 3), que está formato com uma tabela de partição GPT.

Agora vamos descobrir o UUID da partição

grub> ls -l (hd1,gpt5)
Partition hd1,gpt5: Filesystem type ext* - Last modification time 2015-07-28 14:03:10 Tuesday, UUID ddcc7e12-ba81-4bf6-a61f-d2f59abb763d - Partition start at 68696064KiB - Total size 29962891KiB

Agora temos que configurar root, linux e initrd. É possível pressionar <tab> para autocompletar valores.</tab>

grub> set root=(hd1,gpt5)
grub> linux /boot/vmlinuz<TAB>.efi.signed root=UUID=<UUID descoberto no passo anterior>
grub> initrd /boot/initrd<TAB>


Agora é só dar boot no Ubuntu ou Elementary instalado.

grub> boot

Faça login e entre no Pantheon Desktop novinho em folha. A primeira coisa que vamos fazer é instalar o grub e criar o arquivo boot.efi na partição EFI de boot (/dev/sda4 no meu caso). O pendrive de inicialização não é mais necessário aqui e pode ser removido com segurança.

Adicione o repositório abaixo para acrescentar algumas ferramentas que mexem com o Apple Bootloader.

vinicius@FreyaMac:~$ sudo add-apt-repository ppa:detly/mactel-utils

Atualize a base de dados (se quiser, antes acesse o aplicativo "Programas e Atualizações" ou "Canais de Software" para mudar o espelho do repositório para um local mais rápido - no meu caso eu uso o espelho da Unicamp e funciona muito bem):

vinicius@FreyaMac:~$ sudo apt-get update

Instale os pacotes grub-efi-amd64, hfsprogs, gdisk e mactel-boot.

vinicius@FreyaMac:~$ sudo apt-get install grub-efi-amd64 hfsprogs gdisk mactel-boot

Execute o comando mount no terminal e veja os pontos de montagem existentes. Se houver alguma partição montada em /boot/efi, desmonte-a.

vinicius@FreyaMac:~$ mount
vinicius@FreyaMac:~$ sudo umount /boot/efi

Lembra daquela partição de boot (/dev/sda4) que criamos lá atrás e que está formatada em FAT32? Vamos abrir o gdisk e apagá-la para criar uma partição formatada em HFS+ (sem journaling, para ter suporte a escrita no linux) em seu lugar.

vinicius@FreyaMac:~$ sudo gdisk /dev/sda

Command (? for help): d
Partition number (1-7): 4
Command (? for help): n
Partition number (4-128, default 4): <ENTER>
First sector (34-236978142, default = 137129984) or {+-}size{KMGTP}: <ENTER>
Last sector (137129984-137392127, default = 137392127) or {+-}size{KMGTP}: <ENTER>
Current type is 'Linux filesystem'
Hex code or GUID (L to show coder, Enter = 8300): AF00
Changed type of partition to 'Apple HFS/HFS+'

Agora só gravar as modificações.

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

Finalmente, vamos formatar a partição.

vinicius@FreyaMac:~$ sudo mkfs.hfsplus /dev/sda4 -v "Freya Boot"
Initialized /dev/sda4 as a 128 MB HFS Plus volume

Agora vamos alterar o /etc/fstab para remover as linhas referentes a /boot/efi. Mova o cursor com as setas do teclado até cada uma destas linhas e pressione CTRL+K para apagá-las. Salve pressionando

vinicius@FreyaMac:~$ sudoedit /etc/fstab

# /boot/efi was on /dev/sda1 during installation
UUID=C59D-1B30  /boot/efi       vfat    defaults        0       1

Rode o comando abaixo para inserir no arquivo a linha necessária:

vinicius@FreyaMac:~$ sudo bash -c 'echo $(blkid -o export -s UUID /dev/sda4) /boot/efi auto defaults 0 0 >> /etc/fstab'

O comando acima inseriu a linha
UUID=f75a358d-b773-31ba-9dce-0920ceaeba48 /boot/efi auto defaults 0 0
no arquivo /etc/fstab.

Agora é só montar a partição /dev/sda4 no ponto de montagem /boot/efi.

vinicius@FreyaMac:~$ sudo mount /boot/efi

Vamos instalar o GRUB na partição que acabamos de montar. Primeiro, criamos as pastas e arquivos necessários:

vinicius@FreyaMac:~$ sudo mkdir -p "/boot/efi/EFI/$(lsb_release -ds)/"
vinicius@FreyaMac:~$ sudo bash -c 'echo "This file is required for booting" > "/boot/efi/EFI/$(lsb_release -ds)/mach_kernel"'
vinicius@FreyaMac:~$ sudo bash -c 'echo "This file is required for booting" > /boot/efi/mach_kernel'

Instale o GRUB na partição de boot.

vinicius@FreyaMac:~$ sudo grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id="$(lsb_release -ds)"
Installing for x86_64-efi platform.
Instalação finalizada. Nenhum erro foi relatado.

Agora rode o comando "bless" para o Apple Bootloader poder encontrar o grub.efi gerado.

vinicius@FreyaMac:~$ sudo hfs-bless "/boot/efi/EFI/$(lsb_release -ds)/System/Library/CoreServices/boot.efi"

A partir deste momento o sistema deve ser bootável. Teste, reiniciando o computador, segure a tecla Option e veja se consegue selecionar o sistema desejado. Se tudo o que foi feito aqui deu certo, deve ter a opção de escolher o sistema recém instalado.

Referências:
http://heeris.id.au/2014/ubuntu-plus-mac-pure-efi-boot/
http://heeris.id.au/2014/ubuntu-plus-mac-pure-efi-boot-short-version/

Nenhum comentário:

Postar um comentário