Advertisements

So verwenden Sie BusyBox unter Linux

Es ist einfach, Linux-Befehle als selbstverständlich hinzunehmen. Sie werden mit dem System gebündelt, wenn Sie Linux installieren, und wir hinterfragen oft nicht, warum sie da sind. Einige der grundlegenden Befehle, wie z cd, kill, und echo sind nicht immer unabhängige Anwendungen, sondern sind tatsächlich in Ihre Shell integriert. Andere, wie z ls, mv, und cat sind Teil eines zentralen Dienstprogrammpakets (oft 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

BusyBox ist ein Open-Source-Projekt (GPL), das einfache Implementierungen von fast 400 gängigen Befehlen bietet, 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 Dateisystem-Checker fsck, das rpm und dpkg Paketmanager und natürlich eine Shell (sh), die einen 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 sie unter 1 MB groß, daher hat sie im Embedded-, Edge- und IoT-Bereich viel an Popularität gewonnen, wo der Festplattenspeicher knapp ist. In der Welt der Container und 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 eine einzige Binärdatei kompiliert (busybox), und die Manpage ist nur 81 Seiten lang (nach meiner Berechnung von Rohrleitungen) man zu pr) umfasst aber fast 400 Befehle.

Als Beispielvergleich hier die Ausgabe des 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 lieber 20 Optionen oder zehn Optionen in Ihren Befehlen haben möchten. 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 als Ihre Shell festlegen, indem Sie die chsh --shell Befehl, gefolgt vom Pfad zur BusyBox sh Anwendung. Ich behalte BusyBox in /lib64, aber der Speicherort hängt davon ab, wo Ihre Distribution es installiert hat.

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

Das Ersetzen aller gängigen Befehle en gros durch BusyBox ist etwas komplexer, da die meisten Distributionen “fest verdrahtet” sind, um nach bestimmten Befehlen in bestimmten Paketen zu suchen. Mit anderen Worten, während es technisch möglich ist, zu ersetzen init mit BusyBox’s init, kann Ihr Paketmanager Ihnen das Entfernen des Pakets verweigern, das . enthält init aus Angst, dass Ihr System dadurch nicht mehr bootfähig wird. Es gibt einige Distributionen, die auf BusyBox basieren, daher ist ein Neuanfang wahrscheinlich der einfachste Weg, um ein System zu erleben, das auf BusyBox basiert.

Testen Sie BusyBox

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 die Tools von BusyBox zu nutzen, müssen Sie Befehle als Argumente an die busybox 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 . erstellen busybox für jeden Befehl. Das ist einfacher als es klingt, 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 Symlink-Verzeichnis unter der . hinzu Anfang Ihres Pfades und starten Sie BusyBox:

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

Beschäftige dich

BusyBox ist ein lustiges Projekt und ein Beispiel dafür, wie es geht minimal Rechnen sein kann. Egal, ob Sie BusyBox als leichtgewichtige Umgebung für einen alten Computer, den Sie gerettet haben, als Benutzerland für ein eingebettetes Gerät, zum Testen eines neuen Init-Systems oder einfach nur als Kuriosität verwenden, es kann Spaß machen, Altbekanntes wiederzuerlangen, aber irgendwie neu, Befehle.

So verwenden Sie BusyBox unter Linux

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top