20170626_jeffrey - silenceuncrio/diary GitHub Wiki

0905

review

上禮拜五忘了估 RIP I/II, RSTPOSPF 的 schedule

RIP 抓個 15 個 工作天

OSPF 也抓 15 個 工作天

RSTP 先抓個 20 個 工作天

Job Owner From To
VRRP Jeffrey 5/12 7/14
RIP I/II Jeffrey 7/17 8/4
OSPF Jeffrey 8/7 8/25
RSTP Jeffrey 8/28 9/22

0925

趕緊估一下 schedule 並 mail 給 ariel

0950

engineering notebook

上禮拜四的假卡

1000

base on 上禮拜五的 VRRP 測試環境 topology 再加強一下

+-------------+
|DHCP Server  |
|192.168.0.250|
+---+---------+
    |
    +----------------------+---+ WAN
    |                      |
+---+----------------+ +---+----------------+
|M300                | |M301                |
|* WAN: DHCP Client  | |* WAN: DHCP Client  |
|* LAN: 192.168.1.100| |* LAN: 192.168.1.101|
+---+----------------+ +---+----------------+
    |                      |
    +----------------------+---+ LAN
    |
+---+----------------+
|PC                  |
|* LAN: 192.168.1.1  |
|* GW:  192.168.1.100|
+--------------------+

M300M300 的 VRRP 服務未啟動的時候

PC 要能 ping 到 WAN Subnet 的 device (ex. DHCP Server - 192.168.0.250)

須根據 PC 的 default gateway 設定

  • 192.168.1.100 - 經由 M300
  • 192.168.1.101 - 經由 M301

1135

目前 M300 interface 設定如下

root@Mobile Router:~# ifconfig
...
eth1      Link encap:Ethernet  HWaddr 00:03:79:03:00:01
          inet addr:192.168.0.82  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::203:79ff:fe03:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:322 errors:0 dropped:12 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:34347 (33.5 KiB)  TX bytes:3831 (3.7 KiB)

lan       Link encap:Ethernet  HWaddr 00:03:79:03:00:00
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::203:79ff:fe03:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:314 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:49704 (48.5 KiB)  TX bytes:738 (738.0 B)

M301 interface 設定如下

root@Mobile Router:~# ifconfig
...
eth1      Link encap:Ethernet  HWaddr 00:03:79:03:01:01
          inet addr:192.168.0.83  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::203:79ff:fe03:101/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2564 errors:0 dropped:105 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:270297 (263.9 KiB)  TX bytes:4462 (4.3 KiB)

lan       Link encap:Ethernet  HWaddr 00:03:79:03:01:00
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::203:79ff:fe03:100/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:358 (358.0 B)  TX bytes:738 (738.0 B)

目前 PC 已能 ping 通 WAN Subnet 的 DHCP Server(192.168.0.250)

已經利用 tracepath 確認 path 符合 PC 的 default gateway 設定

基本環境已經配置完畢

再來就是讓 VRRP 上場了

1300

加了 VRRP 這個抽象層之後

+-------------+
|DHCP Server  |
|192.168.0.250|
+---+---------+
    |
    +----------------------+---+ WAN
    |                      |
+---+----------------+ +---+----------------+
|M300                | |M301                |
|* WAN: DHCP Client  | |* WAN: DHCP Client  |
|* LAN: 192.168.1.100| |* LAN: 192.168.1.101|
+---+----------------+ +---+----------------+
    |                      |
+---+----------------------+----------------+
|Virtual Router: 192.168.1.200              |
+---+---------------------------------------+
    |
    +--------------------------+ LAN
    |
+---+----------------+
|PC                  |
|* LAN: 192.168.1.1  |
|* GW:  192.168.1.200|
+--------------------+

PC 端的 GW 設定只要填 Virtual Router 的 IP 即可

這樣一便能享受 M300M301 提供的 Virtual Router 功能

M300M301 上面的 VRRP 功能該怎麼設定呢?

參考

試著寫一個最簡單的 configuration

M300 - /etc/keepalived/keepalived.conf

vrrp_instance m30x {
  state MASTER
  interface lan
  virtual_router_id 200
  priority 150
  advert_int 1
  virtual_ipaddress {
    192.168.1.200
  }
}

M301 - /etc/keepalived/keepalived.conf

vrrp_instance m30x {
  state BACKUP
  interface lan
  virtual_router_id 200
  priority 160
  advert_int 1
  virtual_ipaddress {
    192.168.1.200
  }
}

1410

試著利用 /etc/init.d/keepalived 來啟動 keepalived

root@Mobile Router:~# /etc/init.d/keepalived
Usage: /etc/init.d/keepalived {start|stop|reload|restart|condrestart|status}

先從 M300 開始

root@Mobile Router:~# /etc/init.d/keepalived start
Starting keepalived: /etc/init.d/keepalived: line 23: daemon: command not found

看一下 /etc/init.d/keepalivedstart()

start() {
    echo -n $"Starting $prog: "
    daemon keepalived ${KEEPALIVED_OPTIONS}
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}

來看看怎麼在 M300 補上 daemon 這個 command

1420

不確定是不是 daemontools_0.76.bb 這個 recipe

修改 meta-proscend/recipes-core/prosrc/prosrc_0.1.bb

RDEPENDS_${PN} 加上 daemontools

diff --git a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
index 234d9fe..5b3cba4 100644
--- a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
+++ b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
@@ -22,7 +22,7 @@ RDEPENDS_${PN} += "GobiNet-mod"
 RDEPENDS_${PN} += "8192du-mod wireless-tools rng-tools hostapd wpa-supplicant"
 # Ethx tool
 RDEPENDS_${PN} += "ethtool"
-RDEPENDS_${PN} += "ppp ppp-oe iptables iperf dnsmasq pptp-linux bridge-utils dhcp-server dhcp-client openvpn openssl openssl-conf iproute2 iproute2-tc procps socat strongswan cryptodev-module mtd-utils mtd-utils-ubifs imx-kobs tar bzip2 jq shadow libqmi net-snmp net-snmp-server-snmpd mosquitto keepalived"
+RDEPENDS_${PN} += "ppp ppp-oe iptables iperf dnsmasq pptp-linux bridge-utils dhcp-server dhcp-client openvpn openssl openssl-conf iproute2 iproute2-tc procps socat strongswan cryptodev-module mtd-utils mtd-utils-ubifs imx-kobs tar bzip2 jq shadow libqmi net-snmp net-snmp-server-snmpd mosquitto daemontools keepalived"
 # ======================================
 
 # Build dependence

直接 compile 看看吧

1430

compile 過了

先從 M300 來做 firmware upgrade

firmware upgrade 完還是沒有 daemon 這個 command

還原 meta-proscend/recipes-core/prosrc/prosrc_0.1.bb

1525

試一下 start-stop-daemon_1.16.0.2.bb 這個 recipe

直接用 bitbake 先試試

build@2f192722794e:/var/m300/build_small$ bitbake start-stop-daemon
Loading cache: 100% |##################################################################| ETA:  00:00:00
Loaded 2760 entries from dependency cache.
ERROR: Nothing PROVIDES 'start-stop-daemon'
ERROR: start-stop-daemon was skipped: Recipe is blacklisted: BROKEN: fails because of gettext, partial fix is available here http://patchwork.openembedded.org/patch/89867/

1540

參考 5.21.1. Using systemd Exclusively

看看會怎麼影響到 keepalived

修改 meta-proscend/conf/distro/proscend-m300.conf

diff --git a/meta-proscend/conf/distro/proscend-m300.conf b/meta-proscend/conf/distro/proscend-m300.conf
index 117abd2..bca65d7 100644
--- a/meta-proscend/conf/distro/proscend-m300.conf
+++ b/meta-proscend/conf/distro/proscend-m300.conf
@@ -39,15 +39,18 @@ DISTRO_FEATURES_LIBC = " \
 "
 
 # Ariel: After take off noisy parts
-DISTRO_FEATURES_append += " usbgadget usbhost pci"
+DISTRO_FEATURES_append += " usbgadget usbhost pci systemd"
 
 # Ariel: After take off noisy parts
 IMAGE_INSTALL_append +=  " prosrc"
 
 RM_OLD_IMAGE = "1"
 
-VIRTUAL-RUNTIME_init_manager = "sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
 
+DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
+
+VIRTUAL-RUNTIME_initscripts = ""
 
 # Image level user/group configuration.
 # Inherit extrausers to make the setting of EXTRA_USERS_PARAMS effective.

直接 compile

感覺很多東西都要重 build

就先等等吧

1600

稍微 google 了一下 sysvinitsystemd

發現我這樣一改下去茲事體大

連目前的 rc.local 要動起來都有問題

馬上放棄...

1800

在 M300 的 shell 可以使用 logread | grep keepalived 來打印 keepalived 的相關 Log

目前發現 keepalived 瘋狂的打印 message...

killall keepalived 後可利用 WEB UI 來清除 log

原因待查

⚠️ **GitHub.com Fallback** ⚠️