BusyBox es un paquete de software que proporciona varias utilidades de Unix en un solo archivo ejecutable . Se ejecuta en una variedad de entornos POSIX como Linux , Android , [7] y FreeBSD , [8] aunque muchas de las herramientas que proporciona están diseñadas para trabajar con interfaces proporcionadas por el kernel de Linux. Fue creado específicamente para sistemas operativos integrados con recursos muy limitados. Los autores lo llamaron "La navaja suiza de Linux embebido ", [9]ya que el único ejecutable reemplaza las funciones básicas de más de 300 comandos comunes. Se publica como software libre bajo los términos de la Licencia Pública General GNU , versión 2. [6]
Autor (es) original (es) | Bruce Perens |
---|---|
Desarrollador (es) | Erik Andersen, [1] Rob Landley, [2] Denys Vlasenko [3] y otros |
Versión inicial | 4 de noviembre de 1999 [4] |
Lanzamiento estable | 1.33.1 (3 de mayo de 2021 [±] [5] | )
Repositorio | |
Escrito en | C |
Sistema operativo | Tipo Unix |
Tamaño | 2,1 MB (comprimido "tar.bz2") |
Tipo | |
Licencia | GPLv2 [6] |
Sitio web | www |
Historia
Orígenes
Originalmente escrito por Bruce Perens en 1995 y declarado completo para su uso previsto en 1996, [10] BusyBox inicialmente tenía como objetivo poner un sistema de arranque completo en un solo disquete que sirviera como disco de rescate y como instalador para la distribución Debian. . Desde entonces, se ha ampliado para convertirse en el conjunto de herramientas de espacio de usuario central estándar de facto para dispositivos Linux integrados e instaladores de distribución de Linux. Dado que cada ejecutable de Linux requiere varios kilobytes de sobrecarga, hacer que el programa BusyBox combine más de doscientos programas a menudo ahorra una cantidad sustancial de espacio en disco y memoria del sistema.
BusyBox fue mantenido por Enrique Zanardi y se centró en las necesidades del sistema de instalación de disquetes de arranque de Debian hasta principios de 1998, cuando Dave Cinege se hizo cargo del Proyecto de enrutador Linux (LRP). Cinege hizo varias adiciones, creó un entorno de construcción modular y cambió el enfoque de BusyBox a sistemas integrados generales de alto nivel . A medida que el desarrollo de LRP se desaceleró en 1999, Erik Andersen, entonces de Lineo, Inc. , se hizo cargo del proyecto y se convirtió en el mantenedor oficial entre diciembre de 1999 y marzo de 2006. Durante este tiempo, el mercado integrado de Linux explotó en crecimiento y BusyBox maduró mucho. expandiendo tanto su base de usuarios como su funcionalidad. Rob Landley se convirtió en el encargado de mantenimiento en 2005 hasta finales de 2006, luego Denys Vlasenko asumió el cargo de encargado de mantenimiento actual.
Controversias GPLv2 / GPLv3
En septiembre de 2006, después de fuertes discusiones y controversias entre el mantenedor del proyecto Rob Landley y Bruce Perens , [11] el proyecto BusyBox [12] [13] decidió no adoptar la Licencia Pública GNU Versión 3 ( GPLv3 ); la licencia de BusyBox se aclaró como GPL Versión 2 ( GPLv2 ) únicamente. [14]
Desde octubre de 2006, Denys Vlasenko se ha hecho cargo del mantenimiento de BusyBox de Rob Landley, quien ha iniciado Toybox , también como resultado de las controversias sobre licencias. [12] [15]
Demandas de GPL
A finales de 2007, BusyBox también se destacó por procesar activamente las violaciones de los términos de su licencia (la GPL) en el Tribunal de Distrito de los Estados Unidos para el Distrito Sur de Nueva York . [dieciséis]
Lo que se afirmó que era la primera demanda de EE. UU. Por una violación de la GPL se refería al uso de BusyBox en un dispositivo integrado. La demanda, [16] caso 07-CV-8205 fue presentada el 20 de septiembre de 2007 por el Software Freedom Law Center (SFLC) en nombre de Andersen y Landley contra Monsoon Multimedia Inc., después de que se descubriera el código BusyBox en una actualización de firmware y los intentos de ponerse en contacto con la empresa aparentemente habían fracasado. El caso se resolvió con la publicación de la versión Monsoon de la fuente y el pago de una cantidad de dinero no revelada a Andersen y Landley. [17]
El 21 de noviembre de 2007, la SFLC presentó dos demandas similares en nombre de Andersen y Landley contra dos empresas más, Xterasys (caso 07-CV-10455) y High-Gain Antennas (caso 07-CV-10456). [18] [19] El caso de Xterasys se resolvió el 17 de diciembre por la liberación del código fuente utilizado y un pago no revelado, [20] y el caso de High-Gain Antennas el 6 de marzo de 2008 por el cumplimiento activo de la licencia y un pago no revelado. [21] El 7 de diciembre de 2007, se entabló un caso contra Verizon Communications por su distribución de firmware para enrutadores Actiontec; [22] [23] este caso se resolvió el 17 de marzo de 2008 con la condición de cumplimiento de la licencia, el nombramiento de un funcionario para supervisar el cumplimiento futuro de las licencias de software libre y el pago de una suma no revelada. [24] El 9 de junio de 2008 se entablaron nuevas demandas contra Bell Microproducts (caso 08-CV-5270) y SuperMicro (caso 08-CV-5269), [25] el caso Super Micro se resolvió el 23 de julio de 2008. [ 26] BusyBox y Bell Microproducts también llegaron a un acuerdo extrajudicial el 17 de octubre. [27]
El 14 de diciembre de 2009, se presentó una nueva demanda en la que se nombraba a catorce acusados, incluidos Best Buy , JVC , Samsung y otros. [28] [29] [30] En febrero de 2010, Samsung lanzó su firmware de TV LN52A650 bajo GPLv2, [31] que fue utilizado más tarde como referencia por el proyecto comunitario SamyGO . [32]
Aproximadamente el 3 de agosto de 2010, BusyBox ganó de Westinghouse una sentencia en rebeldía de daños triples de $ 90,000 y costos y honorarios de abogados de $ 47,865, y posesión de "presumiblemente muchos televisores de alta definición" como equipo infractor en la demanda Software Freedom Conservancy v. Best Buy, et al., el caso de infracción de GPL mencionado en el párrafo anterior. [33]
Ningún otro desarrollador, incluido el autor original Bruce Perens y el mantenedor Dave Cinege, estuvo representado en estas acciones o fue parte de los acuerdos. El 15 de diciembre de 2009, Perens emitió un comunicado en el que expresaba su descontento con algunos aspectos de la situación legal y, en particular, alegó que los actuales desarrolladores de BusyBox "parecen haber eliminado algunas de las declaraciones de derechos de autor de otros desarrolladores de BusyBox, y parecen haber alterado declaraciones de licencia ". [34]
Características
BusyBox se puede personalizar para proporcionar un subconjunto de más de doscientas utilidades. Puede proporcionar la mayoría de las utilidades especificadas en la Especificación Única de Unix (SUS) además de muchas otras que un usuario esperaría ver en un sistema Linux. BusyBox utiliza el shell Almquist , también conocido como A Shell, ash y sh. [35] Una alternativa para la personalización es el caparazón de "silencio" más pequeño. "Msh" y "lash" solían estar disponibles. [36]
Como es un sistema de arranque completo, reemplazará aún más al demonio init y udev (o el systemd de los últimos días ) usándose a sí mismo para ser llamado como init al inicio y mdev en el momento de la conexión en caliente .
El sitio web de BusyBox proporciona una lista completa de las utilidades implementadas. [37]
Binario único
Los programas de computadora típicos tienen un archivo binario ( ejecutable ) separado para cada aplicación. BusyBox es un solo binario, que es un conglomerado de muchas aplicaciones, a cada una de las cuales se puede acceder llamando al único binario BusyBox con varios nombres (apoyado por tener un enlace simbólico o enlace duro para cada nombre diferente) [38] en un manera con argumentos apropiados.
BusyBox se beneficia del enfoque binario único, ya que reduce la sobrecarga introducida por el formato de archivo ejecutable (generalmente ELF ) y permite que el código se comparta entre múltiples aplicaciones sin requerir una biblioteca . Esta técnica es similar a la proporcionada por el comando crunchgen [39] en FreeBSD , con la diferencia de que BusyBox proporciona versiones simplificadas de las utilidades (por ejemplo, unals comando sin capacidad de clasificación de archivos), mientras que una suma generada por crunchgen de todas las utilidades ofrecería las versiones completamente funcionales.
Compartir el código común, junto con las rutinas escritas con la optimización del tamaño en mente, puede hacer que un sistema BusyBox use mucho menos espacio de almacenamiento que un sistema construido con las correspondientes versiones completas de las utilidades reemplazadas por BusyBox. La investigación [40] que comparó las implementaciones de GNU , BusyBox, asmutils y Perl de los comandos estándar de Unix mostró que, en algunas situaciones, BusyBox puede funcionar más rápido que otras implementaciones, pero no siempre.
Comandos
La documentación oficial de BusyBox enumera una descripción general de los comandos disponibles y sus opciones de línea de comandos.
Lista de comandos BusyBox [41]
- ceniza
- awk
- cat : imprime el contenido de uno o más archivos en stdout.
- chmod - Cambiar modos de archivo
- cp - Copiar
- fecha : muestra la fecha / hora del sistema
- dd : copia un archivo con conversión y formato
- df - Imprimir estadísticas de uso del sistema de archivos
- dmesg
- echo : muestra una línea de texto específica.
- garza
- fgrep
- getty
- grep : busca PATRÓN en cada ARCHIVO o entrada estándar.
- gunzip : expansión de archivos comprimidos.
- gzip : compresión de archivos.
- httpd - demonio del servidor HTTP
- en eso
- kill : envía una señal a un proceso.
- ln : crea un enlace llamado LINK_NAME o DIRECTORY al OBJETIVO especificado.
- iniciar sesión: comienza una nueva sesión en el sistema
- ls : lista de archivos o carpetas
- mdev - similar a udev
- mkdir - Crea una carpeta
- más - Ver ARCHIVO o entrada estándar una pantalla completa a la vez
- mount - Montar sistemas de archivos
- mv - mover archivo
- nc - navaja suiza para redes.
- netstat : muestra información de red.
- ntpc
- ntpsync
- nvram
- pidof : enumera los PID de todos los procesos con nombres que coinciden con los NOMBRES
- ping : envía paquetes ICMP ECHO_REQUEST a los hosts de la red
- ps : informe del estado del proceso
- pwd - Imprimir directorio de trabajo
- camino real
- rm - Borrar archivo
- rmdir - Eliminar directorio
- rpm2cpio
- rstats - Copyright de BusyBox
- rtcwake
- nivel de ejecución
- ejecutar-partes
- correv
- correvdir
- rx
- texto
- sed : editor de flujo de texto
- setkeycodes
- setlogcons
- setid
- setuidgid
- sh
- sha1sum : calcula y verifica el resumen del mensaje SHA-1
- sha256sum - Calcule y verifique el resumen del mensaje SHA-512
- sleep : suspender la ejecución del programa durante un tiempo específico
- start-stop-daemon
- estadística
- instrumentos de cuerda
- stty : cambia e imprime la configuración de la línea del terminal
- su - Ejecuta comandos con privilegios de otra cuenta de usuario
- sulogin
- suma : suma de comprobación y recuento de bloques en un archivo
- sv
- svlogd
- intercambio
- swapon
- cambiar de raíz
- sync : escribe todos los bloques del sistema de archivos almacenados en búfer en el disco
- sysctl
- syslogd
- tac - Concatenar e imprimir archivos en orden de línea inverso
- tail - Salida al final del archivo
- alquitrán
- conjunto de tareas
- tcpsvd
- tee : envía la salida a varios archivos
- telnet
- telnetd
- prueba
- tftp
- tftpd
- hora
- timeout : ejecuta un comando con un límite de tiempo
- cima
- touch - Actualiza la fecha de la última modificación en el ARCHIVO dado (s)
- tr - Traducir o eliminar caracteres
- trazar ruta
- cierto
- tty
- ttysize
- udhcpc : cliente DHCP pequeño
- udhcpd
- udpsvd
- umount - Desmontar sistemas de archivos
- uname : muestra la información del sistema
- descomprimir
- no expandirse
- uniq
- unix2dos
- unlzma
- desatar
- abrir la cremallera
- uptime : indica cuánto tiempo ha estado funcionando el sistema.
- dormido - Pausa de N [microsegundos]
- vconfig - programa de configuración de VLAN (802.1q)
- vi - (visual) Editar ARCHIVO
- vlock - programa de bloqueo de la consola virtual
- volname - Devuelve el nombre del volumen
- watch - Ejecuta un programa periódicamente
- watchdog - Demonio de vigilancia de software
- wc : recuento de palabras, líneas y bytes o caracteres
- wget
- que : muestra la ruta completa de los comandos (shell)
- who : muestra quién está en el sistema
- whoami - Imprime el ID de usuario efectivo
- xargs : construye listas de argumentos e invoca la utilidad
- sí - para imprimir una cadena repetidamente
- zcat - Descomprimir a la salida estándar
- zcip
Ejemplos de
Los programas incluidos en BusyBox se pueden ejecutar simplemente agregando su nombre como argumento al ejecutable BusyBox:
/bin/busybox ls
Más comúnmente, los nombres de los comandos deseados están vinculados (usando duros o simbólicos enlaces) al ejecutable BusyBox; BusyBox lee argv [0] para encontrar el nombre por el que se llama y ejecuta el comando apropiado, por ejemplo, simplemente
/bin/ls
después de que / bin / ls esté vinculado a / bin / busybox . Esto funciona porque el primer argumento que se pasa a un programa es el nombre utilizado para la llamada al programa, en este caso el argumento sería "/ bin / ls". BusyBox vería que su "nombre" es "ls" y actuaría como el programa "ls".
Electrodomésticos y recepción
BusyBox es utilizado por varios sistemas operativos que se ejecutan en sistemas integrados y es un componente esencial de distribuciones como OpenWrt , OpenEmbedded (incluido el Proyecto Yocto ) y Buildroot . El Sharp Zaurus utiliza ampliamente para BusyBox ordinaria Unix tareas realizadas en el caparazón del sistema. [42]
BusyBox también es un componente esencial de VMware ESXi .
Es necesario para varias aplicaciones raíz en Android y también viene preinstalado con algunas soluciones "1 Tap Root" como Kingo Root .
Controversia por Toybox
Toybox se inició a principios de 2006 bajo la Licencia Pública General GNU por el ex mantenedor de BusyBox Rob Landley como resultado de las controversias en torno a las discusiones sobre GPLv3 / GPLv2. A finales de 2011 [43] se volvió a licenciar bajo la Licencia BSD después de que el proyecto quedó inactivo. [44] El 11 de enero de 2012, Tim Bird, un empleado de Sony , sugirió crear una alternativa a BusyBox que no estaría bajo la Licencia Pública General GNU. Sugirió que se basara en Toybox inactivo. [45] En enero de 2012, la propuesta de crear una alternativa con licencia BSD al proyecto BusyBox con licencia GPL provocó duras críticas de Matthew Garrett por quitar la única herramienta relevante para la aplicación de derechos de autor del grupo Software Freedom Conservancy . [46] El iniciador de las demandas basadas en BusyBox, Rob Landley, respondió que esto fue intencional ya que llegó a la conclusión de que las demandas no dieron como resultado los resultados positivos esperados y quería detenerlos "de la manera que crea conveniente" . [47] [48]
Ver también
- Utilidades principales de GNU
- util-linux , iproute2 , ethtool
- Linux en sistemas integrados
- Linux para dispositivos móviles
Referencias
- ^ "Página de inicio de Erik Andersen" .
- ^ Proyectos activos , sitio web de Rob Landley
- ^ Denys Vlasenko , mantenedor de BusyBox
- ^ http://www.softwarefreedom.org/resources/2009/busybox-complaint-2009-12-14.pdf [ enlace muerto permanente ]
- ^ "Historial de versiones" . Consultado el 18 de mayo de 2021 .
- ^ a b "BusyBox" .
- ^ BitCubate X. "BusyBox Classic" .
- ^ "Descripción general del puerto FreeBSD" .
- ^ El lema de la fuente 'La navaja suiza de Linux embebido'
- ^ https://busybox.net/~landley/forensics.txt
- ^ Declaración sobre demandas de Busybox enel Weblog de Bruce Perens (15 de diciembre de 2009, archivado)
- ^ a b corbet (1 de octubre de 2006). "Busy busy busybox" . lwn.net . Consultado el 21 de noviembre de 2015 .
Dado que BusyBox se puede encontrar en tantos sistemas embebidos, se encuentra en el centro del debate anti-DRM de GPLv3 . [...] Los resultados reales, sin embargo, son los siguientes: BusyBox será GPLv2 solo a partir de la próxima versión. En general, se acepta que eliminar "o cualquier versión posterior" es legalmente defendible, y que la combinación de otro código exclusivo de GPLv2 forzará ese problema en cualquier caso.
- ^ Landley, Rob (9 de septiembre de 2006). "Re: Move GPLv2 vs v3 fun…" . lwn.net . Consultado el 21 de noviembre de 2015 .
No inventes un argumento de hombre de paja, por favor. Considero que la licencia de BusyBox bajo GPLv3 es inútil, innecesaria, complicada y confusa, y además tiene desventajas reales. 1) Inútil: nunca vamos a eliminar la GPLv2.
- ^ GPL versión 2 solo para BusyBox 1.3.0. en lwn.net
- ^ Landley, Robert (30 de septiembre de 2006). "Voy a salir ahora. Puede que sea un tiempo" . busybox (lista de correo).
- ^ a b En nombre de los desarrolladores de BusyBox Andersen y Landley, SFLC presenta la primera demanda por infracción de GPL de EE. UU. (Software Freedom Law Center, 20 de septiembre de 2007)
- ^ Byfield, Bruce (30 de octubre de 2007). "Acuerdo alcanzado en el caso Busybox-Monsoon GPL" . Linux.com . Archivado desde el original el 24 de septiembre de 2008.
- ^ El equipo legal de Linux demanda por violaciones de GPL (Martin LaMonica, CNET News.com, 21 de noviembre de 2007)
- ^ "Segunda ronda de demandas por infracción de GPL presentadas en nombre de los desarrolladores de BusyBox" .
- ^ "BusyBox Developers y Xterasys Corporation acuerdan resolver la demanda de GPL" .
- ^ Los desarrolladores de BusyBox y las antenas de alta ganancia acuerdan desestimar la demanda de GPL (comunicado de prensa de SFLC)
- ^ Gross, Grant (7 de diciembre de 2007). "Grupo legal de código abierto ataca de nuevo en BusyBox, demandando a Verizon" . Computerworld .
- ^ "Los desarrolladores de BusyBox presentan una demanda por infracción de GPL contra Verizon Communications" .
- ^ Verizon resuelve demanda de software de código abierto (Paul McDougell, InformationWeek , 17 de marzo de 2008)
- ^ SFLC presenta otra ronda de demandas por infracción de GPL en nombre de los desarrolladores de BusyBox (comunicado de prensa de SFLC)
- ^ Los desarrolladores de BusyBox y Supermicro acuerdan poner fin a la demanda de GPL: las discusiones de buena fe dan como resultado la desestimación del caso de infracción de derechos de autor (comunicado de prensa de SFLC)
- ^ 2008. Andersen v. Bell Microproducts, Inc. , No. 08-cv-5270, Doc. No. 16 (SDNY 17 de octubre de 2008) (aviso de despido voluntario)
- ^ Perlow, Jason (16 de diciembre de 2009). "Cómo evitar las flagelaciones públicas modernas de la GPL" . zdnet.com . Consultado el 24 de marzo de 2016 .
Las flagelaciones y ejecuciones públicas como la reciente demanda de SFLC podrían evitarse si existieran realmente los estándares y procedimientos para el cumplimiento de la GPL y otras licencias de código abierto y gratuito.
- ^ Best Buy, Samsung, Westinghouse, 11 más nombrados en la demanda de GPL en cnet.com
- ^ The Software Freedom Conservancy, Inc. y Sr. Erik Andersen vs BestBuy, Samung, Westinghouse, JVC, Western Digital, Bosch, Phoebe Micro, Humax, ... (Nueva York, 2009)
- ^ Visual Display - Código abierto en samsung.com "Descargue los enlaces a continuación. Usamos GPLv2 y LGPLv2.1, no GPLv3 y LGPLv3. Modelo: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip" (archivado en 2010)
- ^ Main_Page en samygo.tv
- ^ Jones, Pamela (3 de agosto de 2010). "BusyBox y la GPL prevalecen de nuevo - 4X actualizado" . Groklaw . Consultado el 27 de septiembre de 2012 .
- ^ Bruce Perens, " Declaración sobre demandas de Busybox ", perens.com (15 de diciembre de 2009).
- ^ "variantes de ceniza" . Archivado desde el original el 10 de marzo de 2010 . Consultado el 15 de mayo de 2008 .
- ^ "Utilice la nueva opción 'seleccionar' para hacer la configuración de shell" . 8 de agosto de 2003 . Consultado el 2 de abril de 2019 .
El caparazón 'ash' agrega alrededor de 60k en la configuración predeterminada y es el caparazón más completo y más pedantemicamente correcto incluido con busybox. Este shell es en realidad un derivado del shell 'dash' de Debian (por Herbert Xu), que fue creado portando el shell 'ash' (escrito por Kenneth Almquist) desde NetBSD.
- ^ BusyBox - La navaja suiza de Linux embebido
- ^ "BusyBox simplifica los sistemas Linux embebidos: un pequeño juego de herramientas para entornos pequeños" . IBM . Archivado desde el original el 9 de diciembre de 2008.
- ^ - Manual de comandos generales de FreeBSD
- ^ Thayer, Doug; Miller, Keith (16 a 17 de abril de 2004). "Cuatro programas UNIX en cuatro colecciones UNIX: buscando coherencia en un icono de código abierto" (PDF) . Actas del Simposio de Instrucción y Computación del Medio Oeste . Universidad de Minnesota, Morris.
- ^ "Ayuda del comando BusyBox" . Consultado el 24 de febrero de 2013 .
- ^ "Linux en el camino" .
- ^ Landley, Rob. "Confirmación de cambio de licencia" . Repositorio mercurial de Toybox . Consultado el 24 de julio de 2015 .
- ^ http://landley.net/toybox/
- ^ "Proyecto de sustitución de Busybox" . 11 de enero de 2012 . Consultado el 4 de marzo de 2014 .
- ^ "Garrett: la lucha continua contra la aplicación de la GPL" . LWN.net . 31 de enero de 2012 . Consultado el 4 de marzo de 2014 .
El verdadero problema aquí es que la dependencia de [Software Freedom Conservancy] en Busybox significa que solo pueden apuntar a los infractores que usan ese código Busybox. Hasta ahora, ningún propietario importante de derechos de autor del kernel se ha ofrecido a permitir que la SFC haga cumplir sus derechos de autor, con el resultado de que la acción de aplicación se detendrá a medida que los proveedores pasen a este reemplazo de Busybox.
- ^ "Garrett: la lucha continua contra la aplicación de la GPL" . LWN.net . 31 de enero de 2012 . Consultado el 4 de marzo de 2014 .
> Como ex-mantenedor de busybox que INICIÓ esas demandas en primer lugar y ahora se arrepiente enormemente de haberlo hecho, creo que tengo derecho a detener las demandas en la forma que me parezca conveniente. Nunca resultaron en una sola línea de código agregada al repositorio de busybox. Han dado como resultado que más de una empresa abandone el desarrollo de Linux por completo y se cambie a sistemas operativos que no sean Linux para sus productos integrados, y son una gran parte de la razón detrás de la política de Android "No GPL en el espacio de usuario".
- ^ Proffitt, Brian (2 de febrero de 2012). "La aplicación de la GPL enciende las llamas de la comunidad - ¿Tirar al bebé de la GPL con el agua del baño de la aplicación?" . ITworld . Consultado el 4 de marzo de 2015 .
Otras lecturas
- Perens, Bruce (1 de noviembre de 2000). "Construyendo pequeños sistemas Linux con BusyBox — Parte I" . Diario de Linux . Archivado desde el original el 22 de noviembre de 2015 . Consultado el 22 de noviembre de 2015 .
- Jones, M. Tim (15 de agosto de 2006). "Busybox simplifica los sistemas Linux embebidos" . Trabajos de desarrollador . IBM.
enlaces externos
- Página web oficial