BusyBox je v těchto dnech stále populární, zejména mezi uživateli Docker. Mnoho obrázků Docker používá BusyBox, aby vám poskytlo minimální obrázek.
A to by mohlo mnoho uživatelů zmást, zvláště pokud berete příkazy Linuxu jako samozřejmost. Myslíte si, že příkazy ls, mv a další podobné příkazy jsou součástí Linuxu, ale pravdou je, že tyto příkazy jsou součástí balíčku GNU Coreutils a většina distribucí Linuxu jej má předinstalovaný.
GNU Coreutils je téměř de facto poskytovatelem různých UNIX/Linux příkazů. Téměř proto, že vždy existují alternativy a BusyBox je jednou z takových alternativ ke GNU Coreutils.
Co je BusyBox?
BusyBox je projekt s otevřeným zdrojovým kódem, který poskytuje zkrácenou implementaci přibližně 400 běžných příkazů UNIX/Linux. Svlečený? Ano. Implementace BusyBox odstraňuje neobvyklé, zřídka používané možnosti příkazů. Vše se vejde pod 1 MB a tento minimální obrázek je důvodem, proč si získal oblibu mezi vestavěnými systémy a doménami IoT i ve světě cloud computingu.
Neřiďte se její velikostí. BusyBox má prostor pro sed a awk jako klasické editory (opět stažená verze) a obsahuje také svůj vlastní shell. Obsahuje dokonce příkaz init, který lze spustit jako PID 1. To znamená, že BusyBox lze nakonfigurovat jako alternativu k Systemd, OpenRC atd.
BusyBox je vynikající alternativou ke GNU Coreutils speciálně v případech, kdy na malé velikosti operačního systému záleží.
🗒️BusyBox vám dává oblíbené linuxové příkazy jako mv, mkdir, ls atd., ale obsahuje pouze běžně používané možnosti těchto příkazů. Tento minimalismus je USP BusyBox.Je problém, že nezískáváte úplný příkaz pro Linux možnosti s BusyBox?
To záleží na vaší potřebě, opravdu. Většina lidí nikdy nebude potřebovat všechny možnosti příkazu. Některé příkazy Linuxu mají více než 50 možností a vsadím se, že jste nikdy nepoužili všechny možnosti ani jediného příkazu Linuxu.
BusyBox omezuje zřídka používané možnosti. Například příkaz ls má volbu G, která odstraní název skupiny z výstupu dlouhého seznamu (ls -l).
Myslím, že jste tuto možnost nikdy nepotřebovali. To je důvod, proč není přítomen v implementaci ls BusyBox. Pokud opravdu potřebujete výstup, kde název skupiny není uveden, stačí k tomuto účelu použít příkaz cut nebo awk.
Vezměte si jiný příklad. Toto je stránka nápovědy k příkazu mv z GNU Coreutils:
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-f, --force do not prompt before overwriting
-i, --interactive prompt before overwrite
-n, --no-clobber do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
--strip-trailing-slashes remove any trailing slashes from each SOURCE
argument
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-u, --update move only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-Z, --context set SELinux security context of destination
file to default type
--help display this help and exit
--version output version information and exit
Nyní je zde stránka nápovědy k příkazu mv z BusyBox:
Usage: mv [-fin] SOURCE DEST
or: mv [-fin] SOURCE... DIRECTORY
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
-f Don't prompt before overwriting
-i Interactive, prompt before overwrite
-n Don't overwrite an existing file
Vidíte ten rozdíl?
Jak získat BusyBox?
BusyBox můžete získat různými způsoby.
Pokud si chcete BusyBox jednoduše vyzkoušet ve své aktuální distribuci Linuxu, můžete si jej nainstalovat pomocí správce balíčků vaší distribuce, jako je Apt nebo DNF nebo Yum.
Na Ubuntu můžete k instalaci BusyBox použít tento příkaz:
sudo apt install busybox
Poté, pokud chcete spustit BusyBox verzi příkazu, musíte před ni přidat busybox.
busybox cat sample.txt
Pokud BusyBox neimplementuje příkaz, vyvolá chybu 'applet nenalezen'.
[email protected]:~$ busybox xyz
xyz: applet not found
Alternativně , můžete si stáhnout obraz Dockeru BusyBox a vyzkoušet jej v běžícím kontejneru.
Ujistěte se, že máte nainstalovaný Docker. Vytáhněte oficiální obrázek dockeru:
docker pull busybox
Spusťte kontejner z obrázku a zadejte shell BusyBox:
docker run -it --rm busybox
Každý příkaz Linuxu, který zde spustíte, pochází z BusyBoxu. Nemusíte to výslovně specifikovat.
Celkově na běžném linuxovém systému BusyBox nepotřebujete. Už tam máte plnou verzi linuxových příkazů od GNU Coreutils. Není potřeba instalovat oříznutou verzi.
Ale BusyBox má své použití ve speciálních oblastech, jako když konfigurujete minimální operační systém Linux pro vestavěné zařízení nebo zařízení IoT. Totéž platí, když chcete zachovat malou velikost obrázku Docker.
Doufám, že lépe rozumíte BusyBoxu. Pokud potřebujete nějaké vysvětlení nebo máte návrh, dejte mi prosím vědět v komentářích.