Se presentó el lanzamiento del paquete BusyBox 1.35, que implementa un conjunto de utilidades estándar de UNIX, organizadas en un único archivo ejecutable y optimizadas para un consumo mínimo de recursos del sistema con un tamaño del paquete de menos de 1 MB. La primera versión de la nueva rama 1.35 se posiciona como inestable, y la estabilización completa se garantizará en la versión 1.35.1, que se espera aproximadamente en un mes. El código del proyecto se distribuye bajo la licencia GPLv2.
La naturaleza modular de BusyBox permite formar un único archivo ejecutable que contiene un conjunto arbitrario de utilidades implementadas en el paquete (cada utilidad está disponible en forma de enlace simbólico a este archivo). El tamaño, la composición y la funcionalidad de la colección de utilidades se pueden variar según las necesidades y capacidades de la plataforma embebida para la que se realiza la compilación. El paquete es autónomo; al realizar una compilación estática con uclibc, para crear un sistema operativo funcional sobre el núcleo de Linux, solo es necesario crear algunos archivos de dispositivos en el directorio /dev y preparar los archivos de configuración. En comparación con la versión anterior 1.34, el consumo de memoria RAM de la compilación típica de BusyBox 1.35 aumentó en 1726 bytes (de 1042344 a 1044070 bytes).
BusyBox es una herramienta principal en la lucha contra la violación de la GPL en los firmware. Las organizaciones Software Freedom Conservancy (SFC) y Software Freedom Law Center (SFLC), en representación de los desarrolladores de BusyBox, han influido exitosamente en las empresas que no proporcionan acceso al código fuente de programas bajo GPL, tanto por vía judicial como mediante la celebración de acuerdos extrajudiciales. Al mismo tiempo, el autor de BusyBox se opone a dicha protección, creyendo que arruina su negocio.
En la versión BusyBox 1.35 se destacan los siguientes cambios:
- En la utilidad find se implementó la opción «-samefile nombre» para comprobar si un archivo utiliza el mismo inode que el archivo con el nombre especificado. Se unificó el código para comparar tiempos y se añadieron las opciones «-amin», «-atime», «-cmin» y «-ctime» para verificar el tiempo de acceso y creación del archivo.
- A la utilidad mktemp se le añadió la opción «—tmpdir» para especificar el directorio base, relativo al cual se calculan las rutas relacionadas con archivos temporales.
- La utilidad cpio ha añadido las opciones «—ignore-devno» para ignorar el número real del dispositivo (siempre se escribe 0) y «—renumber-inodes» para renumerar inodes antes de almacenarlos en el archivo.
- En la utilidad awk se ha establecido el funcionamiento de la expresión «printf %%».
- Se han añadido alrededor de una docena de cambios a la biblioteca libbb. Se ha mejorado la compatibilidad de realpath con el equivalente de coreutils.
- Se han propuesto una gran cantidad de correcciones en los intérpretes de comandos ash y hush, enfocadas en mejorar la compatibilidad con otros intérpretes. En ash se ha añadido soporte para las trampas ERR similares a bash, set -E y $FUNCNAME, además de acelerar la extracción de cadenas mediante la expresión «${s:}». En ash y hush se ha acelerado la ejecución de las operaciones «${x//\*|}».
- En la utilidad basename se han implementado las opciones «-a» para pasar varios nombres en una sola llamada y «-s SUFFIX» para eliminar los caracteres finales «SUFFIX».
- La utilidad blkdiscard ha añadido la opción «-f» (forzar).
- En httpd se ha dejado de enviar los encabezados Last-Modified / ETag / Content-Length para páginas con errores.
- En httpd y telnetd se ha proporcionado la posibilidad de cambiar el puerto de red predeterminado.
- En tar se ha corregido una vulnerabilidad que provocaba el agotamiento de toda la memoria disponible al procesar archivos con nombres muy largos.
- En el código TLS se ha reimplementado P256 y x25519.
- En la utilidad wget se ha implementado la opción «—post-file» para enviar archivos y se ha permitido configurar el contenido del encabezado Content-Type para las opciones «—post-data» y «—post-file».
- La utilidad timeout ha añadido soporte para la opción «-k KILL_SECS» para enviar la señal SIGKILL si el comando no se completa en KILL_SECS segundos adicionales.
- En la utilidad ip se ha añadido soporte para establecer el parámetro netns para dispositivos.
- En la utilidad cal se ha implementado la opción «-m» para mostrar el mes especificado.
- En las utilidades date y touch se ha permitido especificar el desfase de la zona horaria en las fechas.
- En el editor vi se ha añadido soporte para el archivo ~/.exrc, se ha cambiado el manejo de «-c» y EXINIT.
- En la utilidad ed, el resultado de las operaciones de lectura/escritura se ha alineado con la especificación POSIX-1.2008. Se ha añadido soporte para la opción «-p».
- En la utilidad cmp se ha añadido la opción «-n N» para limitar la comparación a N bytes.
Además, hace unos días se lanzó Toybox 0.8.6, un equivalente de BusyBox, desarrollado por un ex mantenedor de BusyBox y distribuido bajo la licencia 0BSD. El propósito principal de Toybox es ofrecer a los fabricantes la posibilidad de utilizar un conjunto minimalista de utilidades estándar sin abrir los códigos fuente de los componentes modificados. En cuanto a capacidades, Toybox aún queda atrás de BusyBox, pero ya se han implementado 296 comandos básicos (217 totalmente y 83 parcialmente) de los 374 planificados.
Entre las novedades de Toybox 0.8.6 se pueden destacar la mejora de los scripts para crear imágenes del sistema, la adición de comandos sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace y hexdump. Se han implementado las opciones "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 $'\n'", "cut -nb", "cpio --ignore-devno --renumber-inodes", "tar --selinux", "split -n", "grep -L".
Fuente: opennet.ru
