就是 ps command 執行的結果
# ps <enter>
PID USER VSZ STAT COMMAND 1 root 1520 S init
系統中的Thread監督器,安排Thread的執行,就是以前的Process management。
2 root 0 SW [kthreadd]
Softirq 的Deamon程式。3 root 0 SW [ksoftirqd/0]
Handling of asynchronous events
4 root 0 SW [events/0]
主要作用是指定使用者空間的程式路徑和環境變數。
5 root 0 SW [khelper] 6 root 0 SW [async/mgr] 7 root 0 SW [ruby_pm/0] 8 root 0 SW [sync_supers] 9 root 0 SW [bdi-default] 10 root 0 SW [kblockd/0] 11 root 0 SW [kswapd0] 12 root 0 SW [mtdblock0] 13 root 0 SW [mtdblock1] 14 root 0 SW [mtdblock2] 15 root 0 SW [mtdblock3] 16 root 0 SW [mtdblock4] 17 root 0 SW [mtdblock5]
這裡要多講一下。這個是NOR Flash的System Deamon,說明系統有六個Partitions,至於每個Partition的SIZE,可以由下面的命令之中查到,每個Block是64KByte。
# cat /proc/partitions <Enter> major minor #blocks name 31 0 128 mtdblock0 31 1 64 mtdblock1 31 2 64 mtdblock2 31 3 10112 mtdblock3 31 4 10112 mtdblock4 31 5 12288 mtdblock5
目前其實只有mtdblock5是被建成的檔案系統。
# mount <Enter>
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
/dev/mtdblock5 on /mnt/mtd type jffs2 (rw,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
再看一下用途:
# cat /proc/mtd <Enter>
dev: size erasesize name
mtd0: 00020000 00010000 "uboot"
mtd1: 00010000 00010000 "uboot_env"
mtd2: 00010000 00010000 "uboot_env_bak"
mtd3: 009e0000 00010000 "linux_safety"
mtd4: 009e0000 00010000 "linux_live"
mtd5: 00c00000 00010000 "data"
由於mtd5是檔案系統,所以有一個Deamon服務他,就是下面這個Process。
52 root 0 SWN [jffs2_gcd_mtd5] 61 root 1512 S /sbin/klogd
接下來幾個Deamon都是服務Process之間的通信服務
93 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/ubusd 94 root 1512 S /bin/sh /scripts/cmdloop /scripts/ubus_evt_handler_d 98 root 1536 S /bin/sh /scripts/ubus_evt_handler_d 100 root 1424 S /usr/sbin/ubusd 104 root 1568 S ubus listen system.event 105 root 1536 S /bin/sh /scripts/ubus_evt_handler_d
接下來三個程式都和地址解析有關係。第一個程式是 /usr/bin/ndev,這程式是 QTN Spartan 工具組的一部分。主要功能是監督網路之中,有關於 ARN, DHCP, NETBIOS與一個Ctrl_frame 的偵測與紀錄。這程式主要處理需要轉發的Protocol。
459 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/ndev monitor 462 root 1560 S dhclient -4 br0 -cf /tmp/dhclient.conf -lf /tmp/dhcli 463 root 1352 S /usr/sbin/ndev monitor
接下來又是一個架構很大的Deamon程式,叫做 /sbin/qevt_server。他是由 /etc/init.d/S41qevt 所啟動的。系統之中共有五個相關程式:
/etc/qevt_server_event.config # 裡面有三個系統的帳號與密碼
/sbin/qevt_send_event # 就用SOCKET送一段TEXT給SERVER,不清楚用途。
/sbin/qevt_mlpm # 還摸不清楚是如何運作的。
/sbin/qevt_server # 本伺服程式
/sbin/ql2t_test # 這是一個 Client測試工具,可以用來與 qevt_server 連線。
/etc/qevt_server_event.config # 裡面有三個系統的帳號與密碼
/sbin/qevt_send_event # 就用SOCKET送一段TEXT給SERVER,不清楚用途。
/sbin/qevt_mlpm # 還摸不清楚是如何運作的。
/sbin/qevt_server # 本伺服程式
/sbin/ql2t_test # 這是一個 Client測試工具,可以用來與 qevt_server 連線。
486 root 1512 S /bin/sh /scripts/cmdloop /sbin/qevt_server 489 root 1584 S /sbin/qevt_server 494 root 1584 S /sbin/qevt_server 495 root 1584 S /sbin/qevt_server 609 root 1504 S sleep 1
接下來四個 cwmpd,就是傳說中的 TR069 的Agent 。系統是使用 Netcwmp/Opencwmp Project版本。基本上都已經整好了。主要程式再
./build_roor/build_arc/netcwmp-c0f7cb0 :這是原始的Open Source。
./build_root/package/netcwmp :這目錄是QTN客製化的版本,Patches。
在Run time的系統當中:
/etc/cwmp.conf : 執行檔的CONFIG要修改
/etc/device.xml : XML對應的執行功能在
/tmp/cwmpd.log : Log File
/etc/init.d/S93cwmpd : 啟動的程式在
./build_roor/build_arc/netcwmp-c0f7cb0 :這是原始的Open Source。
./build_root/package/netcwmp :這目錄是QTN客製化的版本,Patches。
在Run time的系統當中:
/etc/cwmp.conf : 執行檔的CONFIG要修改
/etc/device.xml : XML對應的執行功能在
/tmp/cwmpd.log : Log File
/etc/init.d/S93cwmpd : 啟動的程式在
1177 root 3600 S /usr/sbin/cwmpd 1178 root 3600 S /usr/sbin/cwmpd 1179 root 3600 S /usr/sbin/cwmpd 1180 root 3600 S /usr/sbin/cwmpd
接下來是Linux標準的 iwevent,的作用是把WiFi的Event,由Kernel傳到 User Space,在把他記錄到 syslog 當中。
1192 root 1336 S iwevent --syslog
下面四個是系統的Process,暫時不解釋了。
1293 root 0 SW [hlink_work_queu] 1303 root 0 SW [wlan_workqueue/] 1304 root 0 SW [csa_work_queue/] 1383 root 0 SW [mlmestats]
這隻神秘的程式是QTN專屬,沒有給Source Code。其實執行也有問題。
# qtmd -B <Enter>
Error in qtm_netlink_server_init: nl_connect() failed
Error in main: Can't initialize netlink connection
1393 root 1792 S qtmd -B
終於看到我最有興趣的兩隻程式。hostapd 是整個WFi服務的核心。wpa_supplicant是搭配的密碼認證程式。
# qtmd -B <Enter>
Error in qtm_netlink_server_init: nl_connect() failed
Error in main: Can't initialize netlink connection
1393 root 1792 S qtmd -B
終於看到我最有興趣的兩隻程式。hostapd 是整個WFi服務的核心。wpa_supplicant是搭配的密碼認證程式。
啟動程序是大致是 /etc/init.d/S50Wireless -> /scripts/start-helpers.sh ,這也會寫一個獨立Wi-Fi 啟動程序專章。
/usr/sbin/hostapd -P /var/run/hostapd.pid -B /mnt/jffs2
-P pid_file : 位於 /var/run/hostapd.pid
-B : 在背景執行
<configuration files> :系統設定檔的所在位置。/mnt/jiff 是一個檔案系統,這是會永久存在的。
/usr/sbin/wpa_supplicant -B -q -iwifi0 -bbr0 -Dmadwifi -c /mnt/jffs2/wpa_supplicant.conf
-B : 在背景執行
-q : 啟動 Debug message,如果 -qq 可以看到更多的信息。
-iwifi0 : interface name = wifi0,for 5G Wi-Fi, 那 2.4GHz 呢?
-bbr0 : optional bridge name = br0
-Dmadwifi : driver name = madwifi
-c /mnt/jffs2/wpa_supplicant.conf : -c 是指定 configuration file
1783 root 4248 S /usr/sbin/wpa_supplicant -B -q -iwifi0 -bbr0 -Dmadwif
1909 root 4264 S /usr/sbin/hostapd -P /var/run/hostapd.pid -B /mnt/jff
接下來的一堆 Daemon qrpe, csmd, backhaul 組織成了Mesh的本體。接下來寫專章來做詳細的解析。
2005 root 2768 S qrpe -D -l off 2022 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/csmd -c /tmp/csmd. 2025 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2026 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2027 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2028 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2029 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2031 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2042 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/backhaul_manager 2043 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/backhaul_diagnose 2050 root 2648 S /usr/sbin/backhaul_diagnose 2051 root 2136 S /usr/sbin/backhaul_manager 2065 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2069 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf 2070 root 4792 S /usr/sbin/csmd -c /tmp/csmd.conf
這個是QTN無線的監督伺服器,用來做一些QTN私有的管理工作。
2085 root 2248 S qserver -B -i wifi0 -D quantenna
接下來是小型Deamon 提供 DNS, DHCP, Router advertisement與 Network boot (tftp)。
2122 root 1112 S dnsmasq -d
這個小程式監督GPIO PIN,包含重開機(Reboot)與Reset to factory (主要是把所以Flash當中改過的資訊回復到出廠時的設定)。
2150 root 2112 S monitor_reset_device 1 0
這也是一個網路的監督程式,主要是看封包,CLIENT也是有例子,可以在本機執行,也可以在NP上面跑。位於目錄的 test 之下。
2231 root 1224 S /usr/sbin/pktlogger_d
這個自然是掃 DFS Channel的背景程式,其實他也沒有甚麼掃,因為是晶片在做,主要是讀取dfs_daemon.conf 之中的設定值,然後對硬體做設定,接下就等者收系統發出的資訊。
2258 root 2184 S dfs_daemon 2275 root 1096 S ts -n /etc/init.d/S55qwe start directly 2306 root 1512 S listen 2312 root 1520 S /bin/sh /scripts/offline_dump on 2412 root 1520 S /bin/sh /scripts/start-ntpclient 2528 root 1512 S /bin/sh /scripts/cmdloop /sbin/qharvestd -c/mnt/jffs2 2534 root 5104 S /sbin/qharvestd -c/mnt/jffs2/qharvestd.conf 2618 root 3504 S /sbin/mini_httpd -r -u root -C /mnt/jffs2/minihttpd.c 2838 root 1504 S cat /sys/devices/virtual/net/wifi0/wps_button 3039 root 3600 S /usr/sbin/cwmpd 3044 root 2128 S /sbin/tti_led_control 3055 root 2112 S monitor_wifi 3056 root 1512 S /bin/sh /root/script/tti_led24_control.sh 3189 root 1512 S /bin/sh /scripts/cmdloop /usr/sbin/crond -f 3195 root 1520 S /usr/sbin/crond -f
syslogd 的記錄檔案,預設值為 /var/log/messages。
-L : Local only, -R 也可以送到 remote server。
-n : Run in foreground ???
3198 root 1520 S /bin/sh /scripts/run_syslogd start
3199 root 1528 S /bin/sh -l
3209 root 1512 S syslogd -n -L
下面的程式似乎都是 2.4GHz Realtek 網卡相關的,似乎2.4GHz 是另外一個系統。各搞各的。
Webs這程式只是把 /root/script/init.sh 執行,把 realtek 的 2.4GHz init 執行起來,接下來就無所事事了。掉在一個 for (;;) sleep(5) 之中,甚麼也沒做。
3306 root 1032 S /root/webs -x
/root之下全部都是 Realtek 的程式,wscd就是 AP daemon。他的CONF檔案也放在不同的地方:
/var/wpa-wlan0.conf
/var/wsc-wlan0.conf
3518 root 1272 S /root/wscd -start -c /var/wsc-wlan0.conf -w wlan0 -fi
這個程式就是印 2.4GHz Wi-Fi 卡所發出的一些 Messags 而已,把Protocol Name 轉成英文。
3536 root 1064 S /root/iwcontrol wlan0
這個Shell ( /bin/qweeventd) 似乎是為了統一資訊而寫的,他會依照l iwevent 送出的訊息,轉成 QTN的命令。
3605 root 1520 S /bin/sh /bin/qweeventd
3606 root 1336 S iwevent
3607 root 1520 S /bin/sh /bin/qweeventd
沒有留言:
張貼留言