Raspberry

Raspbian Buster e a caixinha de surpresas

Raspbian Buster para Raspberry Pi 4

Surpresas podem ser boas ou más. Infelizmente senti a necessidade de escrever esse artigo enquanto preparava o sistema para um outro artigo e me deparei com uma série de problemas. Vamos ver o novo Raspbian Buster e suas surpresinhas.

Compatibilidade do Raspbian Buster

O sistema tem o propósito de ser retro-compatível. Isso é, desde a versão 1 do Raspberry até a 4 devem ser suportados. Mas retro-compatiblidade quase nunca é bom. Sempre tem um “gesso” no sistema por causa de coisas antigas.

Raspbian Buster para Raspberry Pi 4

O tenho instalado no RPi 4, que foi utilizado para fazer o review no artigo relacionado. Acabei de instalar em uma RPi 3B+ e nesse caso, precisava fazer alguns ajustes iniciais no sistema, como configurar a rede WiFi para fazer a conexão por SSH e assim concluir o setup. Esse foi o primeiro ponto chato. O teclado estava desconfigurado porque por padrão não vem o pt_BR. Só que nem sei se era inglês também. E nem sei se tem teclado compatível com ABNT2, pois ao iniciar o programa raspi-config para configurar o teclado, o menu veio mais em francês do que em inglês. Além disso, a diversos mapas e a maioria dos mapas em português estavam com caracteres ilegíveis. Para conseguir ler o menu, só executando posteriormente por ssh. E o que veio? Bem, veja você mesmo:

Pra fazer uma mera configuração da rede WiFi passei uma meia hora tentando encontrar teclas que pudessem ser utilizadas no menu. Não consegui configurar o teclado. Repare que estou utilizando a versão Minimal, que não posui servidor gráfico, sendo ideal para projetos que necessitam estabilidade e economia de recursos. Repare também como está escrita a palavra “português”. C4g4ram para nosso idioma.

Ainda no programa raspi-config, alguns novos itens entraram no menu, em especial, para RPi4. Como ele possui 2 portas micro HDMI, agora teremos opcionalmente 2 dispositivos de frame-buffer. Além disso, a configuração 4K@60Hrz deve ser feita através do menu, se desejada. Do mesmo modo para o GL, utilizado por exemplo para desenhar interfaces em Qt escrevendo diretamente no frame-buffer da placa de vídeo, como mostrado nesse artigo.

Arquivo de paginação – um sacrilégio!

Sabemos bem a sensibilidade de um cartão micro SD, tanto que até escrevi um artigo de como protegê-lo e aumentar sua vida útil. Aí você instala o sistema mais atual e fica na tranquilidade, enquanto o sistema esmerilha seu SD.

Procurei no arquivo /etc/sysctl.conf pela opção swapness. Não está lá; então qual é o gatilho para o sistema passar a usar a swap?

Eu me senti bastante aborrecido com essa porquice. Onde está o arquivo de paginação?

Primeiro passo que tomei foi desligar a swap, esteja onde estiver:

Daí passei a procurar por pistas a respeito, em /etc. Agora tem uma porcaria para gerenciar isso. Antes bastava adicionar a um arquivo rc, criar um serviço ou colocar no fstab. Agora tem uma porcaria extra no sistema.

Encontrei em /etc/ um arquivo dphys-swapfile. Seu conteúdo:

O arquivo de swap agora “se esconde” em /var, onde for definido nesse arquivo, no parâmetro CONF_SWAPFILE. Inicialmente com 100MB, também definido nesse arquivo. Aí entram outros dois parâmetros, como o CONF_SWAPFACTOR para definir a adaptação dinâmica.

O último parâmetro é o quão m3rd4 o sistema pode ficar. O limite máximo de swap está definido por padrão em no máximo 2GB.

Como desabilitar a swap no Raspbian Buster

Obviamente ninguém quer isso no sistema. Se for necessário, é melhor optar por swap em um pendrive. O que deduzi:

Usando a man page do comando, deveria estar descrito como criar, montar, desmontar e excluir um arquivo de swap. Outra porcaria, mas já explico minha opinião dura a esse respeito.

Bem, existem duas opções de execução do serviço, sendo através de um rc ou do init. Os diretórios de init são dependentes do nível de execução. Para saber qual o nivel de execução, execute o comando:

Aí vem outra porcaria. O padrão dos sistemas Linux sempre foi modo gráfico no runlevel 5 (runlevel 1 – monousuário, runlevel 3 – multiusuário console, runlevel 6 – reboot, runlevel 0, shutdown). Agora runlevel 5 é qualquer coisa, pelo visto. E digo mais; o Linux começou sair do LSB a partir da existência do Ubuntu.

Seguindo; entre em /etc/rc5.d e desfaça o link simbólico para o dphys-swapfile:

Desabilite o serviço na inicialização (vai que tem algum outro easter egg no sistema):

Se quiser ser paranoico (como eu), edite o arquivo /etc/init.d/dphys-swapfile e coloque na segunda linha:

Agora só se alguém invadir seu sistema para habilitar a swap!

“Avançar é preciso, a tecnologia evolui”

Eu concordo 100% com isso. Quando saiu o servidor gráfico Wayland com suporte a Qt, eu fui o primeiro a criar um sistema usando Wayland. Foram 6 meses de desenvolvimento do sistema operacional até a aplicação especialista.

Quando uma coisa nova traz novidades úteis, é fundamental que seja implementada e aceita. O X11 é um emaranhado de código irreparável, com múltiplas reentrâncias, consome toneladas de recursos, tem memory leak. O Wayland é leve, tem uma camada mais direta para a aplicação etc etc etc.

O swap era configurado no  arquivo de tabela de partições, o /etc/fstab. Ele podia ser arquivo ou partição, mas alguém achou por bem que deveria se transformar em  “algo especial”. O mesmo fizeram com o ifconfig, com o route e outros comandos que passaram a ser alternativos através do pacote net-tools. Isso porque na época em que inventaram essa “revolução” não estava sendo aceito.

Desde os primórdios do UNIX se utiliza o comando ifconfig para ver o IP das interfaces. Bastava digitá-lo para ver todas. Agora:

E o formato? Horrível! O mesmo para os demais substitutos.

As interfaces de rede eram claras para o usuário. Interfaces ethernet eram eth0eth1 e daí por diante. Interfaces WiFi era wlan0wlan1 e assim por diante. Inventaram o modo preditivo; aí eu pergunto: Preditivo pra quem? Hoje não dá pra saber o nome da interface sem listá-la previamente. Quando isso aconteceu pela primeira vez, escrevi um artigo para reverter a situação. Sugiro uma “passada de ohos” pra ver o que virou a interface.

Minha opinião pessoal a esse respeito é filosófica. O que um político faz quando quer deixar um legado (“legado” no caso de político, pode interpretar como “c@g4da de pombo”.)? Coloca o nome da família em praças, ruas e viadutos.

Para mim essas mudanças são políticas também. Alguém quer ser o p1c4 das galáxias, trocando o que funcionava bem por algo “incrivelmente novo”, que faz a mesma coisa, com maior esforço. E só para deixar seu nome no cabeçalho do código, porque é impossível que alguém acredite que essas mudanças são necessárias, por mais sustentados que sejam os pretextos.

Como comecei mexer nesse momento no sistema, não tenho mais o que xing… digo, dizer. Se eu encontrar mais problemas no Raspbian Buster, atualizo esse artigo.