Essa é uma noticia mais de um mês atrás, mas já que essa semana estamos falando sobre o toybox na série "Muito além do GNU", porque não estender mais o assunto para conhecer melhor sobre a ferramenta?
Na Embedded Linux Conference que aconteceu do dia 21 a 23 de Fevereiro deste ano em Portland, Michael Opdenacker da Free Electrons apresentou a palestra sobre como reduzir o tamanho do sistema operacional (tanto o kernel quanto o user space) já que Linux estava perdendo espaço para os RTOSes na IoT.
Link para o artigo com o vídeo em linux.com
Chegaram a sugerir patches de melhorias para o GCC, mas os patches causaram novos problemas e os desenvolvedores temeram que isso criaria novos bugs difíceis de serem rastreados e por isso os patches não foram aceitos.
Outras técnicas foram apresentadas para utilizar o GCC com a opção -mthumb (que no compilador do Ubuntu vem por padrão) para fazer uma mescla de instruções de 16 e 32 bits aos invés de somente 32 em processadores ARM, a opção make tinyconfig que é utilizada desde o kernel 3.18 para combinar ao make allnoconfig com mais algumas configurações e assim reduzir o tamanho dos binários.
“ela utiliza gcc optimize for size, assim o código pode ser mais lento mas se torna menor”
“Você habilita a compressão XZIP do kernel, e você economiza entre 6 a 10KB.”
Habilitar a opção obj-y no Makefile do kernel podendo compilar o kernel sem a necessidade do ptrace o tempo todo, que em ARM consome 14KB. No lado do user space, foram sugeridas ferramentas como o próprio toybox:
Site oficial to toybox
“Toybox possui as mesmas aplicações e a maioria dos mesmos recursos que o busybox, mas utiliza somente 84KB ao invés de 100KB,”
“Se você quiser um shell com apenas algumas utilidades na linha de comando, o toybox poderia lhe economizar milhares de bytes, embora ele seja menos configurável."
O uso da Musl que utiliza menos espaço do que glibc (sem duvida) ou que a uclibc foi outra opção sugerida por Michael. Apresentando um teste de comparação entre bibliotecas compilando um programa hellho.c com o GCC 6.2, o resultado final com a musl foi de 7.3kb, 67KB com a uclibc-ng 1.0.22 e 49KB com a glibc.
Para reduzir o filesystem, Michael sugeriu o uso do initramfs que lhe permite realizar boot mais rápido uma vez que não inicializa um filesystem e drivers armazenados. Para sistemas com mais RAM, Michael sugere o uso de filesystems mais compactos com o squashfs, JFFS2 ou ZRAM. Michael conclui que ainda há melhorias significativas a serem feitas no kernel space e no userspace. Daí eu imagino:
Se Linux já é bom, imagina tendo essas melhorias. Espero ainda ver isso =)
![]() |
| QUER APRENDER A UTILIZAR LINUX DE VERDADE, ENTÃO VENHA APRENDER COMIGO ;) |



Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.