GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser BusyBox sous Linux

Il est facile de prendre les commandes Linux pour acquises. Ils sont fournis avec le système lorsque vous installez Linux, et nous ne nous demandons souvent pas pourquoi ils sont là. Certaines des commandes de base, telles que cd , kill , et echo ne sont pas toujours des applications indépendantes mais sont en fait intégrées à votre shell. D'autres, comme ls , mv , et cat font partie d'un package d'utilitaires de base (souvent GNU coreutils Plus précisément). Mais il existe toujours des alternatives dans le monde de l'open source, et l'une des plus intéressantes est BusyBox.

Qu'est-ce que BusyBox sous Linux ?

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

BusyBox est un projet open source (GPL) fournissant des implémentations simples de près de 400 commandes courantes, y compris ls , mv , ln , mkdir , more , ps , gzip , bzip2 , tar , et grep . Il contient également une version du langage de programmation awk , l'éditeur de flux sed , le vérificateur de système de fichiers fsck , le rpm et dpkg gestionnaires de paquets, et bien sûr, un shell (sh ) qui permet d'accéder facilement à toutes ces commandes. En bref, il contient toutes les commandes essentielles requises par un système POSIX pour effectuer des tâches courantes de maintenance du système ainsi que de nombreuses tâches utilisateur et administratives.

En fait, il contient même un init commande qui peut être lancée en tant que PID 1 pour servir de processus parent pour tous les autres services système. En d'autres termes, BusyBox peut être utilisé comme une alternative à systemd, OpenRC, sinit, init et autres démons de lancement.

BusyBox est très petit. En tant qu'exécutable, il pèse moins de 1 Mo, il a donc acquis une grande partie de sa popularité dans l'espace embarqué, Edge et IoT, où l'espace disque est limité. Dans le monde des conteneurs et du cloud computing, il est également populaire comme base pour des images de conteneur Linux minimales.

Minimalisme

Une partie de l'attrait de BusyBox est son minimalisme. Toutes ses commandes sont compilées en un seul binaire (busybox ), et sa page de manuel ne fait que 81 pages (d'après mes calculs de tuyauterie man à pr ) mais couvre près de 400 commandes.

À titre d'exemple de comparaison, voici la sortie du shadow version 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

Et voici la version BusyBox de la même commande :

 -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)

Que cette différence soit ou non une fonctionnalité ou une limitation dépend de si vous préférez avoir 20 options ou dix options dans vos commandes. Pour certains utilisateurs et cas d'utilisation, le minimalisme de BusyBox fournit juste assez pour ce qui doit être fait. Pour d'autres, c'est un bon environnement minimal à avoir comme solution de repli ou comme base pour installer des outils plus robustes comme Bash, Zsh, GNU Awk, etc.

Installer BusyBox

Sous Linux, vous pouvez installer BusyBox à l'aide de votre gestionnaire de packages. Par exemple, sur Fedora et similaire :

$ sudo dnf install busybox

Sur Debian et dérivés :

$ sudo apt install busybox

Sur macOS, utilisez MacPorts ou Homebrew. Sous Windows, utilisez Chocolatey.

Vous pouvez définir BusyBox comme votre shell en utilisant le chsh --shell commande, suivi du chemin vers la BusyBox sh application. Je garde BusyBox dans /lib64 , mais son emplacement dépend de l'endroit où votre distribution l'a installé.

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

Remplacer toutes les commandes courantes en gros par BusyBox est un peu plus complexe, car la plupart des distributions sont "câblées" pour rechercher des packages spécifiques pour des commandes spécifiques. En d'autres termes, alors qu'il est techniquement possible de remplacer init avec init de BusyBox , votre gestionnaire de paquets peut refuser de vous permettre de supprimer le paquet contenant init de peur que vous rendiez votre système non amorçable. Certaines distributions sont basées sur BusyBox, donc recommencer à neuf est probablement le moyen le plus simple de découvrir un système construit autour de BusyBox.

Essayez BusyBox

Vous n'avez pas besoin de changer votre shell en BusyBox de façon permanente juste pour l'essayer. Vous pouvez lancer un shell BusyBox depuis votre shell actuel :

$ busybox sh
~ $

Votre système a toujours les versions non-BusyBox des commandes installées, cependant, pour expérimenter les outils de BusyBox, vous devez émettre des commandes en tant qu'arguments de la busybox exécutable :

~ $ 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
[...]

Pour l'expérience "complète" de BusyBox, vous pouvez créer des liens symboliques vers busybox pour chaque commande. C'est plus facile qu'il n'y paraît, tant que vous utilisez une boucle for :

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

Ajoutez votre répertoire de liens symboliques au début de votre chemin, et lancez BusyBox :

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

Occupez-vous

BusyBox est un projet amusant et un exemple de la façon dont minimal l'informatique peut être. Que vous utilisiez BusyBox comme environnement léger pour un ancien ordinateur que vous avez sauvé, comme espace utilisateur pour un appareil intégré, pour tester un nouveau système d'initialisation ou simplement comme curiosité, il peut être amusant de vous redécouvrir avec un ancien familier, mais d'une manière ou d'une autre nouveau, commandes.


Linux
  1. Comment j'utilise cron sous Linux

  2. Comment utiliser FIND sous Linux

  3. Comment utiliser Décompresser sous Linux

  4. Comment utiliser la commande Su sous Linux

  5. Comment utiliser Google Drive sous Linux

Comment utiliser le terminal Linux dans Android

Comment utiliser la commande sysctl sous Linux

Comment utiliser la commande d'arrêt de Linux

Comment utiliser grep sous Linux

Qu'est-ce que BusyBox sous Linux ? Comment l'utiliser?

Comment utiliser gzip sous Linux ?