Foi lançado o pacote BusyBox 1.35, que implementa um conjunto de utilitários padrão do UNIX, agrupados em um único arquivo executável e otimizado para um consumo mínimo de recursos do sistema, com um tamanho total inferior a 1 MB. A primeira versão da nova ramificação 1.35 é considerada instável, e a estabilização completa será garantida na versão 1.35.1, que está prevista para mais ou menos um mês. O código do projeto é distribuído sob a licença GPLv2.
A natureza modular do BusyBox permite a formação de um único arquivo executável unificado que contém um conjunto arbitrário de utilitários implementados no pacote (cada utilitário está disponível na forma de um link simbólico para esse arquivo). O tamanho, o conteúdo e a funcionalidade da coleção de utilitários podem ser variáveis, dependendo das necessidades e capacidades da plataforma incorporada para a qual a montagem é realizada. O pacote é autossuficiente; com a montagem estática com uclibc, para criar um sistema funcional sobre o núcleo Linux, é necessário apenas criar alguns arquivos de dispositivo no diretório /dev e preparar os arquivos de configuração. Em comparação com a versão anterior 1.34, o consumo de memória da montagem típica do BusyBox 1.35 aumentou em 1726 bytes (de 1042344 para 1044070 bytes).
O BusyBox é uma ferramenta principal na luta contra a violação da GPL em firmware. As organizações Software Freedom Conservancy (SFC) e Software Freedom Law Center (SFLC), em nome dos desenvolvedores do BusyBox, têm impactado com sucesso empresas que não fornecem acesso ao código-fonte de programas GPL, tanto por meio de ações judiciais quanto por meio de acordos extrajudiciais. Ao mesmo tempo, o autor do BusyBox é contra essa proteção, acreditando que ela prejudica seu negócio.
Na versão BusyBox 1.35, destacam-se as seguintes mudanças:
- No utilitário find, foi implementada a opção "-samefile nome" para verificar se um arquivo utiliza o mesmo inode que o arquivo especificado. O código para comparação de tempos foi unificado e opções como "-amin", "-atime", "-cmin" e "-ctime" foram adicionadas para verificar os tempos de acesso e criação do arquivo.
- No utilitário mktemp, foi adicionada a opção "—tmpdir" para especificar o diretório base a partir do qual os caminhos para os arquivos temporários são calculados.
- No utilitário cpio, foram adicionadas as opções "—ignore-devno" para ignorar o número de dispositivo real (que é sempre registrado como 0) e "—renumber-inodes" para renumerar os inodes antes de colocá-los no arquivo.
- No utilitário awk, foi ajustado o funcionamento da expressão "printf %%".
- Foram adicionadas cerca de dez mudanças à biblioteca libbb. A compatibilidade do realpath foi aprimorada em relação à sua contraparte do conjunto coreutils.
- Uma grande quantidade de correções foi proposta nos shells ash e hush, visando melhorar a compatibilidade com outros shells. O ash agora suporta traps de ERR semelhantes ao bash, set -E e $FUNCNAME, além de acelerar a extração de strings usando a expressão "${s:}". As operações "${x//\*\/|}" foram aceleradas no ash e no hush.
- Na utilidade basename, foram implementadas as opções "-a" para passar vários nomes em uma única chamada e "-s SUFFIX" para remover os caracteres finais "SUFFIX".
- Na utilidade blkdiscard, foi adicionada a opção "-f" (force).
- No httpd, o envio de cabeçalhos Last-Modified / ETag / Content-Length para páginas com erro foi interrompido.
- No httpd e telnetd, foi disponibilizada a possibilidade de alterar a porta de rede padrão.
- No tar, foi eliminada uma vulnerabilidade que poderia consumir toda a memória disponível ao processar arquivos com nomes muito longos.
- No código TLS, a implementação de P256 e x25519 foi refeita.
- Na utilidade wget, foi implementada a opção "--post-file" para enviar arquivos e agora é possível configurar o conteúdo do cabeçalho Content-Type para as opções "--post-data" e "--post-file".
- Na utilidade timeout, foi adicionada a opção "-k KILL_SECS" para enviar o sinal SIGKILL se o comando não terminar dentro de KILL_SECS segundos adicionais.
- Na utilidade ip, foi adicionada a compatibilidade para definir o parâmetro netns para dispositivos.
- Na utilidade cal, foi implementada a opção "-m" para exibir um mês específico.
- Nas utilidades date e touch, agora é permitido especificar o deslocamento do fuso horário nas datas.
- No editor vi, foi adicionada a compatibilidade para o arquivo ~/.exrc, e a manipulação de "-c" e EXINIT foi alterada.
- Na utilidade ed, o resultado da execução dos comandos read/write foi alinhado à especificação POSIX-1.2008. A opção "-p" foi adicionada.
- Na utilidade cmp, foi adicionada a opção "-n N" para limitar a comparação a N bytes.
Além disso, alguns dias atrás foi lançado o Toybox 0.8.6, um equivalente do BusyBox, desenvolvido pelo ex-mantenedor do BusyBox e distribuído sob a licença 0BSD. O principal objetivo do Toybox é oferecer aos fabricantes a capacidade de usar um conjunto minimalista de utilitários padrão sem abrir o código-fonte dos componentes modificados. Em termos de funcionalidades, o Toybox ainda está atrás do BusyBox, mas já implementou 296 comandos básicos (217 totalmente e 83 parcialmente) dos 374 planejados.
Entre as novidades do Toybox 0.8.6, destacam-se as melhorias nos scripts para criação de imagens de sistema, a adição dos comandos sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace e hexdump. Foram implementadas opções como "date -s", "pmap -p", "tail -F -s", "kill -0", reboot/halt/poweroff -d, "tail --bytes --lines", "i2cdetect -q", "find -quit -lname -ilname -d", "cut -d $' '", "cut -nb", "cpio --ignore-devno --renumber-inodes", "tar --selinux", "split -n", "grep -L".
Fonte: opennet.ru
