GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar BusyBox en Linux

Es fácil dar por sentado los comandos de Linux. Vienen incluidos con el sistema cuando instalas Linux y, a menudo, no nos preguntamos por qué están ahí. Algunos de los comandos básicos, como cd , kill y echo no siempre son aplicaciones independientes, sino que en realidad están integradas en su shell. Otros, como ls , mv y cat son parte de un paquete de utilidad central (a menudo GNU coreutils específicamente). Pero siempre hay alternativas en el mundo del código abierto, y una de las más interesantes es BusyBox.

¿Qué es BusyBox en Linux?

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

BusyBox es un proyecto de código abierto (GPL) que proporciona implementaciones simples de casi 400 comandos comunes, incluido ls , mv , ln , mkdir , more , ps , gzip , bzip2 , tar y grep . También contiene una versión del lenguaje de programación awk , el editor de secuencias sed , el verificador del sistema de archivos fsck , las rpm y dpkg administradores de paquetes y, por supuesto, un shell (sh ) que proporciona fácil acceso a todos estos comandos. En resumen, contiene todos los comandos esenciales necesarios para que un sistema POSIX realice tareas comunes de mantenimiento del sistema, así como muchas tareas administrativas y de usuario.

De hecho, incluso contiene un init comando que se puede iniciar como PID 1 para servir como proceso principal para todos los demás servicios del sistema. En otras palabras, BusyBox se puede utilizar como alternativa a systemd, OpenRC, sinit, init y otros demonios de lanzamiento.

BusyBox es muy pequeño. Como ejecutable, tiene menos de 1 MB, por lo que ha ganado gran parte de su popularidad en el espacio integrado, Edge e IoT, donde el espacio en disco es escaso. En el mundo de los contenedores y la computación en la nube, también es popular como base para imágenes mínimas de contenedores de Linux.

Minimalismo

Parte del atractivo de BusyBox es su minimalismo. Todos sus comandos se compilan en un solo binario (busybox ), y su página de manual tiene solo 81 páginas (según mi cálculo de piping man a pr ) pero cubre casi 400 comandos.

Como ejemplo de comparación, aquí está el resultado de shadow versión de useradd --help :

 -b, --base-dir BASE_DIR       base directory for home
 -c, --comment COMMENT         GECOS field of the new account
 -d, --home-dir HOME_DIR       home directory of the new account
 -D, --defaults                print or change the default config
 -e, --expiredate EXPIRE_DATE  expiration date of the new account
 -f, --inactive INACTIVE       password inactivity
 -g, --gid GROUP               name or ID of the primary group
 -G, --groups GROUPS           list of supplementary groups
 -h, --help                    display this help message and exit
 -k, --skel SKEL_DIR           alternative skeleton dir
 -K, --key KEY=VALUE           override /etc/login.defs
 -l, --no-log-init             do not add the user to the lastlog
 -m, --create-home             create the user's home directory
 -M, --no-create-home          do not create the user's home directory
 -N, --no-user-group           do not create a group with the user's name
 -o, --non-unique              allow users with non-unique UIDs
 -p, --password PASSWORD       encrypted password of the new account
 -r, --system                  create a system account
 -R, --root CHROOT_DIR         directory to chroot into
 -s, --shell SHELL             login shell of the new account
 -u, --uid UID                 user ID of the new account
 -U, --user-group              create a group with the same name as a user

Y aquí está la versión BusyBox del mismo comando:

 -h DIR    Home directory
 -g GECOS  GECOS field
 -s SHELL  Login shell
 -G GRP    Group
 -S            Create a system user
 -D            Don't assign a password
 -H            Don't create home directory
 -u UID    User id
 -k SKEL   Skeleton directory (/etc/skel)

Si esta diferencia es o no una característica o una limitación depende de si prefiere tener 20 opciones o diez opciones en sus comandos. Para algunos usuarios y casos de uso, el minimalismo de BusyBox proporciona lo suficiente para lo que se necesita hacer. Para otros, es un buen entorno mínimo como respaldo o como base para instalar herramientas más sólidas como Bash, Zsh, GNU Awk, etc.

Instalación de BusyBox

En Linux, puede instalar BusyBox usando su administrador de paquetes. Por ejemplo, en Fedora y similares:

$ sudo dnf install busybox

En Debian y derivados:

$ sudo apt install busybox

En macOS, use MacPorts o Homebrew. En Windows, usa Chocolatey.

Puede configurar BusyBox como su shell usando chsh --shell comando, seguido de la ruta a BusyBox sh solicitud. Mantengo BusyBox en /lib64 , pero su ubicación depende de dónde lo instaló su distribución.

$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh

Reemplazar todos los comandos comunes al por mayor con BusyBox es un poco más complejo, porque la mayoría de las distribuciones están "programadas" para buscar paquetes específicos para comandos específicos. En otras palabras, aunque es técnicamente posible reemplazar init con init de BusyBox , su administrador de paquetes puede negarse a permitirle eliminar el paquete que contiene init por temor a que provoque que su sistema deje de ser arrancable. Hay algunas distribuciones basadas en BusyBox, por lo que comenzar de nuevo es probablemente la forma más fácil de experimentar un sistema basado en BusyBox.

Prueba BusyBox

No tienes que cambiar tu shell a BusyBox permanentemente solo para probarlo. Puede iniciar un shell BusyBox desde su shell actual:

$ busybox sh
~ $

Sin embargo, su sistema todavía tiene instaladas las versiones de comandos que no son de BusyBox, por lo que para experimentar las herramientas de BusyBox, debe emitir comandos como argumentos para busybox ejecutable:

~ $ busybox echo $0
sh
~ $ busybox ls --help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.

Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...

List directory contents

 -1  One column output
 -a  Include entries that start with .
 -A  Like -a, but exclude . and ..
 -x  List by lines
[...]

Para la experiencia "completa" de BusyBox, puede crear enlaces simbólicos a busybox para cada comando. Esto es más fácil de lo que parece, siempre que use un ciclo for:

$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done

Agregue su directorio de enlaces simbólicos al inicio de su ruta y ejecute BusyBox:

$ PATH=$(pwd)/bbx:$PATH bbx/sh

Ocúpate

BusyBox es un proyecto divertido y un ejemplo de cuán mínimo la computación puede ser. Ya sea que use BusyBox como un entorno liviano para una computadora antigua que rescató, como espacio de usuario para un dispositivo integrado, para probar un nuevo sistema de inicio o simplemente como una curiosidad, puede ser divertido volver a familiarizarse con el viejo familiar, pero de alguna manera nuevo, comandos.


Linux
  1. Cómo uso cron en Linux

  2. Cómo usar BUSCAR en Linux

  3. Cómo usar Descomprimir en Linux

  4. Cómo usar el comando Su en Linux

  5. Cómo usar Google Drive en Linux

Cómo usar la terminal de Linux en Android

Cómo usar el comando sysctl en Linux

Cómo usar el comando de apagado de Linux

Cómo usar grep en Linux

¿Qué es BusyBox en Linux? ¿Cómo usarlo?

¿Cómo usar gzip en Linux?