Je snadné považovat příkazy Linuxu za samozřejmost. Jsou součástí systému, když si nainstalujete Linux, a my se často neptáme, proč tam jsou. Některé ze základních příkazů, jako je cd
, kill
a echo
nejsou vždy nezávislé aplikace, ale jsou ve skutečnosti zabudovány do vašeho shellu. Jiné, například ls
, mv
a cat
jsou součástí balíku základních nástrojů (často GNU coreutils
konkrétně). Ale ve světě open source vždy existují alternativy a jednou z nejzajímavějších je BusyBox.
Co je BusyBox v Linuxu?
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
BusyBox je projekt s otevřeným zdrojovým kódem (GPL), který poskytuje jednoduché implementace téměř 400 běžných příkazů, včetně ls
, mv
, ln
, mkdir
, more
, ps
, gzip
, bzip2
, tar
a grep
. Obsahuje také verzi programovacího jazyka awk
, editor streamu sed
, kontrola souborového systému fsck
, rpm
a dpkg
správci balíčků a samozřejmě shell (sh
), který poskytuje snadný přístup ke všem těmto příkazům. Stručně řečeno, obsahuje všechny základní příkazy potřebné pro systém POSIX k provádění běžných úloh údržby systému a také mnoha uživatelských a administrativních úloh.
Ve skutečnosti dokonce obsahuje init
příkaz, který lze spustit jako PID 1, aby sloužil jako nadřazený proces pro všechny ostatní systémové služby. Jinými slovy, BusyBox lze použít jako alternativu k systemd, OpenRC, sinit, init a dalším spouštěcím démonům.
BusyBox je velmi malý. Jako spustitelný soubor má méně než 1 MB, takže si získal velkou oblibu v embedded, Edge a IoT prostoru, kde je místo na disku na prvním místě. Ve světě kontejnerů a cloud computingu je také populární jako základ pro minimální obrazy kontejnerů Linuxu.
Minimalismus
Součástí přitažlivosti BusyBoxu je jeho minimalismus. Všechny jeho příkazy jsou zkompilovány do jednoho binárního souboru (busybox
) a jeho manuálová stránka má pouhých 81 stránek (podle mého výpočtu potrubí man
na pr
), ale pokrývá téměř 400 příkazů.
Jako příklad srovnání uvádíme výstup shadow
verze 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
A zde je verze BusyBox stejného příkazu:
-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)
Zda je tento rozdíl funkcí nebo omezením, závisí na tom, zda upřednostňujete mít v příkazech 20 nebo deset možností. Některým uživatelům a případům použití poskytuje minimalismus BusyBoxu právě dost pro to, co je třeba udělat. Pro ostatní je to dobré minimální prostředí jako záložní zdroj nebo jako základ pro instalaci robustnějších nástrojů jako Bash, Zsh, GNU Awk a tak dále.
Instalace BusyBox
V systému Linux můžete BusyBox nainstalovat pomocí správce balíčků. Například na Fedoře a podobných:
$ sudo dnf install busybox
Na Debianu a jeho derivátech:
$ sudo apt install busybox
V systému macOS použijte MacPorts nebo Homebrew. V systému Windows použijte Chocolatey.
BusyBox můžete nastavit jako svůj shell pomocí chsh --shell
za ním následuje cesta k BusyBoxu sh
aplikace. Udržuji BusyBox v /lib64
, ale jeho umístění závisí na tom, kam ho vaše distribuce nainstalovala.
$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh
Nahrazení všech běžných příkazů ve velkém pomocí BusyBox je trochu složitější, protože většina distribucí je „pevně zapojena“, aby vyhledávala konkrétní balíčky pro konkrétní příkazy. Jinými slovy, i když je technicky možné nahradit init
s init
BusyBoxu , váš správce balíčků vám může odmítnout povolit odstranění balíčku obsahujícího init
ze strachu, že způsobíte, že váš systém nebude možné spustit. Některé distribuce jsou postavené na BusyBox, takže začít znovu je pravděpodobně nejjednodušší způsob, jak zažít systém postavený na BusyBox.
Vyzkoušejte BusyBox
Nemusíte trvale měnit svůj shell na BusyBox, jen abyste to vyzkoušeli. Shell BusyBox můžete spustit z vašeho aktuálního shellu:
$ busybox sh
~ $
Váš systém má stále nainstalované verze příkazů, které nejsou BusyBox, takže abyste mohli využívat nástroje BusyBox, musíte zadat příkazy jako argumenty do busybox
spustitelný soubor:
~ $ 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
[...]
Pro "úplný" zážitek z BusyBoxu můžete vytvořit symbolické odkazy na busybox
pro každý příkaz. Je to jednodušší, než to zní, pokud používáte for-loop:
$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done
Přidejte svůj adresář symbolických odkazů na start vaší cesty a spusťte BusyBox:
$ PATH=$(pwd)/bbx:$PATH bbx/sh
Zaneprázdněte se
BusyBox je zábavný projekt a příklad toho, jak je minimální výpočetní technika může být. Ať už používáte BusyBox jako odlehčené prostředí pro starý počítač, který jste zachránili, jako uživatelskou zemi pro embedded zařízení, pro vyzkoušení nového init systému, nebo jen jako zajímavost, může být zábavné znovu se seznámit se starým známým, ale nějak nové, příkazy.