Produkty Novinky Články Návody Kontakty

Busybox

Existence Busybox je pro svět embedded zařízení velmi důležitým milníkem a pro vývojáře, kteří si sestavují vlastní linuxovou ”embedded” distribuci pravým požehnáním. Nahrazuje totiž většinu unixových a shellových utilit (příkazů) a tím pádem i množství spustitelných souborů jedním jediným spustitelným souborem.
Protože byl Busybox od základu vyvíjen s důrazem na nízké nároky, je schopen poskytnout kompletní prostředí pro většinu embedded zařízení při skutečně minimálních požadavcích na systémové prostředky.
Daní za tuto minimalizaci linuxového prostředí (rozuměj sadu standardních příkazů a utilit) je to, že verze příkazů implementovaných v Busyboxu nepodporují všechny volby a parametry svých protějšků z běžných linuxových distribucí. Což je ovšem s ohledem na poměr výkon/nároky Busyboxu nízká daň.
Říkáte si jak může jeden spustitelný soubor nahradit několik spustitelných souborů s implementací jednotlivých příkazů? Snadno. Spustitelné soubory jednotlivých příkazů jsou v případě Busyboxu nahrazeny tzv. aplety. Což jsou vlastně jen symbolické odkazy na onen jeden jediný spustitelný soubor Busyboxu pojmenované stejně jako podporované příkazy. Aplety zajistí, že je spustitelný soubor Busyboxu je volán s názvem příkazu jako parametr. Busybox tak pozná, jakou funkcionalitu má pro dané konkrétní volání poskytnout, tedy jaký příkaz má realizovat.

Sestavení

Busybox se sestavuje ze zdrojových kódů a podobně jako linuxové jádro se jeho vlastnosti, tj. sada podporovaných příkazů a funkcí, konfiguruje přes menu. Samotná instalace spustitelného souboru Busyboxu a všech apletů je jednoduchá, Busybox provede nakopírování potřebných souborů a symbolických odkazů pomocí instalačního skriptu.
Postup:
  1. Ze stránek BusyboxuInformationhttp://www.busybox.net/ si stáhneme balíček s poslední stabilní verzí zdrojových kódů. V dalším textu předpokládáme verzi 1.18.5.
  2. Balíček rozbalíme v nějakém pomocném adresáři:
    $ tar -xjf busybox-1.18.5.tar.bz2
    
    čímž vznikne adresář se zdrojovými kódy Busyboxu, např. busybox-1.18.5/.
  3. Nainstalujeme si knihovnu libncurses5-dev, která slouží pro generování menu a kterou vyžaduje konfigurátor Busyboxu:
    # apt-get update
    # apt-get install libncurses5-dev
    
  4. V adresáři se zdrojovými kódy pak spustíme konfigurátor Busyboxu:
    $ make menuconfig
    
    Měli bychom vidět obrazovku s menu konfigurátoru podobně jako na obrázku 1.3.
    obrázek busybox-konfigurator
    Obrázek 1.3 Busybox - menu konfigurátoru
    Pokud něco pokazíme, tak stačí zavolat příkaz:
    $ make distclean
    
    který všechny vygenerované soubory včetně konfiguračního souboru .config smaže.
  5. Provedeme konfiguraci Busyboxu - projdeme všechny menu a pomocí mezerníku zapneme nebo naopak vypneme danou volbu oproti výchozímu nastavení. O úroveň výš se vrátíme stisknutím klávesy Esc. Konfiguraci ukončíme dvojstiskem klávesy Esc v nejvyšší úrovni menu (výchozí obrazovka po spuštění konfigurátoru). Naši konfiguraci uložíme - konfigurátor ji zapíše do souboru .config, který následně použijeme při sestavení Busyboxu.
    Zmiňme ve zkratce hlavní změny oproti výchozí konfiguraci:
    1. Jsou vypnuty volby vhodné pro plnohodnotnou linuxovou distribuci.
    2. Jsou vypnuty mailové služby.
    3. Jsou vypnuty tiskové služby.
    4. Je vypnuta podpora zjednodušených utilit pro práci s moduly jádra.
    5. Je zapnuta podpora všech utilit pro práci s moduly jádra (insmod, modprobe, atd.)
    6. Je vypnuta podpora různých méně významných de/komprimačních nástrojů
    7. Z dostupných shellů je ponechána podpora pouze ash shellu.
    8. Je vypnuta podpora textového editoru ed.
  6. Jestliže máme v adresáři s Busyboxem konfigurační soubor .config můžeme spustit sestavení Busyboxu:
    $ make
    

Instalace

  1. Instalaci spustitelného Busyboxu a všech potřebných apletů do RFS naší distribuce provedeme příkazem:
    $ make CONFIG_PREFIX=/home/emlin/mylindist-root install
    
  2. Posledním krokem je nastavení setuid bit na spustitelném souboru Busyboxu - bin/busybox, aby aplety které pro svoji činnost vyžadují práva superuživatele, mohli být spuštěny i ostatními uživateli. Nastavení setuid bitu provedeme příkazem:
    $ chmod +s bin/busybox
    
    Přístupová práva pak musí být na souboru bin/busybox (kontrola příkazem $ ls -l bin/busybox) nastavena takto: -rwsr-sr-x.
Poznámka: Konfiguraci Busyboxu by šlo samozřejmě dále upravovat přesně na míru daného cílového zařízení a dosáhnout tak ještě menší velikosti spustitelného souboru Busyboxu. Pro naše účely však nemá cenu trávit na konfigurací příliš mnoho času.