Uruchomienie OpenWrt jako wirtualnego obrazu w MikroTik na RouterOS
Ostatnia zmiana: 2013-11-26 18:43

Metarouter jest systemem wirtualizacji zastosowanym w systemie operacyjnym urządzeń MikroTik, czyli RouterOS. Można na nim uruchomić m.in. OpenWrt. Szczegóły proces uruchomienia i konfiguracji opisuje angielskojęzyczne wiki MikroTika: http://wiki.mikrotik.com/wiki/Manual:Metarouter, dostępne jest także tłumaczenie na polskim wiki. Poniżej przedstawiono szybki proces konfiguracji w RouterBOARD RB2011-UAS z RouterOS v5.22.

Pobieranie obrazu

MikroTik udostępnia specjalne łatki umożliwiające samodzielną budowę wymaganych obrazów. Jednakże można także posłużyć się udostępnionymi gotowymi obrazami. Dla wspomnianego urządzenia (platforma mipsbe) należy pobrać ten plik. Jest to dość stary build (w chwili pisania - r20828, trunk/kamikaze), jednakże pozwala na zapoznanie się z działaniem systemu.
Pobrany plik należy przesłać do urządzenia wykorzystując WebFig (menu Files) lub po prostu skopiować do routera poleceniem scp:


    $ scp Pobrane/openwrt-mr-ppc-rootfs.tgz admin@192.168.88.1:

Tworzenie nowego systemu

Logujemy się do MT, tworzymy nową instancję systemu. Określono tu także ilość dostępnej ilości pamięci RAM dla wirtualki (32MB).


    $ telnet 192.168.88.1 

    Login: admin
    Password: 

    MMM      MMM       KKK                          TTTTTTTTTTT      KKK
    MMMM    MMMM       KKK                          TTTTTTTTTTT      KKK
    MMM MMMM MMM  III  KKK  KKK  RRRRRR     OOOOOO      TTT     III  KKK  KKK
    MMM  MM  MMM  III  KKKKK     RRR  RRR  OOO  OOO     TTT     III  KKKKK
    MMM      MMM  III  KKK KKK   RRRRRR    OOO  OOO     TTT     III  KKK KKK
    MMM      MMM  III  KKK  KKK  RRR  RRR   OOOOOO      TTT     III  KKK  KKK

    MikroTik RouterOS 5.22 (c) 1999-2012       http://www.mikrotik.com/

    [admin@MikroTik] > 
    [admin@MikroTik] > metarouter 
    [admin@MikroTik] /metarouter>  
    [admin@MikroTik] /metarouter> import-image file-name=openwrt-mr-mips-rootfs.tgz memory-size=32
    [admin@MikroTik] /metarouter> print
    Flags: X - disabled 
    #   NAME MEMORY-SIZE DISK-SIZE USED-DISK STATE        
    0   mr3  32MiB       unlimited 5140kiB   running

Konfiguracja interfejsu sieciowego

W tym przypadku przyjęto najprostsze rozwiązanie - należy utworzyć wirtualny interfejs i zrobić bridge pomiędzy nim a istniejącym interfejsem fizycznym MT. Należy odczytać listę interfejsów MT:


    [admin@MikroTik] > /interface print 
    Flags: D - dynamic, X - disabled, R - running, S - slave 
    #     NAME                    TYPE               MTU L2MTU  MAX-L2MTU
    0     sfp1-gateway            ether             1500  1598       4074
    1     ether1-gateway          ether             1500  1598       4074
    2     ether2                  ether             1500  1598       4074
    3     ether3                  ether             1500  1598       4074
    4     ether4                  ether             1500  1598       4074
    5  R  ether5                  ether             1500  1598       4074
    6     ether6-master-local     ether             1500  1598       2028
    7     ether7-slave-local      ether             1500  1598       2028
    8     ether8-slave-local      ether             1500  1598       2028
    9     ether9-slave-local      ether             1500  1598       2028
    10     ether10-slave-local    ether             1500  1598       2028
    11  R  bridge-local           bridge            1500  1598

W tym przypadku był to bridge-local. Tworzymy więc nowy interfejs wirtualny dla naszego OpenWrt


    [admin@MikroTik] /metarouter> interface add virtual-machine=mr3 type=dynamic  dynamic-bridge=bridge-local

Należy teraz podłączyć się do uruchomionego obrazu i zmienić adres interfejsu lan na np. 192.168.88.2


    [admin@MikroTik] /metarouter> console 0

    [Ctrl-A is the prefix key]

    root@OpenWrt:/# uci set network.lan.ipaddr=192.168.88.2
    root@OpenWrt:/# uci commit
    root@OpenWrt:/# /etc/init.d/network restart


Poniżej bootlog działającej maszyny wirtualnej OpenWrt:


root@OpenWrt:/# dmesg 
Linux version 2.6.31.10 (maris@bumba) (gcc version 4.3.3 (GCC) ) #1 Tue Apr 13 10:46:14 EEST 2010
CPU revision is: 0001800a (MIPS 4Kc)
Determined physical RAM map:
User-defined physical RAM map:
    memory: 01000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Zone PFN ranges:
        Normal   0x00000000 -> 0x00001000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
                0: 0x00000000 -> 0x00001000
On node 0 totalpages: 4096
free_area_init_node: node 0, pgdat c031dba0, node_mem_map c035a000
        Normal zone: 32 pages used for memmap
        Normal zone: 0 pages reserved
        Normal zone: 4064 pages, LIFO batch:0
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
Kernel command line: init=/etc/preinit console=hvc0 board=vm mem=16M 
PID hash table entries: 64 (order: 6, 256 bytes)
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
Memory: 12808k/16384k available (1881k kernel code, 3576k reserved, 287k data, 120k init, 0k highmem)
NR_IRQS:128
console [hvc0] enabled
Calibrating delay loop... 262.14 BogoMIPS (lpj=524288)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
MFS init
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Registering mini_fo version $Id$
msgmni has been set to 25
io scheduler noop registered
io scheduler deadline registered (default)
TCP westwood registered
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (metafs filesystem) readonly on device 0:10.
Freeing unused kernel memory: 120k freed
Please be patient, while OpenWrt loads ...
device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering forwarding state
PPP generic driver version 2.4.2
ip_tables: (C) 2000-2006 Netfilter Core Team
NET: Registered protocol family 24
nf_conntrack version 0.5.0 (256 buckets, 1024 max)
root@OpenWrt:/# cat /proc/cpuinfo 
system type		: Mikrotik MetaROUTER
processor		: 0
cpu model		: MIPS 4Kc V0.10
BogoMIPS		: 262.14
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 16
extra interrupt vector	: yes
hardware watchpoint	: yes, count: 1, address/irw mask: [0x0000]
ASEs implemented	: mips16
shadow register sets	: 1
core			: 0
VCED exceptions		: not available
VCEI exceptions		: not available