Што е BusyBox и каде се користи?
BusyBox е збирка на основни Unix алатки спакувани како единствена бинарна верзија. Ова го прави идеален за средини со ограничени ресурси, како што се вградените уреди. Целосната дистрибуција има речиси 400 од најчестите команди.
BusyBox е со отворен код и лиценциран според GPL. Создаден е во 1995 година со намера да направи бутабилен систем да се вклопи на една флопи. Спојувањето на командите заедно во една бинарна ги намалува трошоците и дозволува споделување кодови помеѓу навидум независни апликации.
Што вклучува BusyBox?
BusyBox ги обезбедува секојдневните погодни команди кои често се чувствуваат како да се дел од вашата школка. Иако алатките за корисничка земја како ls
и cat
се сеприсутни, тие всушност живеат во посебен пакет за помош што е независен од вашата школка. Многу дистрибуции на Linux ги испорачуваат овие команди преку coreutils
на GNU, но други испраќаат BusyBox наместо тоа.
Проектот работи со симповрзување на познатите имиња на команди во /usr/bin
со бинарната BusyBox. Оваа извршна датотека потоа ја повикува функцијата што одговара на името што е донесено како негов прв аргумент.
- Со BusyBox командата
mkdir
работи/usr/bin/busybox mkdir
- Со GNU Coreutils – командата
mkdir
работи/usr/bin/mkdir
.
Можете транспарентно да користите команди како mkdir
, passwd
, ps
, tar
и wget
откако ќе се инсталира BusyBox. Командите се имплементирани како „аплети“ кои се комбинираат во функционална BusyBox дистрибуција. Целосниот сет тежи околу 1MB. Аплетите се отстранливи, така што бинарната големина може да се намали уште повеќе. Можете да проверите што е достапно во вашата инсталација со извршување на busybox
без аргументи.
Бидејќи BusyBox е создаден за напојување на мали бутабилни системи, тој покрива се што е потребно во корисничката земја за стартување и администрирање на POSIX систем. Тоа се протега на минимална имплементација init
што може да работи како ID на процес 1
и да поддржува системски услуги. Може да го прифатите BusyBox како лесна алтернатива на обичен init
или systemd
демон.
Бидејќи BusyBox е намерно минимален, не секоја команда ги имплементира сите карактеристики на својот GNU колега. Може да најдете некои знамиња кои недостасуваат или разлики во однесувањето во невообичаени ситуации. Ова е една од компромисите на рационализираната природа на BusyBox.
Каде се користи BusyBox?
BusyBox може да се најде секаде каде што е проблем користењето на дискот. Се користи од минимални оперативни системи како што е Alpine, како и од специјализирани сценарија како што се вградени уреди и мобилни школки.
Добри се шансите уред добиен од Unix кој не работи со конвенционална дистрибуција на ОС да користи BusyBox. Ќе го најдете на вашиот мрежен рутер, паметен телевизор, модерен автомобил и IoT уреди. Секоја од овие поставки се карактеризира со потреба за извршување на основни алатки за корисничко земјиште во средина со силно ограничени ресурси.
Испораката на еден сè-во-едно бинарен е поефикасна. Го намалува вишокот дозволувајќи им на сите команди да споделуваат заеднички код без складирање на самостојни библиотеки на дискот. Со оглед на тоа што BusyBox нуди добра компатибилност со други имплементации и е лиценциран според GPL, тоа е обично опција за околини на кои им е потребен лесен сет на комунални услуги.
Производителите на вградени уреди исто така имаат корист од модуларната природа на BusyBox. На IoT производ може да му требаат само неколку критични алатки за да ја обезбеди својата функционалност. Дистрибуирањето на изменето бинарно BusyBox ослободува уште неколку KB простор на дискот што може да биде значителна заштеда.
Како да го пробате BusyBox
Можете да инсталирате BusyBox без да ги замените вашите тековни комунални услуги. Користете го вашиот менаџер на пакети за да додадете busybox
, а потоа додајте ја вашата избрана команда на бинарната busybox
за да извршите аплет:
busybox mkdir test
Ова осигурува дека верзијата на командата BusyBox ќе се користи наместо верзијата во стандардната патека на вашата школка.
Друг начин да го пробате BusyBox е преку неговата официјална слика на Docker:
docker run -it --rm busybox
Ако имате инсталирано Docker, ова ќе ве внесе во имплементацијата на школка на BusyBox. Можете да извршите одредена команда со додавање по името на сликата:
docker run -it --rm busybox mkdir demo
BusyBox има и JavaScript емулатор кој ви овозможува да ги испробате алатките во вашиот веб-прелистувач.
На повеќето дистрибуции на Linux не можете целосно да ги замените coreutils
со BusyBox. Дистро-специфичните команди и пакети честопати се поврзани за да се очекува да бидат достапни алатките coreutils
. Вашата дистрибуција обично одбива да го деинсталира овој пакет бидејќи може да го направи системот нефункционален ако се отстрани init
.
Ако сакате да се потпрете на BusyBox, најдобро е да започнете со дистрибуција што го користи, а потоа да го поставите другиот софтвер на врвот. Додавањето BusyBox заедно со coreutils
како што е прикажано погоре функционира добро кога треба да проверите како аплетот ќе реагира во одредено сценарио.
Заклучок
BusyBox е лесна имплементација на Utilities на userland UNIX која доаѓа спакувана како единствена бинарна верзија. Можете да го комбинирате со кернелот на Линукс за да создадете функционален систем без други зависности.
BusyBox е оптимизиран за средини со ограничен простор. Ова го прави идеален за вградени производи како што се IoT уредите. Може да најдете и BusyBox инсталиран на минимални, но инаку општа намена Linux дистрибуции како што е Alpine Linux.
Без разлика дали користите BusyBox или GNU Coreutils, вашите познати команди генерално „само работат“ со која било имплементација. Сите проблеми што ќе се појават обично се должат на тоа што BusyBox не имплементира одредена ретка опција за знаме или конфигурација.