Kompilace vs. stáhnuté obrazy
Zatím jsme si ukázali jak zkompilovat OpenWRT do RB433. V článku sice byla zmíněna i možnost získání obrazů někde jinde, ale může se stát, že obrazy buď nebudou vyhovovat nebo budeme potřebovat něco více specializovaného. Když se rozhodnete vzít jednu krabičku, která vám doma leží a najdete si pro ni již přichystaný obraz, bude vše pravděpodobně bez problémů a můžete si dovolit risknout OpenWRT i bez přístupu přes sériovou linku. Na druhou stranu když potřebujete mít obraz přichystaný pro několik zařízení, už bude situace složitější. S OpenWRT se bude lépe pracovat, když bude výsledný obraz vybaven vším co je potřeba. Takže krom základního systému můžeme vyžadovat Collectd pro statistiky, jiný DHCP server, routovací balík Quagga nebo třeba i bash. V krajních případech si třeba vzpomeneme, že potřebujeme přidat do jádra nějakou vlastnost která tam není. Kompilace v tomto případě nesvazuje ruce, a když jsme schopni si vytvořit obraz, nebudeme pak muset dlouze instalovat chybějící balíčky a řešit rozdílné chování na různých routerech.
Když si stáhnete zdrojové kódy OpenWRT z SVN, je výchozí konfigurace nastavena spíše na klientskou stranu. OpenWRT dokáže zastat svou práci i na páteřních spojích, které mají jiné požadavky než u klienta a byla by škoda nevyužít možnosti rozšíření ještě před vytvořením obrazu.
Plné OpenWRT vs. virtualizované
Než se pustíme do praktické části článku, podíváme se, jaké možnosti má virtualizované OpenWRT v RouterOS. Od Mikrotiku byla virtualizace dobrým krokem. Možnost vytvořit virtuální router neboli MetaROUTER, na kterém se může nový administrátor učit má určitě své kouzlo. RouterOS umožňuje připojit k virtuálnímu systému i fyzické rozhraní, takže OpenWRT může plně nahradit RouterOS, pokud jde o síťové služby. Těžko říci, jak velká bude ztráta výkonu, ale určitě by to bylo jako drbání se pravou nohou za levým uchem. Jelikož je RouterOS v síťových věcech relativně schopný (problémy s IPv6), hodí se OpenWRT k jeho doplnění. Pokud potřebujete v RouterOS rozjet webový server, databázi nebo podobné služby, je virtualizovaný OpenWRT ideální volbou.
Jak na OpenWRT jako MetaROUTER
Než se o něco pokusíme, potřebujeme obraz systému, který nahrajeme do RouterOS. Máme dvě možnosti, jak ho získat. První možnost je si aktuální obraz se systémem stáhnout z fóra Mikrotiku nebo aplikovat patch a zkompilovat systém podobně jako jsme to dělali v minulém díle. Patch bohužel není úplně bez problémový a prakticky se mi nepodařilo ho bez úprav aplikovat. Možná budete mít více štěstí.
Krom těchto věcí, musíme mít na stole RB4×x nebo RB1000 a dostatečně novou verzi RouterOS.
Kompilace
Dobrým zdrojem informací je Mikrotik wiki, kde je k nalezení jak patch tak obraz. Aktuálnější jsou ale k nalezení na zmíněném fóru. Pokusme se tedy OpenWRT zkompilovat.
Nejdříve si stáhneme vývojovou verzi OpenWRT z svn:
mkdir openwrt
cd openwrt
svn co svn://svn.openwrt.org/openwrt/trunk
cd trunk
Pak zajdeme na wiki a stáhneme si aktuální patch. Je třeba zmínit, že OpenWRT se stále mění a tak patch nemusí fungovat na všech revizích. Pokud se vyskytne nějaký problém, tak stačí použít „svn update -r [revize]“ a najít si nějakou starší a funkční.
wget http://www.mikrotik.com/download/openwrt-metarouter-1.1.patch
Máme-li patch stažený, zbývá ho aplikovat.
patch -p0 < openwrt-metarouter-1.1.patch
Když půjde vše dobře, spustíme si konfigurační menu.
make menuconfig
A v něm nastavíme Target System na „Mikrotik MetaROUTER [2.6]“. Pak přejdeme do menu Target Image, kde zaškrtneme tgz.
Dále se konfigurační postup shoduje s postupem z minulého článku. Po zkompilování je systém připravený v souboru openwrt-metarouter-rootfs.tgz.
Instalace do RouterOS
Instalace skřípe méně. Začneme tím, že zkopírujeme obraz do RouterBoardu.
$ scp openwrt-metarouter-rootfs.tgz admin@10.0.0.1:
Pak obraz naimportujeme.
[admin@MikroTik] > metarouter
[admin@MikroTik] /metarouter> import-image file-name=openwrt-metarouter-rootfs.tgz
imported: 100%
A ten by měl naběhnout. Ve výchozím stavu je velikost paměti nastavena na 16 MB, ale lze přidělit paměti více i méně. Krom shellu je samozřejmě možné použít i Winbox. Kde se to bude řadě uživatelů dělat lépe.
Než se pokusíme dostat do samotného virtuálního systému, dáme mu ještě přístup do sítě. Nejjednodušší je vytvořit bridge na některém z rozhraní nebo přidělit OpenWRT rozhraní staticky.
[admin@MikroTik] /metarouter> / interface bridge
[admin@MikroTik] /interface bridge> add
[admin@MikroTik] /interface bridge> port
[admin@MikroTik] /interface bridge port> add bridge=bridge1 interface=ether1
Tím jsme vytvořili bridge na prvním ethernetovém portu. Teď do stejného bridge přidáme virtuální rozhraní.
[admin@MikroTik] /interface bridge port> / metarouter
[admin@MikroTik] /metarouter interface>
[admin@MikroTik] /metarouter interface> add virtual-machine=mr2 dynamic-bridge=bridge1 type=dynamic
Přesvědčíme se, že se rozhraní přidalo.
[admin@MikroTik] /metarouter interface> / interface print
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE MTU
0 R wlan1 wlan 1500
1 R wlan2 wlan 1500
2 R ether1 ether 1500
3 ether2 ether 1500
4 ether3 ether 1500
5 R bridge1 bridge 1500
6 DR vif1 vif 1500
Zbývá připojit se do OpenWRT a nastavit mu adresu. To provedeme pomocí příkazu console.
[admin@MikroTik] /metarouter> console mr2
Objeví se nám příkazová řádka OpenWRT. Až provedeme, co potřebujeme, budeme se chtít určitě dostat zpět do RouterOS. Na to použijeme zkratku Ctrl+A a podle nápovědy zvolíme Q. Bohužel tato funkce nefunguje ve Screenu. Přístup k MetaROUTERům je ve Winboxu přeci jen příjemnější.
Přidáváme balíček do obrazu a upravujeme jádro
Abychom instalaci uzavřeli, ukážeme si ještě jak doplnit konfigurační proces o nové balíčky. Ty se pak objeví v konfiguračním menu a my si je můžeme přidat do obrazu. Také si ukážeme, jak upravit konfiguraci jádra a přidat některé vlastnosti, které se můžou hodit.
Nejdříve si musíme stáhnout repositář s balíčky. Jde o skripty, pomocí kterých se balíčky zkompilují.
$ cd ..
$ svn co svn://svn.openwrt.org/openwrt/packages
Teď bychom měli mít dva adresáře. Jeden je naše vývojová verze OpenWRT a druhý obsahuje hromadu balíčků. Prohlédneme si seznam balíčků a pokud chceme nějaký v našem obrazu, překopírujeme ho z jeho místa do trunk/packages.
$ cp packages/net/nmap trunk/package/ -R
$ cp packages/libs/libdnet trunk/package/ -R
$ cp packages/libs/uclibc++/ trunk/package/ -R
Teď když se podíváme do konfiguračního okna, uvidíme tam nmap. Nesmíme zapomenou nakopírovat i jeho závislosti. Ty najde v Makefilu každého z balíčků.
Pak už ho stačí jen zařadit a po kompilaci a instalaci ho najdeme již v systému.
Když chceme zasáhnout i do jádra systému, uděláme to pomocí:
$ make kernel_menuconfig
Objeví se nám klasický dialog pro konfiguraci jádra.
Závěr
V tomto díle jsme si dokončili téma instalace a zbývá nám už jen konfigurace. Ta je v mnohých případech velmi veselá, protože k některým věcem není dokumentace a nezbývá než hledat a domýšlet, ale o tom až příště.