Instalace OpenWRT do Mikrotik RouterBOARD 512

Mikrotik RouterBOARD 512O tom, že se zařízení Mikrotik RouterBOARD vyznačují vysokou spolehlivostí a kvalitně zpracovaným síťovým operačním systémem se asi nemá cenu zmiňovat. Může ale nastat situace, kdy jsme místo RouterOS nuceni nasadit jiný operační systém. Důvodem pro takovou změnu může být licenční politika Mikrotiku nebo absence pokročilejších vlastností. Právě druhá možnost byla tím, proč jsem se na zařízení rozhodl nainstalovat operační systém OpenWRT, konkrétně potřeba služby OpenVPN s podporou UDP a IPv6 skrze rozhraní TUN.

Pokud se podíváme do manuálu (Mikrotik RouterBOARD 500ugM) pro RouterBOARD série 500 zjistíme, že je podporována možnost instalace operačního systému GNU/Linux Debian s jádrem 2.4. Od roku 2006 se v linuxu změnilo a bylo přidáno nemálo vlastností, nehledě k tomu, že aktuální verze jádra poskočila přes řady 2.6 a 3 až 4.

Stále máme možnost nainstalovat prehistorickou verzi Debianu, ale taková změna určitě nedává smysl, a to zejména z důvodu praktické neexistence a nepodpory nejnovějších softwarových balíčků, ale také zastaveného vývoje jádra 2.4 se souvisejícími bezpečnostními updaty.

Popis hardware zařízení

Mikrotik RouterBOARD 512 (RB512) patří do série 500. Jednotlivé verze (RB511, RB512, RB532A, RB532p1 a RB532c) se od sebe odlišují rozdílnou hardwarovou výbavou. Na deskách můžeme 14 x 14 cm můžeme nalézt až dva MiniPCI sloty typu IIIA/IIIB, volitelně slot CompactFlash, až 128 MB NAND Flash, RS232C, minimálně jeden síťový port 10/100 Mb s podporou Auto-MDI/X, 32/64 MB SDRAM a CPU MIPS32 4Kc (mipsle) s taktem začínajícím na hodnotě 266 MHz.

Konkrétně verze RB512 obsahuje 128 MB NAND Flash, jeden síťový port, dva sloty MiniPCI a podporu PoE.

Mikrotik RouterBOARD 512

Bohužel díky absenci CompactFlash musí být operační systém instalován do paměti NAND Flash. Tím pádem přijdeme o původní systém RouterOS a, což může být pro pozdější návrat nepříjemné, licenci. A právě ztráta licence může být hlavním důvodem, proč na zařízení linux neinstalovat.

Připojení přes sériový port RS232C

USB - RS232 convertorV každém případě je nutné se k RB512 připojit přes sériový port (konektor DB9). Jedná se o standardní RS-232. Nemůžeme tedy použít běžný převodník USB-RS232-TTL (3,3 V/5 V), ale takový který převádí USB na úrovné klasické RS 232, tedy -12 V (o napětích a logických úrovních). Co je ovšem stejně důležité jako správný převodník je propojovací kabel. Ten musí být typu null-modem (křížené signály TxD a RxD).

Rychlost nastavíme 115200 baud, 8 datových bitů, 1 stop bit, bez parity, řízení toku XON/XOFF nebo žádné. Pro připojení můžeme použít např. PuTTY.

Přístup přes sériový port slouží k ovládání zavaděče operačního systému RouterBOOT a připojení na konzolu operačního systému.

Instalační průběh

Pro úspěšnou instalaci potřebujeme zdrojové kódy OpenWRT, DHCP/TFTP/web server.

  1. Přeložíme jádro OpenWRT a rootfs,
  2. překopírujeme jádro a rootfs na web server,
  3. stáhneme instalační OpenWRT obraz z internetu,
  4. nastavíme DHCP server,
  5. nastavíme RB512 pro start ze sítě pomocí DHCP,
  6. vymažeme NAND Flash – !!! pozor, přijdeme o licenci k RouterOS!!!,
  7. spustíme OpenWRT ze sítě,
  8. překopírujeme jádro a rootfs z web serveru do NAND Flash.

Příprava OpenWRT

O konfiguraci a kompilaci OpenWRT si lze přečíst v článku Sestavení operačního systému OpenWRT se specifickými vlastnostmi.

V konfiguračním režimu zvolíme cílový systém Mikrotik RouterBoard 532. Ten je kompatibilní pro celou řadu RouterBOARD 500.

Mikrotik RB512 - OpenWRTOstatní volby záleží na konkrétním použití.

Příklad konfigurace:

Máme-li nastaveno a zkompilováno, můžeme přistoupit k dalšímu kroku. Tím je přidání konfiguračního parametru do přeloženého jádra.

Přeložené jádro openwrt-rb532-vmlinux-kernel nalezneme v adresáři bin/rb532 OpenWRT. Spolu s ním je zde umístěn soubor openwrt-rb532-rootfs.tar.gz, který obsahuje kořenový adresář se všemi přeloženými balíčky.

NAND Flash RB512 je rozdělena na dvě logické části. To proto, že zavaděč RouterBOOT (BIOS) očekává v první (mtdblock0) jádro a ve druhé (mtdblock1) rootfs. Rozdělení je popsáno na stránkách OpenWRT věnující se konkrétně RB532. My potřebujeme jádro instruovat, kde má rootfs hledat. Za tímto účelem je k dispozici jaderný parametr root=. Pro jeho zapsání do jádra slouží nástroj objcopy, který je pro každou architekturu CPU jiný.
Než jej použijeme, musíme ho v systému najít. Díky tomu, že se nám povedlo jádro přeložit, je k dispozici i objcopy pro MIPS32/mipsel.

Vybereme např. /data/builder/openwrt/staging_dir/toolchain-mipsel_mips32_gcc-5.3.0_musl-1.1.14/initial/mipsel-openwrt-linux-musl/bin/objcopy. Můžeme použít i jiný, ale vždy je důležité zvolit správnou architekturu (MIPS32/mipsel = mipsel_mips32).

Nyní vytvoříme v adresáři s jádrem soubor kernel.params:

a připojíme jeho obsah k souboru s jádrem:

V tuto chvíli máme připraveno jádro k instalaci do NAND Flash RB512.

Jádro openwrt-rb532-vmlinux-kernel spolu se souborem openwrt-rb532-rootfs.tar.gz překopírujeme na web server.

Instalační obraz OpenWRT

Pro instalaci potřebujeme na RB512 spustit nějaký funkční obraz s potřebnými nástroji. Můžeme např. použít openwrt-rb532-vmlinux-initramfs.elf z wifi.ozo.comlokálně. Soubor je z roku 2015, ale pro nastartování prostředí pro instalaci postačí.

DHCP a TFTP server

Obraz openwrt-rb532-vmlinux-initramfs.elf z wifi.ozo.com (z předchozího odstavce) překopírujeme na náš TFTP server. O jeho instalaci se zmiňovat nebudu.

V konfiguračním souboru pro DHCP (viz Síťová infrastruktura pro domácí prostředí a malé firmy (SOHO) – síťové služby 2) musíme nastavit možnost stažení spustitelného obrazu OpenWRT z TFTP serveru:

Nastavení RB512 pro start ze sítě

RB512 podporuje start ze sítě pomocí protokolů DHCP a BOOTP.

V tomto kroku provedeme nastavení startu z DHCP.

Připojíme se přes sériový port a po připojení napájecího napětí k RB512 stiskneme na PC jakoukoli klávesu:

Změníme zařízení určené pro start systému:

Start z NAND Flash, v případě problému ze sítě – DHCP:

Následně vymažeme NAND Flash, proto je pro nás tato volba dostačující.

Vymazání NAND Flash

Při připojení přes sériový port vymažeme původní RouterOS:

Pokud máme připravený obraz OpenWRT na TFTP serveru a nastaven a restartován DHCP server, ukončíme RouterBOOT:

Start instalačního obrazu

V tuto chvíli by měla být z DHCP serveru získána IP adresa a umístění instalačního obrazu:

Pokud nedostaneme IP adresu nastevenou v nové konfiguraci DHCP serveru, překontrolujeme ji znovu.

Pokud nebyl stažen instalační obraz nebo nebyl rozpoznán, překonfigurujeme DHCP server a TFTP.

V případě, že vše proběhlo v pořádku, uvidíme start OpenWRT:

Instalace OpenWRT do NAND Flash

Jakmile je systém nastartován, připojíme první logickou část NAND Flash do adresáře /mnt:

Z našeho web serveru stáhneme nově zkompilované jádro a nastavíme jej jako spustitelné:

Odpojíme NAND Flash:

Podobně připojíme druhou logickou část NAND Flash:

Stáhneme a rozbalíme rootfs:

Odpojíme NAND Flash:

Provedeme restart:

Nově nainstalovaný a spuštěný systém

Pokud vše proběhlo bez problému, máme k dispozici námi přeložený operační systém OpenWRT:

Závěr

Popravdě, trvalo mi docela dlouho, než jsem úspěšně nainstaloval OpenWRT do NAND Flash. Ono není problém přeložit systém ze zdrojových kódů, ale protože není určen primárně pro RB512, ale pro RB532, očekává se instalace na CompactFlash, která u RB512 bohužel chybí.

Pokud chceme provést update, je nejlepším způsobem zálohování nastavení, kompletní reinstalace a opětovné obnovení zazálohovaných dat.

3 komentáře u „Instalace OpenWRT do Mikrotik RouterBOARD 512

  1. Pingback: Anonymous transparent proxy through Tor on OpenWRT/LEDE | brichacek.net

  2. Vladimir

    Dobry den,
    instaluji Open WRT do RB433. Vše proběhlo ok,
    postup s malými změnami mohu poslat.
    Nyní jsem zasekly na příkazu mount,
    abych připojil NAND do adresare nmt.
    NAND mám již vymazaný parametrem „e“

    Nejde mount, zde je vysledek:
    list mtd je takto:

    root@OpenWrt:~# cat /proc/mtd
    dev: size erasesize name
    mtd0: 0000b000 00001000 „routerboot“
    mtd1: 00001000 00001000 „hard_config“
    mtd2: 00002000 00001000 „bios“
    mtd3: 00001000 00001000 „soft_config“
    mtd4: 00040000 00004000 „booter“
    mtd5: 003c0000 00004000 „kernel“
    mtd6: 03c00000 00004000 „ubi“
    root@OpenWrt:~#

    root@OpenWrt:~# mount /dev/mtdblock1 /mnt/
    mount: mounting /dev/mtdblock1 on /mnt/ failed: Invalid argument

    Nevíte proč?

Leave a Reply