Es ist einfach, Linux-Befehle als selbstverständlich anzusehen. Sie werden mit dem System gebündelt, wenn Sie Linux installieren, und wir hinterfragen oft nicht, warum sie dort sind. Einige der grundlegenden Befehle, wie z. B. cd
, kill
, und echo
sind nicht immer unabhängige Anwendungen, sondern tatsächlich in Ihre Shell integriert. Andere wie ls
, mv
, und cat
sind Teil eines zentralen Dienstprogrammpakets (häufig GNU coreutils
speziell). Aber es gibt immer Alternativen in der Welt von Open Source, und eine der interessantesten ist BusyBox.
Was ist BusyBox unter Linux?
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
BusyBox ist ein Open-Source-Projekt (GPL), das einfache Implementierungen von fast 400 gängigen Befehlen bereitstellt, einschließlich ls
, mv
, ln
, mkdir
, more
, ps
, gzip
, bzip2
, tar
, und grep
. Es enthält auch eine Version der Programmiersprache awk
, der Stream-Editor sed
, der Dateisystemprüfer fsck
, die rpm
und dpkg
Paketmanager und natürlich eine Shell (sh
), die einfachen Zugriff auf all diese Befehle bietet. Kurz gesagt, es enthält alle wesentlichen Befehle, die ein POSIX-System benötigt, um allgemeine Systemwartungsaufgaben sowie viele Benutzer- und Verwaltungsaufgaben auszuführen.
Tatsächlich enthält es sogar ein init
Befehl, der als PID 1 gestartet werden kann, um als übergeordneter Prozess für alle anderen Systemdienste zu dienen. Mit anderen Worten, BusyBox kann als Alternative zu systemd, OpenRC, sinit, init und anderen Start-Daemons verwendet werden.
BusyBox ist sehr klein. Als ausführbare Datei ist es weniger als 1 MB groß, sodass es im Embedded-, Edge- und IoT-Bereich, wo Festplattenspeicher knapp ist, an Popularität gewonnen hat. In der Welt der Container und des Cloud-Computing ist es auch als Grundlage für minimale Linux-Container-Images beliebt.
Minimalismus
Ein Teil des Reizes von BusyBox ist sein Minimalismus. Alle seine Befehle sind in einer einzigen Binärdatei (busybox
), und seine Handbuchseite umfasst nur 81 Seiten (nach meiner Berechnung von Piping man
zu pr
), deckt aber fast 400 Befehle ab.
Als Beispielvergleich hier die Ausgabe von shadow
Version von 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
Und hier ist die BusyBox-Version desselben Befehls:
-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)
Ob dieser Unterschied ein Feature oder eine Einschränkung ist oder nicht, hängt davon ab, ob Sie 20 Optionen oder zehn Optionen in Ihren Befehlen bevorzugen. Für einige Benutzer und Anwendungsfälle bietet der Minimalismus von BusyBox gerade genug für das, was getan werden muss. Für andere ist es eine gute minimale Umgebung als Fallback oder als Grundlage für die Installation robusterer Tools wie Bash, Zsh, GNU Awk und so weiter.
BusyBox installieren
Unter Linux können Sie BusyBox mit Ihrem Paketmanager installieren. Zum Beispiel auf Fedora und ähnlichem:
$ sudo dnf install busybox
Auf Debian und Derivaten:
$ sudo apt install busybox
Verwenden Sie unter macOS MacPorts oder Homebrew. Verwenden Sie unter Windows Chocolatey.
Sie können BusyBox mit chsh --shell
als Ihre Shell festlegen Befehl, gefolgt vom Pfad zur BusyBox sh
Anwendung. Ich bewahre BusyBox in /lib64
auf , aber sein Speicherort hängt davon ab, wo Ihre Distribution es installiert hat.
$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh
Das vollständige Ersetzen aller gängigen Befehle durch BusyBox ist etwas komplexer, da die meisten Distributionen "fest verdrahtet" sind, um nach bestimmten Paketen für bestimmte Befehle zu suchen. Mit anderen Worten, obwohl es technisch möglich ist, init
zu ersetzen mit BusyBox's init
, kann Ihr Paketmanager es Ihnen verweigern, das Paket zu entfernen, das init
enthält aus Angst, dass Ihr System nicht bootfähig wird. Es gibt einige Distributionen, die auf BusyBox aufbauen, also ist ein Neuanfang wahrscheinlich der einfachste Weg, ein System zu erleben, das um BusyBox herum aufgebaut ist.
Probieren Sie BusyBox aus
Sie müssen Ihre Shell nicht dauerhaft auf BusyBox umstellen, nur um es auszuprobieren. Sie können eine BusyBox-Shell von Ihrer aktuellen Shell aus starten:
$ busybox sh
~ $
Auf Ihrem System sind jedoch immer noch die Nicht-BusyBox-Versionen von Befehlen installiert. Um also die Tools von BusyBox nutzen zu können, müssen Sie Befehle als Argumente an busybox
ausgeben ausführbar:
~ $ 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
[...]
Für das „vollständige“ BusyBox-Erlebnis können Sie Symlinks zu busybox
erstellen für jeden Befehl. Das ist einfacher, als es sich anhört, solange Sie eine for-Schleife verwenden:
$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done
Fügen Sie Ihr Verzeichnis mit symbolischen Links am Start hinzu Ihres Pfads und starten Sie BusyBox:
$ PATH=$(pwd)/bbx:$PATH bbx/sh
Beschäftige dich
BusyBox ist ein unterhaltsames Projekt und ein Beispiel dafür, wie minimal es ist Rechnen sein kann. Ob Sie BusyBox als leichtgewichtige Umgebung für einen alten Computer, den Sie gerettet haben, als Userland für ein eingebettetes Gerät, zum Testen eines neuen Init-Systems oder nur als Kuriosität verwenden, es kann Spaß machen, sich mit Altbekanntem wieder vertraut zu machen, aber irgendwie neu, Befehle.