Alpine Linux em Raspberry Pi

Alpine_Summary

O Alpine Linux é uma distribuição de GNU/Linux usando a musl libc e o  Busybox e que é focada em ser pequena, simples e segura. Como estava procurando por um Linux de tamanho reduzido para rodar no Raspberry Pi resolvi testá-la — bem, minha outra opção seria me aventurar com o μCLinux.

Download

Alpine_Download

O arquivo para download é realmente pequeno, menos de 80MiB. E isto não é necessariamente por conta de ser uma versão para processadores ARM ou mesmo para os Raspberry Pi. Aliás “coisas” bem maiores tem arquivos até menores para baixar!

Instalação

Alpine_Extract

Peque um cartão de memória vazio formatado em FAT, extraia os arquivos para lá e aguarde o procedimento terminar. Se alguém me dissesse eu mesmo não acreditaria mas a instalação “stricto sensu” está terminada. E para os mais detalhistas, sim estou realmente utilizando um cartão de memória de 128MiB! 🙂

Desmonte o cartão, coloque-o no Raspberry Pi e ligue a alimentação. Ele inicializará e em seguida exibirá na tela:

Welcome to Alpine Linux 3.3
Kernel 4.1.15-1-rpi on an arm6l (/dev/tty1)

localhost login: _

Eu não disse que estava instalado?

Configuração

Está instalado mas ainda precisa ser reconfigurado, entre como root (não tem senha) e digite:

# setup-alpine

Este chamará uma série de outras ferramentas de configuração e a primeira da lista é justamente a configuração do leiaute do teclado:

Available keyboard layouts:
be      croat   es      hy      la      pc      se      sv      wangbe
bg      cz      et      il      lt      pl      sg      tr
br      de      fi      is      mk      pt      sk      ua
by      dk      fr      it      nl      ro      slovene uk
cf      dvorak  gr      jp      no      ru      sr      us
Select keyboard layout [none]: br
Available variants: br-abnt br-abnt2 br-latin1-abnt2 br-latin1-us
Select variant []: br-abnt2

Em seguida é a escolha do nome do host:

Enter system hostname (short form, e.g.
'foo') [localhost]: pi

Configurar a rede (configurarei somente a rede cabeada):

Available interfaces are: eth0 wlan0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize (or '?' or
'done') [eth0]
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]
...
Which one do you want to initialize (or '?' or
'done') [wlan0] done
Do you want to do any manual network configuration? [no]

O que está entre colchetes é o valor padrão, daí basta apertar «Enter».

Definir a senha do root:

Changing password for root
New password:
Retype password: 
Password for root changed by root

Configuração do fuso horário:

Which timezone are you in? ('?' for list) [UTC] Brazil
What sub-timezone of 'Brazil' are you in?
('?' for list) East

Se for o caso, a configuração do proxy da rede:

HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or
'none') [none]

Selecionar qual mirror utilizar:

Available mirrors:
1) nl.alpinelinux.org
...
r) Add random from the above list
f) Detect and add fastest mirror from above list
e) Edit /etc/apk/repositories with text editor

Enter mirror number (1-17) or URL to add (or r/f/e/done) [f]:

Apenas escolha ‘f’ e deixe-o descobrir qual é o mirror mais rápido, só levará alguns segundos.

Qual o dæmon de SSH a ser utilizado:

Which SSH server? ('openssh', 'dropbear' or 'none') [openssh]

Até fiquei tentado a uma experiência minimalista de usar o Dropbear SSH ao invés do OpenSSH mas fica para outro dia.

A próxima opção é o cliente de NTP, daí aproveitei para economizar memória e usar o Busybox:

Which NTP client to run? ('busybox', 'openntpd', 'chromy' or
'none') [chrony] busybox

Esta parte é específica do Alpine. Como a versão do Raspberry Pi trabalha em modo diskless, isto é, uma ramdisk carregada durante o boot contendo a instalação (o “/bin”, “/etc” etc).

Nesta opção defino onde serão salvas as alterações que estou fazendo (calma já explico):

Enter where to store configs ('floppy', 'mmcblk0p1', 'usb' or
'none') [mmcblk0p1] mmcblk0p1

E, finalmente, onde o gerenciador de pacotes fará cache dos arquivos dele:

Enter apk cache directory (or '?' or
'none') [/media/mmcblk01p1/cache]: /media/mmcblk0p1/apks/armhf

Dica, este é o diretório que já contém alguns pacotes do Alpine de quando foram descompactados no cartão de memória.

Daí ele retorna para o console e você, que não leu a documentação, se pergunta sobre o que terá acontecido de errado. 🙂

Não aconteceu nada, está tudo certo e o sistema está configurado e para finalizar, digite:

# apk update
# apk upgrade
# lbu commit

Isto irá atualizar a lista de pacotes, fará a atualização caso seja necessário e, por último, salvará as modificações da ramdisk no cartão de memória (eu falei que iria explicar).

“Ajustando” as horas

Como o Raspberry Pi não tem um circuito de relógio, isto é, um componente eletrônico que informa para ele “(precisamente) as horas” ele pode apresentar alguns erros na hora da inicialização. É recomendado desabilitar o suporte via hardware do relógio, deixando habilitado o suporte por software, isto se faz assim:

# rc-update add swclock boot
# rc-update del hwclock boot
# setup-ntp
...
# lbu commit

Reinicie e quando voltar verifique se a data e a hora estão corretas.

Criando um usuário

E como você não ficará usando o root para tudo, crie um usuário:

# adduser -h /home/giovanni giovanni
Changing password for giovanni
New password:
Retype password
Password for giovanni changed by root
# lbu add /home/giovanni
# lbu commit

Sem muita novidade quanto ao adduser mas o lbu no final acrescenta meu diretório na lista de arquivos que precisam ser salvos da ramdisk, caso não seja feito eu ficarei sem um $HOME no próximo reboot.

E para encerrar

O que posso dizer? Uma instalação atual de Linux utilizando 20 pacotes, ocupando ao todo menos de 10MiB em uma ramdisk e consumindo cerca de 89MiB de um cartão SD de 128MiB — ainda sobrou espaço para algumas brincadeiras antes de precisar recorrer a um cartão SD maior, talvez um de 512MiB que também tenho disponível aqui. 🙂

Anúncios

2 comentários sobre “Alpine Linux em Raspberry Pi

  1. Show!

    Ótimo post! Vou testar no meu raspberry.

    Parabéns e continue compartilhando seu conhecimento, pois no mundo digital “dividir é multiplicar!”.

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s