Che cos’è BusyBox e dove viene utilizzato? Cosa c’è di nuovo in Kubernetes v1.23? Cosa sono i controller e gli operatori Kubernetes? Come utilizzare una GPU NVIDIA con i contenitori Docker Come eseguire un server DHCP di rete locale con Dnsmasq Come utilizzare lsusb in Linux (con un esempio pratico) Come utilizzare Docker per provare in sicurezza il software

Illustrazione grafica di un laptop che mostra un terminale sullo schermo
fatmawati achmad zaenuri/Shutterstock.com

BusyBox è una raccolta di utility Unix di base impacchettate come un singolo binario. Ciò lo rende ideale per ambienti con risorse limitate come i dispositivi incorporati. La distribuzione completa ha quasi 400 dei comandi più comuni.

BusyBox è open-source e concesso in licenza con GPL. È stato creato nel 1995 con l’intenzione di adattare un sistema avviabile a un singolo floppy. Raggruppare i comandi in un unico binario riduce i costi generali e consente la condivisione del codice tra applicazioni apparentemente indipendenti.

Cosa include BusyBox?

BusyBox fornisce i comandi pratici quotidiani che spesso sembrano parte della tua shell. Sebbene gli strumenti dell’area utente come ls e cat sono onnipresenti, in realtà risiedono in un pacchetto di utilità separato indipendente dalla shell. Molte distribuzioni Linux forniscono questi comandi tramite GNU coreutils ma altri spediscono invece BusyBox.

Il progetto funziona collegando simbolicamente i nomi di comandi familiari in /usr/bin al binario BusyBox. Questo eseguibile invoca quindi la funzione corrispondente al nome passato come primo argomento.

  • Con BusyBox il comando mkdir corre /usr/bin/busybox mkdir
  • Con GNU Coreutils – il comando mkdir corre /usr/bin/mkdir.

Puoi usare in modo trasparente comandi come mkdir, passwd, ps, tar, e wget una volta installato BusyBox. I comandi sono implementati come “applet” che vengono combinati in una distribuzione BusyBox funzionante. Il set completo pesa circa 1 MB. Le applet sono rimovibili, quindi la dimensione binaria può essere ulteriormente ridotta. Puoi controllare cosa è disponibile nella tua installazione eseguendo busybox senza argomenti.

Annuncio pubblicitario

Poiché BusyBox è stato creato per alimentare piccoli sistemi avviabili, copre tutto il necessario nell’area utente per avviare e amministrare un sistema POSIX. Che si estende al minimo init implementazione che può essere eseguita come ID processo 1 e servizi di sistema di supporto. Potresti adottare BusyBox come alternativa leggera a un normale init o systemd demone.

Poiché BusyBox è intenzionalmente minimale, non tutti i comandi implementano tutte le funzionalità della sua controparte GNU. Potresti trovare alcuni flag mancanti o differenze comportamentali in situazioni non comuni. Questo è uno dei compromessi della natura snella di BusyBox.

Dove viene utilizzato BusyBox?

BusyBox può essere trovato ovunque l’utilizzo del disco sia un problema. Viene utilizzato da sistemi operativi minimi come Alpine e scenari specializzati come dispositivi incorporati e shell mobili.

È probabile che un dispositivo derivato da Unix che non esegue una distribuzione del sistema operativo convenzionale utilizzi BusyBox. Lo troverai sul tuo router di rete, smart TV, auto moderna e dispositivi IoT. Ognuna di queste impostazioni è caratterizzata dalla necessità di eseguire strumenti di base dell’area utente all’interno di un ambiente fortemente limitato dalle risorse.

La spedizione di un singolo binario all-in-one è più efficiente. Riduce la ridondanza consentendo a tutti i comandi di condividere codice comune senza memorizzare librerie autonome su disco. Poiché BusyBox offre una buona compatibilità con altre implementazioni ed è concesso in licenza con GPL, di solito è l’opzione ideale per gli ambienti che richiedono un set leggero di utilità.

Anche i fornitori di dispositivi embedded traggono vantaggio dalla natura modulare di BusyBox. Un prodotto IoT potrebbe aver bisogno solo di una manciata di utilità critiche per fornire la sua funzionalità. La distribuzione di un binario BusyBox modificato libera qualche KB in più di spazio su disco che può essere un risparmio significativo.

Come provare BusyBox

Puoi installare BusyBox senza sostituire le tue utilità attuali. Usa il tuo gestore di pacchetti per aggiungere busybox, quindi aggiungi il comando che hai scelto a busybox binario per eseguire un’applet:

busybox mkdir test
Annuncio pubblicitario

Ciò garantisce che la versione BusyBox del comando venga utilizzata al posto della versione nel percorso predefinito della shell.

Un altro modo per provare BusyBox è tramite la sua immagine Docker ufficiale:

docker run -it --rm busybox

Se hai installato Docker, questo ti porterà nell’implementazione della shell di BusyBox. Puoi eseguire un comando specifico aggiungendolo dopo il nome dell’immagine:

docker run -it --rm busybox mkdir demo

BusyBox ha anche un emulatore JavaScript che ti consente di provare le utilità nel tuo browser web.

Sulla maggior parte delle distribuzioni Linux non è possibile sostituire completamente coreutils con BusyBox. I comandi e i pacchetti specifici della distribuzione sono spesso cablati per aspettarsi il coreutils utenze da mettere a disposizione. La tua distribuzione di solito rifiuterà di disinstallare questo pacchetto in quanto potrebbe rendere inutilizzabile il sistema se init è rimosso.

Annuncio pubblicitario

Se vuoi fare affidamento su BusyBox, è meglio iniziare con una distribuzione che lo utilizza e poi sovrapporre il tuo altro software. Aggiunta di BusyBox insieme coreutils come mostrato sopra funziona bene quando è necessario verificare come risponderà un’applet in uno scenario particolare.

Conclusione

BusyBox è un’implementazione leggera delle utilità UNIX dell’area utente che viene fornita come un singolo binario. Puoi combinarlo con un kernel Linux per creare un sistema funzionante senza altre dipendenze.

BusyBox è ottimizzato per ambienti con vincoli di spazio. Questo lo rende ideale per prodotti embedded come i dispositivi IoT. Potresti anche trovare BusyBox installato su distribuzioni Linux minime ma per il resto per tutti gli usi come Alpine Linux.

Sia che tu stia usando BusyBox o GNU Coreutils, i tuoi comandi familiari generalmente “funzioneranno” con entrambe le implementazioni. Eventuali problemi che si presentano di solito sono dovuti al fatto che BusyBox non implementa un determinato flag raro o un’opzione di configurazione.

Articoli correlati

Ultimi articoli