Busybox

De Wikipedia, la enciclopedia libre

BusyBox es un software suite que proporciona varias utilidades Unix en un solo archivo ejecutable. Se ejecuta en una variedad de entornos POSIX como Linux (Android)[1]​ y FreeBSD,[2]​ aunque muchas de las herramientas que proporciona están diseñadas para funcionar con interfaces proporcionadas por el kernel de Linux. Fue creado específicamente para sistemas operativos integrados con recursos muy limitados. Los autores lo denominaron "La navaja suiza de Linux embebido",[3]​ ya que el único ejecutable reemplaza las funciones básicas de más de 300 comandos comunes. Ha sido lanzado como software libre bajo los términos de la Licencia Pública General de GNU en su versión 2.[4]

Busybox
Parte de Software Freedom Conservancy
Información general
Tipo de programa Utilidades de sistema operativo
Desarrollador Bruce Perens
Lanzamiento inicial 4 de noviembre de 1999
Licencia GNU GPL
Información técnica
Programado en C
Plataformas admitidas Unix-like
Versiones
Última versión estable 1.36.119 de mayo de 2023
Enlaces

Historia[editar]

Orígenes[editar]

En un principio escrito por Bruce Perens en 1995 y listo para ser usado en 1996,[5]​ BusyBox originalmente tenía como objetivo poner un sistema de arranque completo en un solo disquete que sirviera tanto como un disco de rescate como un instalador para la distribución Debian. Desde entonces, se ha ampliado para convertirse en el conjunto de herramientas estándar de facto de espacio de usuario para dispositivos Linux integrados e instaladores de distribución de Linux. Dado que cada ejecutable de Linux requiere varios kilobytes de sobrecarga, hace que el programa BusyBox combine más de doscientos programas juntos para ahorrar espacio en disco y memoria del sistema.

Enrique Zanardi mantuvo BusyBox y se centró en las necesidades del sistema instalador de disquetes de arranque de Debian hasta principios de 1998, cuando Dave Cinege lo asumió para el Proyecto Router Linux (LRP). Cinege hizo varios aportes, creó un entorno de construcción modular y cambió el enfoque de BusyBox hacia 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 responsable 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 fue el responsable desde 2005 hasta finales de 2006, luego Denys Vlasenko asumió el cargo responsable actual.

Controversias GPLv2/GPLv3[editar]

En septiembre de 2006, después de intensas discusiones y controversias entre el responsable del proyecto Rob Landley y Bruce Perens,[6]​ el proyecto BusyBox[7][8]​ decidió no adoptar la Licencia Pública GNU Versión 3 (GPLv3); la licencia de BusyBox se aclaró como GPL Versión 2 (GPLv2) solamente.[9]

A partir de octubre de 2006, Denys Vlasenko se hizo cargo del mantenimiento de BusyBox de Rob Landley, quien comenzó Toybox, también como resultado de las controversias sobre la licencia.[10][7]

Demandas de GPL[editar]

A finales de 2007, BusyBox también se destacó por denunciar activamente las violaciones de los términos de su licencia (GPL) en el Tribunal de Distrito de los Estados Unidos para el Distrito Sur de Nueva York.[11]

Fue la primera demanda de los Estados Unidos por una violación de la GPL, se refería al uso de BusyBox en un dispositivo integrado. La demanda,[11]​ caso 07-CV-8205 en el Tribunal de Distrito de los Estados Unidos para el Distrito Sur de Nueva York 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 descubrió el código de BusyBox en una actualización de firmware y los intentos de contactar a la compañía aparentemente fracasaron. El caso se resolvió con el lanzamiento de la versión del código fuente de Monsoon y el pago de una cantidad no revelada de dinero a Andersen y Landley.

El 21 de noviembre de 2007, el SFLC presentó dos demandas similares en nombre de Andersen y Landley contra dos compañías más, Xterasys (caso 07-CV-10455) y High-Gain Antennas (caso 07-CV-10456).[12]​ El caso Xterasys se resolvió el 17 de diciembre por la liberación del código fuente utilizado y un pago no revelado,[13]​ y el caso de High-Gain Antennas el 6 de marzo de 2008 por cumplimiento activo de la licencia y un pago no revelado.[14]​ El 7 de diciembre de 2007, se presentó un caso contra Verizon Communications por su distribución de firmware para Actiontec routers;[15]​ este caso se resolvió el 17 de marzo de 2008 con la condición del cumplimiento de la licencia, el nombramiento de un oficial para supervisar el cumplimiento futuro con licencias de software libre y el pago de una suma no revelada. El 9 de junio de 2008 se presentaron nuevas demandas contra Bell Microproducts (caso 08-CV-5270) y Supermicro (caso 08-CV-5269),[16]​ el caso de Super Micro se resolvió el 23 de julio de 2008.[17]​ BusyBox y Bell Microproducts también llegaron a un acuerdo extrajudicial el 17 de octubre.

El 14 de diciembre de 2009, se presentó una nueva demanda en la que se nombraron catorce acusados, incluidos Best Buy, JVC, Samsung y otros.[18][19]​ En febrero de 2010, Samsung lanzó su firmware de TV LN52A650 bajo GPLv2,[20]​ que luego fue utilizado como referencia por el proyecto comunitario SamyGO.[21]

Alrededor del 3 de agosto de 2010, BusyBox ganó de Westinghouse una sentencia por defecto de daños triples de $90.000 y los costos y honorarios de abogados de $47.865, y la 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 GPL mencionado en el párrafo anterior.[22]

Ningún otro desarrollador, incluido el autor original Bruce Perens y el responsable Dave Cinege, estuvieron representados en estas acciones o partes en los acuerdos. El 15 de diciembre de 2009, Perens emitió una declaración expresando 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".[23]

Características[editar]

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 Especificacion Single Unix (SUS) más muchas otras que un usuario esperaría ver en un sistema Linux. BusyBox usa el Almquist shell, también conocido como A Shell, ash and sh.[24][25]

Como es un sistema de arranque completo, reemplazará aún más el init daemon y udev (o el latter-day systemd) usándose para ser llamado como init en el inicio y mdev en el momento del hotplug.

El sitio web de BusyBox proporciona una lista completa de las utilidades implementadas.[26]

Binario único[editar]

Los sistemas informáticos típicos tienen un archivo binario (ejecutable) separado para cada aplicación. BusyBox es un binario único, que es un conglomerado de muchas aplicaciones, a cada una de las cuales se puede acceder llamando al binario único de BusyBox con varios nombres (respaldado por tener un enlace simbólico o un enlace duro para cada nombre diferente)[27]​ en un manera especifica 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 que proporciona el comando crunchgen [28]​ en FreeBSD, la diferencia es que BusyBox proporciona versiones simplificadas de las utilidades (por ejemplo, un comando ls sin capacidad de clasificación de archivos), mientras que crunchgen genera la suma de todos los Las utilidades ofrecerían las versiones totalmente funcionales.

Compartir el código común, junto con las rutinas escritas teniendo en cuenta la optimización del tamaño, puede hacer que un sistema BusyBox use mucho menos espacio de almacenamiento que un sistema construido con las versiones completas correspondientes de las utilidades reemplazadas por BusyBox. La investigación[29]​ que comparó las implementaciones de GNU, BusyBox, Asmutils y Perl de los comandos estándar de Unix demostró que en algunas situaciones BusyBox puede funcionar más rápido que otras implementaciones, pero no siempre.

Comandos[editar]

La documentación oficial de BusyBox enumera una descripción general de los comandos disponibles y sus opciones de línea de comandos.[30]

Ejemplos[editar]

Los programas incluidos en BusyBox se pueden ejecutar simplemente agregando su nombre como argumento al ejecutable de BusyBox:

/bin/busybox ls

Más comúnmente, los nombres de comandos deseados están vinculados (usando enlaces duros o simbólicos) al ejecutable de BusyBox; BusyBox lee argv[0] para encontrar el nombre con el que se llama y ejecuta el comando apropiado, por ejemplo solo

/bin/ls

después de /bin/ls está vinculado a /bin/busybox. Esto funciona porque el primer argumento pasado a un programa es el nombre utilizado para la llamada del 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".

Aplicaciones y recepción[editar]

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. Sharp Zaurus utiliza BusyBox ampliamente para las tareas ordinarias Unix-like realizadas en el shell del sistema.[31]

Es necesario para varias aplicaciones root en Android y también está preinstalado con algunas soluciones "1 Tap Root" como Kingo Root.

Controversias sobre Toybox[editar]

Toybox se inició a principios de 2006 bajo la Licencia Pública General de GNU por el ex contributor de Busybox Rob Landley como resultado de las controversias en torno a las discusiones sobre GPLv3 / GPLv2. A finales de 2011[32]​ se volvió a licenciar bajo la Licencia BSD después de que el proyecto quedó inactivo.[33]​ 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 de GNU. Sugirió que se basara en la inactiva de Toybox.[34]​ En enero de 2012, la propuesta de crear una alternativa con licencia BSD al proyecto BusyBox con licencia GPL generó duras críticas por parte de Matthew Garrett por quitarle la única herramienta relevante para la aplicación de los derechos de autor del grupo Software Freedom Conservancy.[35]​ El titular de las demandas basadas en BusyBox, Rob Landley, respondió que esto fue intencional cuando llegó a la conclusión de que las demandas no dieron lugar a los resultados positivos esperados y quería detenerlos "de la forma que yo considere conveniente".[36][37]

Véase también[editar]

Referencias[editar]

  1. «BusyBox Installer Classic - Apps on Google Play». play.google.com (en inglés). Consultado el 10 de diciembre de 2019. 
  2. portsmon.freebsd.org http://portsmon.freebsd.org/portoverview.py?category=sysutils&portname=busybox |url= sin título (ayuda). Consultado el 10 de diciembre de 2019. 
  3. «BusyBox». www.busybox.net. Consultado el 10 de diciembre de 2019. 
  4. «BusyBox». www.busybox.net. Consultado el 10 de diciembre de 2019. 
  5. «forensics.txt». 
  6. «Statement on Busybox Lawsuits». web.archive.org. 20 de diciembre de 2009. Archivado desde el original el 20 de diciembre de 2009. Consultado el 10 de diciembre de 2019. 
  7. a b «Busy busy busybox [LWN.net]». lwn.net. Consultado el 10 de diciembre de 2019. 
  8. «Re: Move GPLv2 vs v3 fun... [LWN.net]». lwn.net. Consultado el 10 de diciembre de 2019. 
  9. «GPL version 2 only for BusyBox 1.3.0. [LWN.net]». lwn.net. Consultado el 10 de diciembre de 2019. 
  10. «I'm going out now. I may be some time. [LWN.net]». lwn.net. Consultado el 14 de diciembre de 2019. 
  11. a b «On Behalf of BusyBox Developers, SFLC Files First Ever U.S. GPL Violation Lawsuit - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  12. «Second Round of GPL Infringement Lawsuits Filed on Behalf of BusyBox Developers - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  13. «BusyBox Developers and Xterasys Corporation Agree to Settle GPL Lawsuit - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  14. «BusyBox Developers and High-Gain Antennas Agree to Dismiss GPL Lawsuit - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  15. «BusyBox Developers File GPL Infringement Lawsuit Against Verizon Communications - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  16. «SFLC Files Another Round of GPL Violation Lawsuits on Behalf of BusyBox Developers - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  17. «BusyBox Developers and Supermicro Agree to End GPL Lawsuit - Software Freedom Law Center». www.softwarefreedom.org. Consultado el 10 de diciembre de 2019. 
  18. Perlow, Jason. «How to avoid modern day public GPL floggings». ZDNet (en inglés). Consultado el 10 de diciembre de 2019. 
  19. «Software Freedom Conservancy» |url= incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). 29 de septiembre de 2019. Consultado el 10 de diciembre de 2019. 
  20. «SAMSUNG Visual Display - Open Source». web.archive.org. 10 de febrero de 2010. Archivado desde el original el 10 de febrero de 2010. Consultado el 10 de diciembre de 2019. 
  21. «SamyGo». 
  22. «Groklaw - BusyBox and the GPL Prevail Again - Updated 4Xs». www.groklaw.net. Consultado el 14 de diciembre de 2019. 
  23. «Statement on Busybox Lawsuits». web.archive.org. 15 de mayo de 2011. Archivado desde el original el 15 de mayo de 2011. Consultado el 10 de diciembre de 2019. 
  24. «busybox - BusyBox: The Swiss Army Knife of Embedded Linux». git.busybox.net. Consultado el 10 de diciembre de 2019. 
  25. «ash variants». www.in-ulm.de. Consultado el 10 de diciembre de 2019. 
  26. «BusyBox - The Swiss Army Knife of Embedded Linux». www.busybox.net. Consultado el 10 de diciembre de 2019. 
  27. «BusyBox simplifies embedded Linux systems». web.archive.org. 9 de diciembre de 2008. Archivado desde el original el 9 de diciembre de 2008. Consultado el 10 de diciembre de 2019. 
  28. «crunchgen». www.freebsd.org. Consultado el 10 de diciembre de 2019. 
  29. http://www.micsymposium.org/mics_2004/ThayerMiller.pdf
  30. «BusyBox - The Swiss Army Knife of Embedded Linux». www.busybox.net. Consultado el 10 de diciembre de 2019. 
  31. «Linux on the Road». tldp.org. Consultado el 10 de diciembre de 2019. 
  32. «toybox: f3a00ece7966». landley.net. Consultado el 10 de diciembre de 2019. 
  33. «toybox news». landley.net. Consultado el 10 de diciembre de 2019. 
  34. «Busybox replacement project - eLinux.org». www.elinux.org. Consultado el 10 de diciembre de 2019. 
  35. «Garrett: The ongoing fight against GPL enforcement [LWN.net]». lwn.net. Consultado el 10 de diciembre de 2019. 
  36. «Garrett: The ongoing fight against GPL enforcement [LWN.net]». lwn.net. Consultado el 10 de diciembre de 2019. 
  37. Proffitt, Brian (2 de febrero de 2012). «GPL enforcement sparks community flames». ITworld (en inglés). Consultado el 10 de diciembre de 2019. 

Enlaces externos[editar]