FreeNAS: Úprava embedded verze

Při stavbě síťového úložiště jsem se nějakou dobou zabýval systémem FreeNAS, linuxovou distribucí určenou právě pro zařízení NAS. Než jsem ho definitivně zavrhl, vyzkoušel jsem na nich několik ne zcela obvyklých postupů, o které by myslím bylo škoda přijít jen proto, že mě FreeNAS svou pomalostí odradil. Tady je první z nich: Jak si do embedded verze FreeNASu doplnit svoje programy.

O co jde: FreeNAS lze nainstalovat dvěma velmi odlišnými způsoby: jako plný operační systém nebo jako embedded verzi. Pokud chcete FreeNAS upravovat, je vám všude možně důrazně doporučováno použít plnou verzi; to ovšem znamená nutnost vzdát se výhod embedded verze, zejména možnost spouštět ji z libovolného média (včetně flashdisků a CD) a zvláštní vhodnosti pro SSD disky (protože embedded FreeNAS je nahraný na ramdisku a na své zdrojové médium „sahá“ jen minimálně). Já jsem se toho vzdávat nechtěl, standardní embedded verze mi ale nestačila (rád používám kvalitní diskové řadiče, které vesměs lze ovládat přes vlastní webové rozhraní, pokud jen spustíte příslušný program). Proto jsem hledal, jak si embedded FreeNAS upravit – a zde je výsledek. Dokonce k němu ani nepotřebujete samostatný počítač s linuxem, vystačíte si se samotným FreeNASem a eventuelně jednou Windowsovou stanicí. Předpokladem je, že máte nainstalovaný funkční FreeNAS, který chcete jen rozšířit.

  1. Přihlašte se do konzole (shellu)

    Do konzole FreeNASu se dá dostat několika způsoby. Nejjednodušší to je, pokud máte u NASu připojenou klávesnici a monitor, protože pak stačí vybrat příslušnou položku v menu. Pokud klávesnici a/nebo monitor nemáte, můžete povolit SSH/Telnet server a připojit se pak k FreeNASu vhodným terminálovým programem, např. Putty (ale klidně by stačil i obyčejny Telnet, kdyby ho Microsoft ve své nezměrné moudrosti ze standardní instalace novějších Windows neodstranil).

  2. Přesuňte se do adresáře, kde je dost místa

    Nejjednodušší je, využít některého z připojených datových disků. V mém případě se datový disk jmenoval Samsung1500, takže jsem pro přesun na něj použil příkaz:

    cd /mnt/Samsung1500
  3. Zkopírujte na něj FreeNAS

    Obraz souborového systému FreeNASu, tedy to, z čeho se po každém bootu vytvoří ramdisk, je v souboru /cf/mfsroot.gz. Příkaz pro zkopírování tedy je:

    cp /cf/mfsroot.gz .
  4. Rozbalte ho

    Upřímně řečeno, nejsem si jistý, nakolik je tento krok nezbytný – s linuxem se vesměs potýkám jen jako jeho oběť, ne jako jeho vládce. Jsem si skoro jistý, že jde tento obraz připojit jako ramdisk i bez dekomprese – konečně, dělá to i sám FreeNAS při svém startu. Já to ale neumím, proto radši přidávám „zbytečný“ krok, který mě ale dostane do situace, kterou řešit umím.

    gunzip mfsroot.gz
  5. Připojte rozbalený image jako ramdisk

    mdconfig -a -t vnode -f mfsroot

    Je důležité podívat se na výstup programu mdconfig, protože se z něj dozvíte, pod jakým zařízením byl ten ramdisk vytvořen. V mém případě to bylo zařízení md2.

  6. Připojte ramdisk do přístupného adresáře

    Pokud chci k obsahu ramdisku přistupovat, musím ho přimountovat do nějakého adresáře. Protože k němu chci přistupovat pohodlně, je vhodné, aby to byl adresář, který mám přístupný z Windows přes Windowsovské sdílení. Obojího dosáhnu, když ramdisk připojím do adresáře na datovém disku:

    mkdir ramdisk
    mount /dev/md2 ramdisk

    To md2 v druhém příkazu je právě zařízení ramdisku z předchozího bodu.

  7. Upravte obsah ramdisku

    Teď mám na sdíleném disku adresář ramdisk, ve kterém mám rozbalenou kopii embedded FreeNASu. Tu mohu celkem libovolně upravovat. V mém případě, kdy bylo cílem zprovoznit webové rozhraní řadiče Areca ARC-1120, to znamenalo:

    1. Nakopírovat do ramdiskového adresáře /usr/bin program archttp32 to jsem udělal z Windows.
    2. Vytvořit v /usr/bin konfigurační soubor. Způsobů je několik, mimo jiné lze převzít soubor archttpsrv.conf z Windowsovské verze ArcHttp, případně stačí archttp32 spustit a on si ten soubor vytvoří sám, pokud nenajde existující.
    3. Nastavit programu archttp32, že je spustitelný, příkazem:
      chmod 755 ramdisk/usr/bin/archttp32

    Téměř totožným postupem jde nainstalovat webové rozhraní pro řadiče 3WARE.

  8. Odpojte ramdisk

    umount ramdisk
    mdconfig -d -u md2

    V druhém příkazu opět vystupuje název zařízení z kroku 5.

  9. Znovu zkomprimujte image FreeNASu

    (Teď už ale komprimujeme opravený obraz)

    gzip mfsroot
  10. Připojte bootovací disk pro zápis

    Tohle je stěžejní bod celého postupu. Všechno předešlé je dosti přímočaré a jednoduché, ale narazíte na to, že nahradit původní image novým není úplně jednoduchá záležitost: starý image sice můžete přepsat, ale po resetu bude zpátky :-). Finta je v tom, že je třeba odpojit původně připojenou verzi, připojit ji znovu, ale v režimu pro zápis, a teprve pak přepsat původní image opraveným.

    Jedna nepříjemnost je, že podobně jako v bodu 5 existuje variabilita v tom, kde vlastně ten image fyzicky leží. Musíte se napřed příkazem mount podívat. Takto třeba vypadal výstup na mém FreeNASu:

    /dev/md0 on / (ufs, local)
    devfs on /dev (devfs, local)
    procfs on /proc (procfs, local)
    /dev/raid5/Samsung1500p1 on /mnt/Samsung1500 (ufs, local, soft-updates, acls)
    /dev/md1 on /var (ufs, local)
    /dev/da0.elip1 on /mnt/Areca (ufs, local, soft-updates, acls)
    /dev/ad0s1 on /cf (ufs, local, read-only)

    Klíčový je ten řádek, který říká, které zařízení je namountováno do adresáře /cf. V mém případě to byl poslední řádek, ve vašem se podívejte, na kterém z nich se /cf vyskytuje. Z tohoto řádku budete potřebovat jeho první část, která právě identifikuje fyzický disk. V mém případě to tedy je /dev/ad0s1.

    Pak už jde o jednoduchou sekvenci několika příkazů:

    umount /cf
    mount /dev/ad0s1 /cf
    cp mfsroot.gz /cf
    umount /cf
    mount -a

    První dva příkazy odpojí disk s embedded obrazem a připojí ho znovu, ale tentokrát v zapisovacím režimu. Třetí příkaz přepíše starý obraz novým. Čtvrtý a pátý příkaz obnoví připojení disků do podoby, v jaké byly při startu FreeNASu.

Poslední krok tak, jak je uveden, funguje v případech, kdy se FreeNAS spouští ze samostatného disku, ale určitě nefunguje u CD a nejsem si jistý funkčností u flashdisku na USB. Existuje ale alternativní cesta: když už máte nový image zkomprimovaný na nasdíleném datovém disku, můžete ho docela klidně zkopírovat do vašeho Windowsovského počítače a pak ho nějak propsat do ISO obrazu instalačního CD; postupů je víc podle úrovně vašich znalostí, jedním z těch jednodušších způsobů je využití nástroje WinImage. Výsledek je každopádně ten, že budete mít obraz CD s novým, upraveným embedded FreeNASem; tento obraz pak obvyklým způsobem vypálíte a můžete z něj FreeNAS nainstalovat, kolikrát jen budete chtít.

Alternativní řešení s ISO souborem má také tu výhodu, že u něj nehrozí nebezpečí, že se upravený embedded FreeNAS na bootovací disk nevejde – instalátor FreeNASu se sám postará, aby měl na nový image dost místa…

 

Upřímně řečeno, že by to byl zrovna jednoduchý a přímočarý postup, to říci nemůžu. Má ale jednu zásadní výhodu: funguje, přinejmenším s FreeNASem 0.6.xx až 0.7.1 a řadiči od firem 3WARE a ARECA. S jednou výhradou: v návodu se zabývám tím, jak nahrát příslušné utility do FreeNASu, aby tam byly trvale k dispozici; neřeším, jak zajistit jejich automatické spouštění po startu systému. Kdysi, s utilitou od 3WARE, jsem na to přišel, ani to nebylo nic těžkého – ale když jsem se to pokoušel nedávno zopakovat s programem od ARECY, tak se mi ten jednoduchý způsob prostě najít nepodařilo. Nakonec jsem to řešil tak, že jsem archttp32 po každém restartu spouštěl z terminálu ručně; vzhledem k tomu, že FreeNAS je schopen běžet měsíce bez resetu, to není až takový problém…

Podobné příspěvky:

5 komentářů “FreeNAS: Úprava embedded verze”

  1. avatar pepak napsal:

    VS: To opravdu nevím, Linuxové systémy znám jenom z rychlíku. Je klidně možné, že existuje efektivnější způsob, jak dosáhnout stejného výsledku, než popisuji.

  2. avatar VS napsal:

    Nešlo by použít (respektive na Linuxu by použít šlo, na FreeBSD nevím):

    1+2. řádek nahradit:
    mount -o remount,rw /cf

    4+5. řádek:
    mount -o remount,ro /cf

  3. avatar pepak napsal:

    Ano, vím, že z nějakých důvodů není FreeBSD puristy považováno za Linux. Mě je to upřímně řečeno fuk – pokud to vypadá jako Linux a chová se to jako Linux, budu to považovat za Linux – přinejmenším v situacích, kde potřebuji nějaké stručné přídavné jméno. Každopádně to tady nechci řešit; jeden příspěvek a odpověď tu zůstane, abych to nemusel příště vysvětlovat znovu, ale to bude vše. Díky za pochopení.

  4. avatar Messa napsal:

    Drobná oprava: FreeNAS není Linuxovou distribucí…

  5. avatar pepak napsal:

    Diskusi o rychlosti a stabilitě FreeNASu jsem přesunul na diskusního fóra.

    Tady nechám jen odkaz na MJ12ův článek o FreeNASu, který z větší části odpovídá i mým zkušenostem (tedy v těch částech, které jsem ve FreeNASu zkoušel): Je FreeNAS řešení pro domácí souborový server?

Leave a Reply

Themocracy iconWordPress Themes

css.php