GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie BusyBox unter Linux

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.


Linux
  1. Wie ich Cron unter Linux verwende

  2. So verwenden Sie FIND unter Linux

  3. So verwenden Sie Unzip unter Linux

  4. So verwenden Sie den Su-Befehl unter Linux

  5. So verwenden Sie Google Drive unter Linux

So verwenden Sie das Linux-Terminal in Android

So verwenden Sie den Befehl sysctl unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie grep unter Linux

Was ist BusyBox unter Linux? Wie benutzt man es?

Wie verwende ich gzip unter Linux?