Manual
do
Maker
.
com
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.
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.
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.
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:
sudo swapoff -a
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:
# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
# use under either modified/non-advertising BSD or GPL license
# this file is sourced with . so full normal sh syntax applies
# the default settings are added as commented out CONF_*=* lines
# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
# set size to computed value, this times RAM size, dynamically adapts,
# guarantees that there is enough swap without wasting disk space on excess
#CONF_SWAPFACTOR=2
# restrict size (computed and absolute!) to maximally this limit
# can be set to empty for no limit, but beware of filled partitions!
# this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
# but is also sensible on 64bit to prevent filling /var or even / partition
#CONF_MAXSWAP=2048
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.
Obviamente ninguém quer isso no sistema. Se for necessário, é melhor optar por swap em um pendrive. O que deduzi:
sudo su
swapoff -a
dphys-swapfile swapoff
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:
runlevel
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:
cd /etc/rc5.d
sudo unlink S01dphys-swapfile
Desabilite o serviço na inicialização (vai que tem algum outro easter egg no sistema):
sudo update-rc.d dphys-swapfile disable
Se quiser ser paranoico (como eu), edite o arquivo /etc/init.d/dphys-swapfile e coloque na segunda linha:
exit 0
Agora só se alguém invadir seu sistema para habilitar a swap!
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:
ip address show
E o formato? Horrível! O mesmo para os demais substitutos.
As interfaces de rede eram claras para o usuário. Interfaces ethernet eram eth0, eth1 e daí por diante. Interfaces WiFi era wlan0, wlan1 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.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.