BusyBox est de plus en plus populaire ces derniers temps, en particulier parmi les utilisateurs de Docker. De nombreuses images Docker utilisent BusyBox pour vous fournir une image plus légère.

Cela peut laisser beaucoup d'utilisateurs perplexes, surtout si vous considérez les commandes Linux comme allant de soi. Vous pensez que ls, mv et d'autres commandes de ce type font partie de Linux, alors que la vérité est que ces commandes font partie du paquetage Coreutils et que la plupart des distributions Linux l'ont préinstallé.

GNU core utilities est presque le fournisseur officiel de diverses commandes UNIX/Linux. Presque parce qu'il y a toujours des alternatives et BusyBox est l'une de ces alternatives à Coreutils.

Qu'est-ce que BusyBox ?

BusyBox est un projet open source qui fournit une implémentation simplifiée d'environ 400 commandes UNIX/Linux courantes. Pourquoi simplifiée ? Car l'implémentation de BusyBox supprime les options de commande peu communes et rarement utilisées. Tout tient en moins de 1 Mo et cette image légère est la raison pour laquelle il a gagné en popularité parmi les systèmes embarqués et le domaine de l'IoT, ainsi que dans le monde du cloud computing.

Ne vous fiez pas à sa taille. BusyBox dispose d'un espace pour sed et awk comme les éditeurs classiques (version réduite encore une fois) et il contient également son propre shell. Il contient même une commande init qui peut être lancée en tant que PID 1. Cela signifie que BusyBox peut être configuré comme une alternative à Systemd, OpenRC, etc.

BusyBox est une superbe alternative à GNU core utilities, en particulier dans les cas où la petite taille du système d'exploitation est importante. Certaines distributions connues pour leur petite taille l'intègre directement, comme la solution Alpine Linux par exemple.

BusyBox propose des commandes Linux courantes telles que mv, mkdir, ls, etc. mais ne contient que les options les plus couramment utilisées pour ces commandes.

Ce minimalisme est le point fort de BusyBox.

Busybox

Est-ce un problème de ne pas avoir toutes les options des commandes Linux avec BusyBox ?

Cela dépend de vos besoins. La plupart des gens n'auront jamais besoin de toutes les options d'une commande. Certaines commandes Linux ont plus de 50 options et je parie que vous n'avez jamais utilisé toutes les options d'une seule commande Linux.

BusyBox réduit les options rarement utilisées. Par exemple, la commande ls possède l'option G qui supprime le nom du groupe de la liste longue (ls -l).

Je pense que vous n'avez jamais eu besoin de cette option. C'est pourquoi elle n'est pas présente dans l'implémentation ls de BusyBox. Si vous avez vraiment besoin d'une sortie où le nom du groupe n'est pas inclus, tout ce que vous avez à faire est d'utiliser la commande cut ou awk à cette fin.

Prenons un autre exemple. Voici la page d'aide de la commande mv de GNU core utilities :

Liste Options Commande Mv Gnu Coreutils

Voici maintenant la page d'aide de la commande mv de BusyBox :

Liste Options Commande Mv Busybox

Comment installer BusyBox sur Linux ?

Il y a plusieurs façons d'obtenir BusyBox. Si vous voulez simplement expérimenter BusyBox sur votre distribution Linux actuelle, vous pouvez l'installer en utilisant le gestionnaire de paquets de votre distribution comme Apt ou DNF ou Yum. Sur Ubuntu, vous pouvez utiliser cette commande pour installer BusyBox :

sudo apt install busybox

Ensuite, si vous souhaitez exécuter la version BusyBox d'une commande, vous devez ajouter busybox avant celle-ci.

busybox cat sample.txt

Si une commande n'est pas implémentée par BusyBox, elle génère une erreur indiquant que l'applet n'a pas été trouvée.

amj@74:~$ busybox xyz
xyz : applet not found

Comment obtenir BusyBox sur docker ?

Vous pouvez également télécharger l'image Docker de BusyBox et l'utiliser dans un conteneur en cours d'exécution. Assurez-vous d'avoir installé Docker. Téléchargez l'image Docker officielle :

docker pull busybox

Lancez un conteneur à partir de l'image et entrez dans le shell BusyBox :

docker run -it --rm busybox

Toutes les commandes Linux que vous exécutez ici proviennent de BusyBox. Vous n'avez pas besoin de le spécifier explicitement.

Que retenir de l'utilité de BusyBox ?

Dans l'ensemble, vous n'avez pas besoin de BusyBox sur un système Linux normal. Vous disposez déjà de la version complète des commandes Linux de Coreutils. Il n'est pas nécessaire d'installer une version réduite.

Mais BusyBox a son utilité dans des domaines particuliers, par exemple lorsque vous configurez un système d'exploitation Linux minimal pour un appareil embarqué ou IoT. Il en va de même lorsque vous souhaitez réduire la taille de votre image Docker.

FAQ : BusyBox

🔧 BusyBox remplace-t-il complètement GNU Core Utilities ?

BusyBox fournit les fonctionnalités essentielles des commandes Linux mais avec moins d'options. C'est suffisant pour la plupart des usages, surtout dans les environnements contraints en espace.

🐳 Pourquoi utiliser BusyBox avec Docker ?

BusyBox permet de créer des images Docker ultra-légères (moins de 1 Mo) tout en conservant les commandes Linux essentielles, idéal pour les microservices et conteneurs minimalistes.

💻 AMJ74 peut-il m'aider avec l'optimisation de conteneurs ?

Oui, nous accompagnons les entreprises dans l'optimisation de leurs images Docker et la conteneurisation avec des solutions légères comme BusyBox.