Mostrando postagens classificadas por relevância para a consulta toybox. Classificar por data Mostrar todas as postagens
Mostrando postagens classificadas por relevância para a consulta toybox. Classificar por data Mostrar todas as postagens

Lançado toybox 0.8.3

Lançado toybox  0.8.3
Lançado toybox  0.8.3
 No dia  de maio foi lançado a versão 0.8.3 do terminal de comandos toybox. O toybox foi criado pelo antigo mantenedor do busybox, Rob Landley que tem como foco, desenvolver uma nova versão do busybox porém menor, mais simples e mais limpo. Videos e artigos é o que não faltam nem no canal e nem no blog. Tem vídeo contado a história, vídeo entrevista com o criador do terminal, video analisando, live ensinando como compilar e utilizar, vídeo sobre lançamentos e até descoberta de bugs, artigos sobre noticias; então material sobre o toybox é o que não falta.

 O que mais chama a atenção nesta nova versão é que agora o toybox possui o recurso make root que agora permite o sistema carregar o toybox após o processo de boot sob o nome de toyshClicando aqui neste link de 29 de Abril deste ano você poderá saber como utilizar o toysh após o processo de boot. Já clicando aqui há um script de 250 linhas que lhe permite criar um sistema Linux bootável  que utiliza o toysh. Este mesmo script pode ser encontrado dentro do diretório /toybox-0.8.3/scripts. O make root também agrega ao toybox o recurso toyroot que lhe permite a interpretação de init scripts.

script mkroot dentro do diretório scripts do toybox.
script mkroot dentro do diretório scripts do toybox.
 Mais novidades temos o comando rtcwake (utilizado para colocar o sistema em estado de hibernação até um determinado período de tempo) e o comando blkdiscard (utilizado descartar setores de dispositivo). O comando readelf que eu havia mencionado em Janeiro deste ano agora aparece no diretório pendentes para revisão (junto a função getopt e a linguagem bc)

Comando readelf no diretório pending.
Comando readelf no diretório pending.
 Também houveram novas funções adicionadas a comandos já presentes no terminal, muitas correções de bugs não somente em comandos mas também nas bibliotecas, limpezas em alguns comandos, outros trabalhos realizados nos pendentes para revisão (pending) e lista de novidades nesta nova versão é enorme e caso você queira conferir, basta clicar aqui. Além do código fonte, há a versão binária que está disponível para 18 arquiteturas que envolvem sub-arquiteturas também  (armv4l, armv5l, armv7l, armv7m, i486, i686, m68k, microblaze, mips, mips64,mipsel, powerpc, powerpc64, powerpc64le, s390x, sh2eb, sh4, x86_64).

Lançado toybox 0.7.6

toybox 0.7.6
toybox 0.7.6

Apesar que venho falando bastante sobre o toybox, para quem não sabe do que se trata toybox é um terminal de comandos desenvolvido especificamente para Linux e hoje está presente no android desde a versão MarshMallow.

Recentemente fiz um vídeo onde demos uma olhada no toybox onde explico como ele foi criado, como configurá-lo, compilá-lo e utilizá-lo.


Na sexta feira (24/02/2018) foi lançada a versão 0.7.6 deste terminal que simplesmente me encanta especificamente pelo seu tamanho (quase quatro vezes menor que o Bash), saída de comandos (bem mais clara que a do Bash) e sua licença que é de domínio publico.

Eu baixei e analisei esta nova versão e a primeira coisa que posso notar é que podemos fazer uma configuração padrão usando tanto o make defconfig mostrado no vídeo quanto o popular "./configure". Fiz o teste com as duas opções e funcionou tudo OK

Teste com o ./configure e funcionando bem
Teste com o ./configure e funcionando bem


Teste com o make defconfig e também funcionando bem.
Teste com o make defconfig e também funcionando bem.

Em questão de tamanho final pós-compilação, ambos possuem o mesmo tamanho (320KB). Mas quando de se trata de comandos, seria um sufoco analisar um a um para saber o que mudou olhando desta maneira:

Comparando os comandos entres as versões 0.7.5 e 0.7.6 do toybox de uma forma bem ilógica
Comparando os comandos entres as versões 0.7.5 e 0.7.6 do toybox de uma forma bem ilógica

Ok, então resolvi dar uma filtrada usando o comando wc (word counter) com a opção -w (filtrar por quantidade de palavras) e me deparei com isso. A unica mudança foi um comando:

Comparando os comandos entres as versões 0.7.5 e 0.7.6 do toybox de forma filtrada
Comparando os comandos entres as versões 0.7.5 e 0.7.6 do toybox de forma filtrada

Mas essa é a unica diferença? Um comando?
A verdade é que não. Dentre as mudanças estão correções nos comandos iconv, logger, setfattr e gzip/gunzip/zcat. Os comandos stty e fmt que estavam em Pendentes foram adicionados como funcionais.

O comando adicinado foi o crc32 que é utilizado para checksum de cada arquivo:

Comando crc32 no toybox 0.7.6
Comando crc32 no toybox 0.7.6
O comando cut recebeu uma reescrita completa tendo adicionado suporte a multiplos ranges, suporte a caracteres utf8/unicode, e novas opções -CDFO. utilize -C para medir colunas ao invés de caracteres (para o dobro de largura de chars), e "cut -DF 3-5" para selecionar palavras (assim como no "awk '{print $3 $4 $5}'").

Adicionaram as seguintes opções aos comando (correções também foram feitas ao comando top),:
  • top -m
  • iotop -H
  • iconv -c
  • Correções no ps -T 1234 para exibir threads pertencentes a qual PID,
Houveram melhorias também na identificação de arquivos executáveis (e acionaram sh/frv fdpic, bpf e novos identificares microbalze). O blkid agora exibe somente LABEL= quando não está em branco.

A equipe do android adicionou df -i, uptime -p, time -v, and xxd -i -ri, corrigiram id -G para somente a saída do grupo de IDs, corrigiram a combinação xargs -0 -n, adicionaram find -exec + obey ARG_MAX (como no xargs), fizeram killall matar scripts, corrigiram um off no pidof que poderia causar um falso positivo em nomes com 15 caracteres, adicionaram testes ao gzip/gunzip/zcat tests, e o comando file a identificar mais arquivos (ogg, TrueType font, LLVM bitcode, PEM certs, e executáveis PE). O getprop/setprop do android agora permite ro.

Houveram muitas outras melhorias nos comandos, mas aqui estão algumas. Baixem o toybox (seja em forma binária ou de código fonte) e bora testar e ajudar a comunidade ;)

Fiquem também com a história do toybox:


Dando uma olhada no toybox

Dando uma olhada no toybox
Dando uma olhada no toybox
Busybox na verdade é um conjunto de quatro shells, há pouco código próprio no Busybox mas é um trabalho interessante (não precisaram reinventar a roda sem haver necessidade). O maior trabalho feito e próprio do Busybox é a correção de código. A primeira vez que mencionei sobre o Busybox no meu canal foi quando saiu a noticia de que removeram o suporte ao systemd. Agora vamos dar uma olhada no terminal de comandos toybox, um terminal de comando tudo em um assim como o Busybox; porém menor, mais fácil de manter e que já substituiu o Busybox no Android:


É possível baixar a versão binária do toybox para arquiteturas diferentes clicando aqui caso não queira baixar o código fonte para compilá-lo. Mais uma coisa interessante é que é possível escolher qual biblioteca será utilizada como padrão no momento da compilação como musl (fortemente sendo adotada como padrão pelo toybox), UclibC, GlibC e a Bionic do Android (ou seja, um terminal multi-biblioteca C) como pode ser lido em seu git:

toybox tem sido testado com a musl, uClibc, glibc, e a bionic.
Informações em seu git sobre o uso de bibliotecas com o toybox

De acordo com a comunidade toybox, está previsto um novo lançamento para meados ou final deste mês. De acordo com Rob Landley, ainda é necessário um fix para o comando ps -T, . Mais uma coisa que a equipe do toybox trabalha para um futuro lançamento é em um executável ./configure.

Resolvi fazer o mesmo procedimento com o Busybox comparado seu tamanho final após compilá-lo. Comparei o tamanho final do Busybox, das duas versões do toybox, do Bash e do Zsh e uma coisa que notei é que o Zsh, apesar de oferecer maior segurança, maior estabilidade e muito mais recursos do que o Bash é menor até mesmo que o Busybox como pode ser conferido na lista abaixo:

bash-zsh-busybox-e-toybox
Diferença de tamanho entre terminais (reparem que o zsh é menor até mesmo que o Busybox, que é menor que o Bash e ainda assim oferece mais poder e maior segurança que o próprio Bash.

Como conheci o Alpine Linux

Alpine Linux
Alpine Linux

Certo, essa semana demos inicio novamente à serie Os Vários Sabores de Linux. Essa é a segunda temporada desta serie que todo mundo vive me pedindo para que volte e eu escolhi a distribuição Alpine Linux para dar a abertura:

OK. E por que vou contar como conheci essa distribuição? SIMPLES! Porque ela é importante. Essa é a base para me ter dado inicio a MUITO ALÉM DO GNU. Daí agora a indagação deve ser: "Como assim?"

Bora debater então. Antes de contar como conheci o Alpine, é preciso dar um passo atras, coisa de dois anos. Mais ou menos em 2010 ou 2011 eu li uma noticia de que já era possível compilar o Linux com o Clang. Isso me chamou a atenção porque podíamos usar outro compilador além do GCC. Fora que a primeira biblioteca que eu conheci que não fosse a tão divulgada GlibC foi a uClibc. Daí em 2012 eu estava pesquisando no Google sobre um carro da Renalt chamado Alpine. Esse da foto abaixo:

Renalt Alpine
Renalt Alpine

E como o Google vinculou a pesquisa a o que pesquiso bastante (Linux), logo o Google me devolveu como resposta Alpine Linux. Daí pensei:
"Uma distribuição com o nome de Alpine? Bora ver o que ela tem a oferecer"
Viram como nem sempre é sinal de que estão te espionando?

Descobri que era uma distribuição que utilizava a Musl como biblioteca C padrão ao invés da GlibC e o busybox ao invés do Bash. Primeiramente procurei saber o que a Musl tinha oferecer (e me apaixonei) e segundo é que se ligarmos os fatos, uma distribuição com kernel Linux, com uma biblioteca C que não é do GNU, um terminal que não é do GNU (apesar que o Busybox é um agrupamento de coisas que já existem, mas o toybox não) e ainda podermos compilar tudo com um compilador que não seja o GCC me levou a fazer as seguintes perguntas:
"Quer dizer que Linux não possui vinculo obrigatório com o GNU? Quer dizer que Linux se estende a muito além do que GNU tem a oferecer? Ou seja, Linux não está limitado a GNU?"
E a resposta é: EXATO PARA TODAS AS PERGUNTAS!

Eu já era analista há quatro anos e não sabia disso. Eu a deveria saber até antes disso uma vez que já havia feito curso de LPI três anos antes desta descoberta e há anos usava KDE. Mas OK.

Você deve estar se perguntando:
"Mas então por que quando digitamos uname com as opções -a ou -o aparece escrito GNU/Linux?"

uname, uname -a e uname -o
uname, uname -a e uname -o

SIMPLES! Isso acontece porque o comando uname que você utiliza foi desenvolvido pela comunidade GNU fazendo parte do pacote coreutils. Essa foi uma forma de promover a fraca ideia da obrigatoriedade do nome GNU/Linux. Falando de core-utils, ainda vai ter um vídeo no canal debatendo e destrinchando um pouco melhor o assunto.

core-utils
man uname

Mas retomando o raciocínio, se baixarmos o toybox (seja código fonte ou binário), e digitarmos ./toybox aparecerá uma lista de comandos. Apesar de comandos que você provavelmente já conheça, todos estes comandos foram escritos do zero, inclusive o comando uname ;)

Comandos do toybox
Comandos do toybox

Digitando ./toybox uname -a ou ./toybox uname -o, repare que aparecerá somente o nome Linux e não GNU/Linux.

./toybox uname, ./toybox uname -a, ./toybox uname -o
./toybox uname, ./toybox uname -a, ./toybox uname -o

Viram como o nome "GNU/Linux" não é algo obrigatório no sistema operacional? Falando em nome, sabiam que o nome Linux é propriedade intelectual de Linus Torvalds? 


Ele detém os direitos autorais sobre o nome Linux. É aí que eu acho a comunidade GNU incrível, defendem tanto que tudo deve ser livre e que tudo o que é proprietário é abominável mas brigam muito pelo direito do nome do seu sistema operacional livre aparecer em destaque em um nome proprietário... Alias, a comunidade GNU pediu autorização a Linus para chamá-lo de GNU/Linux? já que eles defendem o que é moralmente correto a ser feito, pedir autorização para tal uso é o que DEVE moralmente correto ser feito. Sabiam inclusive até que Linus poderia meter um processo nessa galera que quer forçar a todos a chamar de GNU/Linux pelo uso do nome Linux sem sua expressa autorização?

Marcas de serviços são uma variante de marcas registradas conceitualmente similares a subarrendamento. Por exemplo, Linus Torvalds possui a marca registrada do "Linux" (porque outra pessoa o registrou como o criador do produto, processou a comunidade para que saíssem disso, provado seu caso, acabou possuindo uma marca registrada), e empresas como Red Hat Linux e VA Linux ter que possuir declarações assinadas do Linus concedendo-os permissão para incorporar sua marca registrada em suas proprias marcas registradas. Ninguém mais pode chamar suas versões de Linux "Red Hat", mas a Red Hat não poderia utilizar o termo "Linux" sem a permissão de Linus. Linus só tem se incomodado em reforçar sua marca registrada uma vez até agora, para impedir a venda de um grupo de domínio de nomes "Linux" por um ocupante. Seu e-mail no assunto é bastante informativo sobre lei de marca registrada em geral.
Passe o cursor para ler a tradução do artigo vindo do site Montley Fool

Fica então a matéria para meditação, aprofundem-se em conhecer melhor o sistema operacional que utilizam e azar de quem vier fazer dar chilique defendendo a GNU.

Bug no terminal de comandos Bash e comparação entre os pacotes de coleções de comandos

Bom, fiz os vídeos onde demos uma olhada no toybox, Respondemos a comentários interessantes, demos uma olhada no embutils e no 9base. Depois disso me lembrei que no artigo "Android, uma boa alternativa ao Windows no desktop" que escrevi há mais ou menos dois anos atrás e que percebi um bug no Bash. A questão é que na época eu conferia a quanto tempo o android estava em funcionamento tanto pela configuração do sistema operacional quanto pelo comando uptime. Fiz uso na época de alguns terminais (que não me lembro o nome) e um deles era o terminal Bash para o Android. O Bash retornava valor errado de horas em execução pelo comando uptime, não combinava com o relógio do android e nem com dos outros terminais que estavam sendo utilizados. Foi aí que passei a me preocupar se todo resultado obtivermos no terminal são verídicos ou não, e por isso adotei a estratégia de conferir os resultados em dois ou mais terminais de tempos em tempos somente para me certificar.

Consegui recuperar as imagens da época que fiz a analise e aqui estão algumas mostrando a quanto tempo o sistema está em funcionamento tanto pelo sistema de estado do próprio android quanto pelo bash fazendo uso do comando uptime:

Aqui mostra que o sistema está de pé hà mais de 252 horas
Reparem nas duas primeiras imagens que o android já estava no em funcionamento hà mais de 252 horas (10 dias e meio) enquanto que o bash informa que o sistema está em funcionamento a somente 8 dias e 3 horas.


Reparem agora nesta duas que o android consta mais de 254 horas (e está correto de acordo com o relógio exibido no canto superior direito sendo o total de 10 dias e 14 horas) enquanto que o bash permanece 8 dias e 4:36.


Tudo bem, foram no mesmo dia, então esperei mais um tempo e agora o android consta mais de 273 horas (totalizando de 11 dias e 9 horas e meia) enquanto que o Bash permanece 8 dias e 23:05. Nesta ultima imagem, conferam a data e hora com o comando date que e o bash retornou 21:10 sendo que a hora real era 18:10).

Eu não sou o único que já reparou isso, esta imagem abaixo é de um membro do grupo Linux aprendendo  no Telegram onde relata que a partição /dev/sda4 pelo gparted está em NTFS enquanto que no Bash consta FAT16 a mesma partição. Porém o Windows também reconhece como NTFS:
Confiram o o sistema de arquivos no partição /dev/sda4 fornecida pelo Gparted e pelo Bash. Esta imagem é na distribuição Kali Linux
Esta ultima imagem é outra situação que aconteceu durante o processo de escrever este artigo. Eu utilizei o comando du (disk used) para conferir o tamanho final do binário do toybox após compilá-lo e o bash me retornou que o toybox tinha apenas 56k; repeti a operação e obtive o mesmo resultado. Depois utilizei o comando o du do próprio toybox que tenho instalado na minha máquina, para através dele também conferir o resultado final do tamanho do novo binário que compilei e o resultado foi que o comando du do toybox me retornou que seu tamanho final era de 328k (e não 56k como exibindo pelo du do coreutils...) Quando dos dois então estão certos? Após isso, para desencargo de consciência, resolvi mais uma vez utilizar o comando du do próprio bash que me retornou o valor de 328k e não 56k como ele havia me retornado das duas primeiras vezes... Bem conflitante. Não?
Eu utilizei o comando du (disk used) no bash contra o binário do toybox para conferir o seu tamanho final ao compilá-lo e o bash me retornou que o toybox tinha apenas 56k. Depois usei o du do proprio toybox que me retornou que seu tamanho final era de 328 e depois usei o comando du novamente no bash que me retornou que o tamanho do toybox era de 328...
O comando du utilizado no bash (pacote coreutils) consta que o arquivo toybox é do tamanho de 56k, depois o mesmo comando no toybox e depois o mesmo comando no bash novamente

Esta não é a primeira vez que situação assim acontece e considero até mesmo um alerta para a adoção de outros terminais como Zsh e Fish como terminal de comandos principal. Este é um bug de longa data que volta e meia acabo vendo.

Neste artigo resolvi comparar os pacotes coreutils do GNU, o embutils, o 9base e o toybox para certificar se estes entregam os mesmos resultados ou se retornam valores diferentes, tamanho final do binário, licença e muito mais.

Deu trabalho calcular o tamanho final do 9base uma vez que os comandos ficam todos dispersos estando cada um em seu próprio diretório (diretório = pasta para caso você que esteja lendo seja usuário novo no Linux) e cada diretório não contem unicamente o próprio comando (diferente do embutils que concentra todos os comandos em um único diretório quando compilados). Então criei um diretório, copiei somente os binários para dentro dele e assim calculei o tamanho final dos comandos do 9base.
9base
Diretórios do 9base onde concentram os comandos sepadaramente. Clique na imagem para aumentar o tamanho.

O diretório bin-x86_64 é aonde o embutils concentra todos os comanos após a compilação. Clique na imagem para aumentar o tamanho.
O diretório bin-x86_64 é aonde o embutils concentra todos os comanos após a compilação. Clique na imagem para aumentar o tamanho.
As comparações aqui são feitas entre as licenças utilizadas, se são linkados dinamica ou estaticamente, o tamanho final dos binários, a descrição da saída da opção --help dos comandos para obter informações precisas de como utilizá-los e por fim o resultado das saídas dos comandos.

Utilizamos aqui os comandos df e du -s para verificar se os resultados coincidem; o único comando que não utilizamos no 9base foi o df, pois o 9base não possui tal comando. Os testes (básicos) aqui realizados usando comandos como du, foram feitos em diretórios como meu próprio home. No meu home mesmo por exemplo, enquanto o 9base retornou o resultado 12111218d (12113235d com a opção -sh... tipo... hein?), todos os outros retornaram o resultado 12244176 (12G com a opção -sh).
Clique na imagem para aumentar o tamanho.
Os resultados pode ser conferidos logo abaixo:
comparacao-entres-os-pacotes-de-comandos-coreutils-embutils-9base-e-o-terminal-de-comandos-toybox
Clique na imagem para aumentar o tamanho e conferir o resultado dos pacotes.
Há quem vá dizer que não acha justo incluir o Bash nessa história; não seria então incluir o toybox também. Ou vai haver quem diga que não é justo incluir o toybox nesta comparação; a questão é que o toybox concentra todos os comandos dentro de si, e não dispersos. Fora que ele fez parte da série, dando uma olhada ;)

Vale Lembrar também que o tamanho final dos arquivos pode variar por filesystem conforme descreve no artigo Benchmark de filesystems.

De todos, o que menos me agradou foi literalmente o 9base. Não adianta o 9base estar sob a licença MIT (que é uma licença que vem tendo sua adição cada vez mais crescente) mas gerar binários exageradamente enormes, ter fracas descrições com a opção --help e ainda apresentar resultados duvidosos e de difícil leitura (digitem o comando ls do 9base e confiram que desastre).

Porém, também não adianta o embutils ser tão pequeno (apesar que isso é muito bom :), tão exulto (admirável demais isso) e ter as mesmas fracas descrições na opção --help que o 9base... (apesar que possuem manpages para os dois, essas descrições se tornam problemas fáceis de serem solucionados) e também adotar a GPL mesmo que seja a versão 2. Poderia ao menos ter adotado a MPL. Ao menos seu resultado não é duvidoso.

Também não adianta o coreutils ter boas descrições com a opção --help mas ter binários grandes (o coreutils não fica longe do 9base se consideráramos que o coreutils ser dinamicamente lincado) e adotar a GPLv3 (versão totalmente conflitante com ao GPLv2 e GPLv2+). Fora seus resultados poderem ser bem duvidosos.

O que apresentou melhores resultados foi o realmente o toybox podendo reunir as melhores características de cada um:
  • Licença flexível para uma época onde a GPL se torna fragmentável
  • tamanho final do binário bem enxuto (melhor que o próprio embutils)
  • Pensado na segurança, estabilidade e desempenho
  • Boa descrição de informações (de forma mais alinhada que do próprio Bash+coreutils)
  • Resultado da saída do comando confiável
Uma pena ainda não ser possível utilizar o toybox como terminal de comandos padrão como no caso do Android, mas espero que não demore muito a se tornar uma opção para as distribuições que utilizamos (em especial o Alpine Linux), o que é algo que a comunidade toybox trabalha para que aconteça. Porque, ficar digitando o comando toybox toda vez que quero usar um comando é desagastante. Na verdade ainda não abandono (de forma alguma) o Zsh e está espero que venha a se tornar o terminal de comandos padrão nas distribuições.

Já perceberam que não coloquei o coreutils como vilão da história como muitos ACHAM que eu odeio GNU. Porque a paixão excessiva por parte dos amantes do Gnu em suas cabeças é tão grande que isso não permite que eles vejam que estou fazendo analise técnica. Porém também não estou escrevendo este artigo para desmoralizar o 9base. Somente não o adotaria hoje por não atender nenhuma das expectativas em um conjunto de comandos. Quando adotarem um terminal, pesem na balança se o que obtemos é real ou não. pretendo ainda fazer uma análise ainda um pouquinho maior sobre esse comandos. Vamos ver o que teremos de resposta ;)

E o estudo não para por aqui. Depois de quase concluído este artigo, descobri novas coisas que gerarão outro estudo. Até o próximo artigo.

Agradeço ao Hilton Vasconcelos pela imagem fornecida do Kali Linux mostrando a partição /dev/sda4 no Gparted e no bash.

Lançado toybox 0.8.4

lançado toybox 0.8.4

 Toybox é um terminal de comandos que visa ser similar ao Busybox porém mantendo a característica de possuir o código mais limpo, mais simples, menor e consequentemente mais fácil de manter. Perguntado se será possível ao toybox substituir o Dash, Rob Landley respondeu que na verdade visa substituir o Bash. O que não é uma má ideia e assim espero (apesar de a minha preferencia ser o Zsh). Mas ambos os terminais (tanto Zsh quanto toybox) foram essenciais para que eu desenvolver tanto o meu curso de migração para Linux quanto o meu mini curso de atributos no Linux.

 No dia 24 de Outubro foi lançado (depois de um período bem turbulento de desenvolvimento) a versão 0.8.4 do terminal de comandos toybox. É claro que houveram correções de bugs, limpeza no código e melhorias na biblioteca. Mas o que geralmente nos interessa é o que há de novo (natural no ser humano). São cinco novos comandos que foram promovidos (passando de 205 comando da versão 0.8.3 para 210 comandos na versão 0.8.4) mas as maiores novidades nesta versão são os comandos sha3sum e watchdog. Outros dois comandos que eu não pude deixar de notar são o sh e o toysh que nos permitem adotar o toybox como terminal de comandos como padrão e são estes comandos que permitem tornar o Android como um sistema Self-hosting como mencionei no lançamento da versão 0.8.1.

sh e toysh no toybox

 Não deixei de notar a parte de organização de mudanças nos textos. Antigamente, ao digitar simplesmente toybox, a lista de comandos era exibida em um certo tamanho ocupando bastante espaço na tela. Na versão 0.8.4 os comandos passaram a ser exibidos de forma sequencial:


 Houve também alterações na opção --help onde adicionaram informações complementares ao texto ou deixaram de forma mais clara.

opção --help na versão 0.8.3

opção --help na versão 0.8.4

 O README e o FAQ ficaram maiores e com mais links (alguns conteúdos do README foram parar no FAQ); o Toysh e o toyroot receberam 29 commits e o Pending também recebeu muitos trabalhos (inclusive testes para o Alpine Linux).

 É possível baixar o toybox tanto na forma de código fonte quanto a versão binária clicando aqui. Existe também binários do mkroot disponíveis para várias arquiteturas com o kernel 5.9 (que podem ser conferidos clicando aqui).

Lançado toybox 0.7.8

No dia 31 de Outubro foi lançada a nova versão do toybox, versão 0.7.8. Muitos devem imaginar que, por se tratar de versões BETA ainda, o toybox não seria bom para ser utilizado em produção. E é aí ainda muita gente se engana. Já faz mais ou menos dois anos que o toybox é utilizado como padrão no Android (desde a versão 7, codinome MarshMallow) e já mostrei em vídeo e artigo que ele apresenta resultados mais reais do que o Bash. Beta no Linux é tratado de forma diferente.

Nessa nova versão, é possível construir o toybox utilizando Android NDK r18 quase out of the box.

Temos agora o total de oito novos comandos disponíveis sendo alguns deles o i2cdetect, i2cdump, i2cget, e i2cset que são cortesia do Elliott/Android. O comando watch teve uma reescrita completa (tty-aware), e foi promovido a sair de pendentes. O comando prlimit está de volta e agora também tendo o comando asscii.
Comparando quantidade de comandos entre as versões 0.7.7 e 0.7.8 do toybox.
Comparando quantidade de comandos entre as versões 0.7.7 e 0.7.8 do toybox.
O comando ifconfig recebeu a opção -S (short view) dando uma linha de informação por interface, o comando grep recebeu nova detecção de arquivo binário com as opções -I e -a, o comando find recebeu a opção -empity e suporte a novos arquivos  e o comando getconf recebeu mais suporte que faltava agora fazendo com que os argumentos do getconfig funcionem parecidos com o Ubuntu.

Os pendentes continuam recebendo boa atenção crescendo bem e vários bugs continuam sendo corrigidos ao longo do tempo. Caso queira baixar, configurar e instalar o toybox, confiram no meu vídeo Dando uma olhada no toybox:


A nova versão pode ser conferida nos links abaixo:

Tres novos patches adicionados irão trazer novos recursos ao toybox


 No dia 14/05/2020 publiquei o lançamento do toybox 0.8.3. A cada lançamento eu faço uma publicação explicando o que há de novo no terminal. Quando lancei meu primeiro vídeo no canal, o toybox era adotado apenas no Adnroid a partir da versão 7 e no Tizen. Desde então os comandos do toybox vem ganhando mais espaço no POSIX-2008/SUSv4, no Linux Standard Base, no buildroot, na klibc (que já teve vídeo no canal), no Nash do Fedora, no Beatiebox do FreeBSD (há port para o FreeBSD e para o MacOS), no BsdBox, e vários outros projetos que podem ser conferidos o Use Case do toybox (clicando aqui).



 Eric Molitor que já contribuiu com outros projetos open source (inclusive um patch para o proprio kernel Linux. Seus projetos podem ser conferidos no seu site oficial clicando aqui) enviou dois patches para o toybox (Eric já totaliza quatro patches para o toybox).

 Seu primeiro patch é para adicionar suporte IPv6 support ao display_routes (que ainda está no diretório toys/pending/route.c. Daí teremos opções ao comando route como UP, GATEWAY, HOST, REINSTATE, DYNAMIC, MODIFIED, DEFAULT, ADDRCONF e CACHE). Eric relata que foi fácil trabalhar neste patch, mas ainda há algumas itens a ser feitos e algumas limpezas. já o segundo é para realizar a correção em um endereçamento na família do texto de ajuda.

 O terceiro foi enviado por Petri Gynther do Google. Seu patch aumenta os tamanhos das colunas no comando vmstat aumentando o tamanho das colunas dando mais detalhes do consumo de memória virtual. Petri enviou um exemplo de um Pixel 4 phone:

Exemplo do comando vmstat de um Pixel 4 phone
Exemplo do comando vmstat de um Pixel 4 phone
Atualmente, o vmstat do toybox 0.8.3 é assim
Atualmente, o vmstat do toybox 0.8.3 é assim
 Essas atualizações poderão aparecer na próxima versão (que pode ser a 0.8.4 ou a 0.9.0. Quem sabe?). Mais informações de atualizações, eu irei notificar a vocês. OK?

Saiba mais sobre o toybox clicando aqui

toybox 0.8.2

toybox 0.8.2
toybox 0.8.2
 Em Outubro desse ano foi lançada a versão 0.8.2 do terminal de comandos toybox. Parecido com o Busybox mas desenvolvido de forma a ser mais fácil de manter, esse terminal começou ganhando destaque no Android e hoje já é adotado amplamente em vários projetos.
Essa informação pode ser conferida neste artigo.
 Eu tenho o habito de escrever algum artigo notificando o lançamento de cada nova versão; porém como andei muito ocupado, acabou que passou batido. Mas ó nois aqui TRAVEIS só para não deixar passar. Essa nova versão os seguintes comandos específicos do Android como getprop, setprop, start, e stop foram removidos devido o crescimento de dependências nas bibliotecas do android (e já que o toybox tenta evitar dependências externas obrigatórias, esses comandos foram movidos para outro pacote).

 Na versão anterior eu havia encontrado um bug na opção -xJvf do comando tar que eu cheguei a reportar para a comunidade (ou seja, na descompactação dos arquivos .tar.xz, e somente na descompactação). Cheguei na época a fazer um vídeo sobre o assunto. Confiram logo abaixo:


 Essa opção foi corrigida (o que na verdade já estava nos planos do projeto). Eu testei  essa opção somente para me certificar  com a libraw sem a opção verbose somente para facilitar a sua leitura aqui no artigo, mas testei também nos bastidores com tal opção e também funcionou normalmente:

Testando o tar -xJvf no toybox 0.8.2. O que era um bug na versão anterior, agora é funcional.
Testando o tar -xJvf no toybox 0.8.2. O que era um bug na versão anterior, agora é funcional.
 Parabéns ao projeto toybox por trazer essa correção rápida bem dentro do estilo de A catedral e o bazar. Houveram bem mais correções de bugs e adição de novos recursos que podem ser conferidos clicando aqui.
A catedral e o bazar
NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.
NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.

Testamos a nova versão do toybox e veja o que descobrimos.

bug-no-toybox-tar
Bug no comando toybox tar
 Pouco mais de três meses e meio depois do lançamento da versão 0.8.0, é lançada a nova versão. toybox é terminal de comandos desenvolvido exclusivamente para Linux combinando muitos comandos comuns no Linux em um único binário assim como o Busybox; porém possuindo código mais limpo, mais simples, mais claro e mais fácil de manter. Com o tempo a comunidade. Com o tempo, a comunidade FreeBSD decidiu portá-lo; o que acabou dando origem a versão para MacOS X também. Está sob licença cláusula zero da BSD (0-BSD) e é compatível com a POSIX-2008 e o padrão LSB4.1.
curso-linux-da-migração-a-administração-do-sistema-operacional
CLIQUE AQUI, VENHA APRENDER LINUX COMIGO E TORNE-SE UM VERDADEIRO PROFISSIONAL.
 Quando lancei o primeiro vídeo no canal, o toybox era adotado no Adnroid 7 e no Tizen. Desde então os comandos do toybox vem ganhando mais espaço no POSIX-2008/SUSv4, no Linux Standard Base, no buildroot, na klibc (que já teve vídeo no canal), no Nash do Fedora, no Beatiebox do FreeBSD, no BsdBox, e vários outros projetos que podem ser conferidos o Use Case do toybox (clicando aqui).

 O que eu percebo é que o toybox acabará substituindo o Busybox assim como o Linux substituiu o Minix e o Neo Vim anda substituindo o Vim; isso acaba sendo uma lei natural. Mas encontrei um pequeno bug nele e quis compartilhar essa com vocês:

 Ok, reportado o bug a comunidade, agora é esperar pois eles andam bem ocupada com outros trabalhos (talvez mais importantes) no projeto como várias correções na versão do MacOS, na parte de uso de CPU do comando top, e remoção de getprop, setprop, start e stop do toybox, melhorando os nomes dos sinais do comando kill, na parte de variáveis e mais outras partes (aqui dei mais um trabalho para eles; ou talvez adiantei o trabalho deles).




Lançado toybox 0.8.1

toybox 0.8.1
toybox 0.8.1
 após três meses do lançamento da nova versão (0.8.0) do toybox, foi lançada a sua atualização que conta com muitas novidades. Toybox é um terminal de comandos pequeno e enxuto desenvolvido próprio para o Linux tendo uma base código mais limpa do que a do Busybox. Está a cláusula 0 (cláusula zero, também chamada 0BSD) da licença BSD que o torna mais permissivo do que a GPL. Recentemente a comunidade FreeBSD está trabalhando para portá o toybox e tê-lo também disponível para o sistema operacional como uma alternativa e assim ambas as comunidades e ajudam mutuamente.
curso-linux-da-migração-a-administração-do-sistema-operacional
CLIQUE AQUI, VENHA APRENDER LINUX COMIGO E TORNE-SE UM VERDADEIRO PROFISSIONAL.
 Não vou entrar em muitos detalhes sobre este terminal de comandos pois já há vários vídeos no canal contando desde a história; entrevista com o criador (sim, foi privilegiado neste aspecto); vídeo explicando explicando a arvore de diretórios do código fonte, como configurar, compilar e utilizar. No meio disso tudo, conto também com mais uma live explicando com mais detalhes sobre configuração, compilação e uso e deixarei todos esses vídeos para que possa conferir no final deste artigo. Agora vamos a o que interessa que são as novidades no lançamento.

 A maior novidade que eu considero é o fato de que o Android está agora utilizando o toybox como parte do hermetic build.  E o que isso significa? Simples! Significa que o Android está metade do caminho pronto para se tornar seu próprio ambiente de desenvolvimento. O toybox já é o terminal de comandos padrão do Android desde a versão 7, mas ainda é necessário outras distribuições (ou outros sistemas operacionais) para servir como base de desenvolvimento e bootstrap do Android. Em breve, isso não será mais necessário.
Não sabe o que é o Hermetic? Clique aqui que tem um artigo explicando ;)
 Foram adicionados os comandos mcookie que é utilizado pelo X11 (o mcookie gera números randômicos de 128 bits) e o comando devmem, que substitui o r do toolbox. Os comandos tar, gunzip e zcat receberam limpeza e foram promovidos saindo do diretório pendente. Mas o pendente também recebeu novos comandos como a nova implementação do vi e o man. Os comandos bc e arp receberam também receberam limpeza em sua base de código, mas permanecem como pendentes de revisão.

 Houveram também várias correções de bugs (inclusivo uma correção devido a um novo bug no GCC), melhorias na infraestrutura, na documentação (inclusive a licença recebeu o identificador SPDX) e no testing.

 Quer saber mais sobre o toybox, configurar e compilá-lo? É só conferir os vídeos abaixo para dar uma força ao canal. Até o próximo lançamento se Deus quiser:

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (15) AMD (14) analise (9) Andriod (8) artigo (5) benchmark (3) BSDs (20) btrfs (12) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (6) Código Fonte (50) comandos (17) comp (1) compressores (4) container (1) CPU (18) criptografia (2) crowdfunding (9) cursos (21) daemons (13) Debian (30) desenvolvimento (55) desktop (17) DevOps (1) DevSecOps (1) dic (1) Dica de leitura (57) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diocast (1) dioliunx (3) distribuições Linux (13) Docker (7) DragonflyBSD (15) ead Diolinux (2) edição de vídeo (4) EMMI Linux (4) emuladores (5) endless (5) English interview (2) Enless OS (2) entrevista (16) espaço aberto (83) evento (4) facebook (1) Fedora (5) filesystem (60) financiamento coletivo (2) fork (3) fox n forests (4) FreeBSD (12) Funtoo Linux (13) games (87) gerenciadores de pacotes (2) GOG (3) google (8) gpu (3) hardware (99) I.A (1) init system (7) Intel (15) IoT (1) ispconfig (1) jogos (33) kernel (116) lançamento (43) leis (1) LFCS (1) licenças (7) Linus (15) linus torvalds (1) Linux (190) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) machine learning (1) meetup (1) mesa redonda (27) microsoft (3) microst (1) muito além do GNU (121) não viva de boatos (9) navegadores (3) NetBSD (3) novatec (17) o meu ambiente de trabalho (3) off-topic (12) open source (79) OpenBSD (3) OpenShift (1) os vários sabores de Linux (39) padrim (2) palestras e eventos (3) partições (6) pentest (6) processadores (26) professor Augusto Manzano (11) Programação (40) propagandas com Linux (8) Red Hat (16) redes (2) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (1) runlevel (2) Secomp (1) segurança digital (15) servidores (1) shell (1) sistema operacional (19) Software livre e de código aberto (150) sorteio (3) Steam (8) Steam no Linux (6) supercomputadores (4) suse (6) systemd (7) terminal (74) toca do tux (1) toybox (15) tutorial (6) Tux (3) unboxing (7) UNIX (16) UNIX Toolbox (14) vartroy (1) vga (1) vulnerabilidade (3) wayland (2) whatsapp (1) Windows Subsystem for Linux (1) wine (12) WoT (1) ZFS (9)