GNU/Linux >> Znalost Linux >  >> Linux

Jak používat BusyBox na Linuxu

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.


Linux
  1. Jak používám cron v Linuxu

  2. Jak používat FIND v Linuxu

  3. Jak používat Unzip v Linuxu

  1. Jak používám nastavení usnadnění přístupu v systému Linux

  2. Jak používat Su Command v Linuxu

  3. Jak používat Disk Google v systému Linux

  1. Jak používat pkgsrc na Linuxu

  2. Jak používat příkaz Disown v Linuxu

  3. Jak používat příkaz Linux SS