GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare BusyBox su Linux

È facile dare per scontati i comandi di Linux. Vengono forniti in bundle con il sistema quando installi Linux e spesso non ci chiediamo perché siano lì. Alcuni dei comandi di base, come cd , kill e echo non sono sempre applicazioni indipendenti ma in realtà sono integrate nella tua shell. Altri, come ls , mv e cat fanno parte di un pacchetto di utilità di base (spesso GNU coreutils in particolare). Ma ci sono sempre delle alternative nel mondo dell'open source, e una delle più interessanti è BusyBox.

Cos'è BusyBox in Linux?

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

BusyBox è un progetto open source (GPL) che fornisce semplici implementazioni di quasi 400 comandi comuni, inclusi ls , mv , ln , mkdir , more , ps , gzip , bzip2 , tar e grep . Contiene anche una versione del linguaggio di programmazione awk , l'editor di stream sed , il controllo del filesystem fsck , il rpm e dpkg gestori di pacchetti e, naturalmente, una shell (sh ) che fornisce un facile accesso a tutti questi comandi. In breve, contiene tutti i comandi essenziali necessari a un sistema POSIX per eseguire attività di manutenzione del sistema comuni, nonché molte attività utente e amministrative.

In effetti, contiene anche un init comando che può essere lanciato come PID 1 per fungere da processo padre per tutti gli altri servizi di sistema. In altre parole, BusyBox può essere utilizzato come alternativa a systemd, OpenRC, sinit, init e altri demoni di lancio.

BusyBox è molto piccolo. Come eseguibile, è inferiore a 1 MB, quindi ha guadagnato gran parte della sua popolarità nello spazio incorporato, Edge e IoT, dove lo spazio su disco è prezioso. Nel mondo dei container e del cloud computing, è anche popolare come base per immagini container Linux minime.

Minimalismo

Parte del fascino di BusyBox è il suo minimalismo. Tutti i suoi comandi sono compilati in un unico binario (busybox ), e la sua pagina man è di sole 81 pagine (secondo il mio calcolo del piping man a pr ) ma copre quasi 400 comandi.

Come esempio di confronto, ecco l'output di shadow versione di 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

Ed ecco la versione BusyBox dello stesso 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)

Il fatto che questa differenza sia o meno una caratteristica o una limitazione dipende dal fatto che tu preferisca avere 20 opzioni o dieci opzioni nei tuoi comandi. Per alcuni utenti e casi d'uso, il minimalismo di BusyBox fornisce quanto basta per ciò che deve essere fatto. Per altri, è un buon ambiente minimale da avere come ripiego o come base per l'installazione di strumenti più robusti come Bash, Zsh, GNU Awk e così via.

Installazione di BusyBox

Su Linux, puoi installare BusyBox usando il tuo gestore di pacchetti. Ad esempio, su Fedora e simili:

$ sudo dnf install busybox

Su Debian e derivati:

$ sudo apt install busybox

Su macOS, usa MacPorts o Homebrew. Su Windows, usa Chocolatey.

Puoi impostare BusyBox come shell usando chsh --shell comando, seguito dal percorso di BusyBox sh applicazione. Conservo BusyBox in /lib64 , ma la sua posizione dipende da dove è stata installata dalla tua distribuzione.

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

La sostituzione di tutti i comandi comuni all'ingrosso con BusyBox è un po' più complessa, perché la maggior parte delle distribuzioni sono "cablate" per cercare pacchetti specifici per comandi specifici. In altre parole, mentre è tecnicamente possibile sostituire init con init di BusyBox , il tuo gestore di pacchetti potrebbe rifiutarti di consentirti di rimuovere il pacchetto contenente init per paura che il tuo sistema diventi non avviabile. Esistono alcune distribuzioni basate su BusyBox, quindi ricominciare da capo è probabilmente il modo più semplice per sperimentare un sistema basato su BusyBox.

Prova BusyBox

Non devi cambiare la tua shell in BusyBox in modo permanente solo per provarlo. Puoi avviare una shell BusyBox dalla tua shell attuale:

$ busybox sh
~ $

Il tuo sistema ha ancora le versioni dei comandi non BusyBox installate, quindi, per provare gli strumenti di BusyBox, devi emettere comandi come argomenti per busybox eseguibile:

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

Per l'esperienza "completa" di BusyBox, puoi creare collegamenti simbolici a busybox per ogni comando. È più facile di quanto sembri, purché utilizzi un ciclo for:

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

Aggiungi la tua directory di collegamenti simbolici all'inizio del tuo percorso e avvia BusyBox:

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

Dai da fare

BusyBox è un progetto divertente e un esempio di quanto sia minimo l'informatica può essere. Sia che tu usi BusyBox come ambiente leggero per un vecchio computer che hai salvato, come userland per un dispositivo incorporato, per provare un nuovo sistema di inizializzazione, o semplicemente come curiosità, può essere divertente riacquistare familiarità con il vecchio familiare, ma in qualche modo nuovo, comandi.


Linux
  1. Come uso cron in Linux

  2. Come usare TROVA in Linux

  3. Come usare Unzip in Linux

  4. Come usare il comando Su in Linux

  5. Come utilizzare Google Drive su Linux

Come utilizzare il terminale Linux in Android

Come utilizzare il comando sysctl in Linux

Come utilizzare il comando di arresto di Linux

Come usare grep in Linux

Cos'è BusyBox in Linux? Come usarlo?

Come usare gzip in Linux?