Busybox cuțit elvețian pentru sisteme integrate linux

BusyBox: cuțit elvețian pentru sisteme încorporate Linux

Administratorii de sistem și utilizatorii sistemelor UNIX / Linux sunt, fără îndoială, obișnuiți să lucreze cu shell-ul de comandă preferat și cu software-ul standard. Dar utilizarea lor omniprezentă nu este întotdeauna posibilă. Și apoi BusyBox vine la salvare - o coajă simplificată cu un set de instrumente compacte de sistem.

BusyBox: ce este și de ce aveți nevoie de ea?

În ciuda creșterii puternice a scoicilor grafice și a interfețelor "prietenoase", este imposibil să ne imaginăm UNIX fără linie de comandă și utilități de bază în zilele noastre. Numeroși interpreți și utilități de bază ale sistemului nu stau în picioare, se dezvoltă și se dezvoltă, ceea ce duce în mod inevitabil la o creștere a volumului acestora. În același timp, există domenii de activitate în care compactitatea oricărei aplicații din motive evidente este foarte importantă, de exemplu, în dispozitivele încorporate. În același timp, în multe cazuri, o mare parte din funcționalitatea inerentă utilităților de bază "cu scop general" nu este necesară.

Pentru a rezolva aceste probleme în anii 90, Bruce Perens a creat pachetul BusyBox [1]. Acum, proiectul este poziționat ca un "cuțit elvețian pentru sisteme încorporate Linux" și vizează în primul rând utilizarea în distribuții mici de GNU / Linux. Distribuită sub a doua versiune a licenței GNU GPL.

BusyBox este singurul fișier executabil care pornește cu o interfață de comandă completă. După cum citește documentația oficială a BusyBox, pentru a crea versiunea minimă a GNU / Linux, trebuie doar să adăugați kernelul OS și directoarele / etc, / dev.

Pachetele binare cu BusyBox pentru distribuțiile populare GNU / Linux sunt disponibile în respectivele depozite, iar arhiva sursă se află pe site-ul proiectului [2]. Articolul se referă la lansarea BusyBox v1.5.0. Unul dintre principalele obiective urmărite de dezvoltatorii de BusyBox, - calcul optimizat și compact - pentru memorie limitată. Acest lucru nu numai că reiterează beneficiile utilizării acestuia în dispozitivele încorporate, ci și o altă abordare în spiritul modului UNIX: un nivel ridicat de personalizare (numai componentele necesare pot fi incluse în fișierul binar BusyBox).

La etapa de compilare (sau mai degrabă, înainte de procesul de construire în sine), puteți selecta numai acele utilități de bază necesare. Acesta este implementat în stilul de tuning a kernel-ului Linux. În locul celei mai comune metode care este colectată de la aplicațiile automake sub forma scriptului "configure" pentru preconfigurarea BusyBox, trebuie executată una dintre următoarele comenzi:

Argumentul "config" inițiază lansarea unui "chestionar" cu o listă de opțiuni disponibile și ofertă de utilități de bază pentru a pune "Y" sau "N" în locul caracteristicilor necesare și inutile.

Argumentul "menuconfig" determină o configurație mai convenabilă ca meniu cu o interfață bazată pe curses (a se vedea Figura 1).

Figura 1. Instalarea BusyBox: "make menuconfig" în modul de kernel Linux

Argumentul "defconfig" include automat toate opțiunile disponibile, pregătindu-se pentru asamblarea BusyBox "scop general".

La fel ca în cazul kernel-ului Linux, după configurare, este creat un fișier de configurare Config, care poate fi întotdeauna returnat de comanda:

Acest lucru este important atunci când faceți upgrade la o versiune mai nouă a BusyBox cu configurația veche (astfel încât atunci când configurați, lucrați doar cu opțiunile care apar în următoarea versiune).

În mod implicit, dacă înainte de apelul "make menuconfig" nu există niciun fișier .config, faceți automat începe cu argumentul "defconfig". Astfel, utilizatorul va trebui doar să dezactiveze caracteristicile inutile. Există, de asemenea, o opțiune inversă: executarea face cu "allnoconfig" dezactivează toate opțiunile, astfel încât după aceea puteți selecta doar ceea ce aveți nevoie.

Mai mult, toate sunt tradiționale:

$ sudo face instalare

Lucrul cu BusyBox

Puteți lansa shell-ul BusyBox cu comanda:

Pentru un singur apel al unei funcții (de regulă, o funcție BusyBox implementează în mod limitat capabilitățile uneia dintre utilitarele GNU coreutils, util-linux și alte pachete standard), puteți utiliza comanda:

$ busybox <функция> [Cauza]

Aceasta este, de exemplu:

va arăta rezultatul executării comenzii "ls -l /" în BusyBox (vezi Figura 2) în shell-ul curent (de exemplu, bash).

Figura 2. BusyBox în funcțiune: ls

$ busybox --help <функция>

Acest lucru devine deosebit de important având în vedere faptul că utilitățile de bază din BusyBox sunt limitate în capacitățile lor, astfel încât lista de steaguri disponibile va fi diferită de cea pe care toate sunt folosite pentru a le vedea în instrumentele standard.

În plus față de coreutils alternative (ls, cat, mv, cp, rm, chmod, df, ln, data, wc, frumos, test), BusyBox include, de asemenea, multe alte programe.

Printre ei, în primul rând, este de a oferi mai multe scoici minimalist: cenușă (60 kb; ramură de la bord Debian, bazate pe cenușa NetBSD; nu este recomandat pentru utilizare cu BusyBox), Hush (18 Kb; înțelege Bourne shell gramatica) lsh (numai 10 KB, numai funcționalitatea cea mai simplă), msh (30 KB, shell minix).

Figura 3. Executarea scripturilor elementare în BusyBox

Nu văd nici un sens special în listarea tuturor funcțiilor BusyBox, așa că mă voi limita la statistici simple. În construirea BusyBox din portul Gentoo Linux sunt prezentate 241 de funcții (dar nu include tot ce se realizează în cadrul acestui proiect). Dacă luăm în considerare, de exemplu, ls, atunci versiunea BusyBox a acestui utilitar este disponibil 26 de steaguri, la fel ca în original, în cazul meu (LS GNU coreutils 6.7) - 55 (nu de numărare „ajutor“ și „versiune“). primul dintre steagurile care lipsesc pot fi distinse: -Q (numele în ghilimele), -m (virgulă listă delimitată), -U si -f (de ieșire, fără sortare lista). Alții, în opinia mea, sunt chiar mai puțin semnificative. Tendințele generale, cred, sunt evidente.

Figura 4. Unelte de rețea din "make menuconfig" BusyBox

Este important să se țină seama de specificul BusyBox, și anume - este poziționat și scopul real-cheie: pentru utilizare în medii cu limitări severe în memorie, nu necesită ca funcționalitatea sporită reprezentate de utilități moderne, sistem de bază.

Unde se utilizează BusyBox

BusyBox a găsit aplicații în sisteme, cum ar fi Linux Familiar (pentru PDA-uri) și MoviX (distribuția populară compactă, cu un set de multimedia Open Source de luare a) în programul de instalare Debian, Gentoo, Red Hat, Mandriva și alte proiecte, precum și mai multe pe bază de Linux (Sharp Zaurus, routere, AP).