BusyBox est une collection d’utilitaires Unix de base conditionnés en un seul binaire. Cela le rend idéal pour les environnements à ressources limitées tels que les appareils embarqués. La distribution complète contient près de 400 des commandes les plus courantes.
BusyBox est open-source et sous licence GPL. Il a été créé en 1995 dans le but de faire tenir un système amorçable sur une seule disquette. Le regroupement de commandes dans un seul binaire réduit les frais généraux et permet le partage de code entre des applications apparemment indépendantes.
Que comprend BusyBox ?
BusyBox fournit les commandes de commodité quotidiennes qui donnent souvent l’impression de faire partie de votre shell. Bien que les outils de l’espace utilisateur comme ls
et cat
sont omniprésents, ils résident en fait dans un package utilitaire séparé, indépendant de votre shell. De nombreuses distributions Linux fournissent ces commandes via GNU coreutils
mais d’autres expédient à la place BusyBox.
Le projet fonctionne en liant symboliquement des noms de commandes familiers dans /usr/bin
au binaire BusyBox. Cet exécutable invoque alors la fonction correspondant au nom passé en premier argument.
- Avec BusyBox la commande
mkdir
s’exécute/usr/bin/busybox mkdir
- Avec GNU Coreutils – la commande
mkdir
s’exécute/usr/bin/mkdir
.
Vous pouvez utiliser de manière transparente des commandes telles que mkdir
, passwd
, ps
, tar
, et wget
une fois BusyBox installé. Les commandes sont implémentées sous forme d’« applets » qui sont combinées dans une distribution BusyBox fonctionnelle. L’ensemble complet pèse environ 1 Mo. Les applets sont amovibles, ce qui permet de réduire encore plus la taille binaire. Vous pouvez vérifier ce qui est disponible dans votre installation en exécutant busybox
sans argument.
Comme BusyBox a été créé pour alimenter de minuscules systèmes amorçables, il couvre tout ce dont l’utilisateur a besoin pour démarrer et administrer un système POSIX. Cela s’étend à un minimum init
implémentation capable de s’exécuter en tant qu’ID de processus 1
et les services système de soutien. Vous pouvez adopter BusyBox comme alternative légère à un init
ou systemd
démon.
Comme BusyBox est intentionnellement minimal, toutes les commandes n’implémentent pas toutes les fonctionnalités de son homologue GNU. Vous pourriez trouver des indicateurs manquants ou des différences de comportement dans des situations peu courantes. C’est l’un des compromis de la nature rationalisée de BusyBox.
Où est utilisé BusyBox ?
BusyBox peut être trouvé partout où l’utilisation du disque est un problème. Il est utilisé par des systèmes d’exploitation minimaux tels qu’Alpine ainsi que par des scénarios spécialisés tels que des appareils intégrés et des shells mobiles.
Il y a de fortes chances qu’un périphérique dérivé d’Unix qui n’exécute pas une distribution de système d’exploitation conventionnelle utilise BusyBox. Vous le trouverez sur votre routeur réseau, votre téléviseur intelligent, votre voiture moderne et vos appareils IoT. Chacun de ces paramètres se caractérise par la nécessité d’exécuter des outils de base de l’espace utilisateur dans un environnement fortement limité en ressources.
L’expédition d’un seul binaire tout-en-un est plus efficace. Il réduit la redondance en permettant à toutes les commandes de partager un code commun sans stocker de bibliothèques autonomes sur disque. Comme BusyBox offre une bonne compatibilité avec d’autres implémentations et est sous licence GPL, c’est généralement l’option de prédilection pour les environnements nécessitant un ensemble léger d’utilitaires.
Les fournisseurs d’appareils embarqués bénéficient également de la nature modulaire de BusyBox. Un produit IoT peut n’avoir besoin que d’une poignée d’utilitaires critiques pour fournir ses fonctionnalités. La distribution d’un binaire BusyBox modifié libère quelques Ko supplémentaires d’espace disque, ce qui peut représenter une économie importante.
Comment essayer BusyBox
Vous pouvez installer BusyBox sans remplacer vos utilitaires actuels. Utilisez votre gestionnaire de paquets pour ajouter busybox
, puis ajoutez la commande que vous avez choisie au busybox
binaire pour exécuter une applet :
busybox mkdir test
Cela garantit que la version BusyBox de la commande sera utilisée à la place de la version dans le chemin par défaut de votre shell.
Une autre façon d’essayer BusyBox est via son image Docker officielle :
docker run -it --rm busybox
Si Docker est installé, cela vous placera dans l’implémentation du shell de BusyBox. Vous pouvez exécuter une commande spécifique en l’ajoutant après le nom de l’image :
docker run -it --rm busybox mkdir demo
BusyBox dispose également d’un émulateur JavaScript qui vous permet d’essayer les utilitaires de votre navigateur Web.
Sur la plupart des distributions Linux, vous ne pouvez pas remplacer complètement coreutils
avec BusyBox. Les commandes et packages spécifiques à la distribution sont souvent câblés pour s’attendre à ce que le coreutils
les utilitaires soient disponibles. Votre distribution refusera généralement de désinstaller ce paquet car cela pourrait rendre le système inopérant si init
est retiré.
Si vous souhaitez vous fier à BusyBox, il est préférable de commencer par une distribution qui l’utilise, puis de superposer vos autres logiciels. Ajout de BusyBox à côté coreutils
comme indiqué ci-dessus fonctionne bien lorsque vous devez vérifier comment une applet réagira dans un scénario particulier.
Conclusion
BusyBox est une implémentation légère des utilitaires UNIX de l’utilisateur qui est conditionnée en un seul binaire. Vous pouvez le combiner avec un noyau Linux pour créer un système fonctionnel sans autres dépendances.
BusyBox est optimisé pour les environnements à espace restreint. Cela le rend idéal pour les produits embarqués tels que les appareils IoT. Vous pouvez également trouver BusyBox installé sur des distributions Linux minimales mais générales telles que Alpine Linux.
Que vous utilisiez BusyBox ou GNU Coreutils, vos commandes familières fonctionneront généralement avec l’une ou l’autre implémentation. Tous les problèmes qui surviennent seront généralement dus au fait que BusyBox n’implémente pas un certain drapeau ou option de configuration rare.