|
中兴F660的关键启动过程
8 ]5 |5 s/ u5 q4 V1 ]+ H- S0 v0 o1 u$ }) |) u
# |" U$ b( I- C* a% v M' |& K, `' [4 V. I6 U* |# W
step 1: inittab文件有以下语句:
) ?- X$ d* J" T0 |; c s::sysinit:/etc/init.d/rcS
d3 j7 ]% N) V# W2 `) f n表面系统init完成后,将启动/etc/init.d/rcS脚本,该脚本的主要执行内容如下:( Z. H- G& v3 N5 b' K
8 L7 _, u, F$ y& E) W$ x
1.设置环境变量
" @9 C5 \" C; z N# c
, K; m( [6 X$ X4 ?& `7 m" o: ?, Z+ K/ c5 k2 }8 l
4 T* j- n Y8 E2 b: _
2.执行/etc/default/rcS脚本;/ o) V y ]% v
* t7 P, Z4 F1 S- m设置一些为/etc/rcS.d目前下脚本执行的一些变量9 L$ q/ K. `$ U- T) e
Defaults for the boot scripts in /etc/rcS.d: o: g% T" j8 S1 L
" t0 w% }' w8 a# ]1 j4 C
3.执行/etc/default/S00tagparam脚本 ==> mount /dev/mtdblock2 to /tagparam8 y" ?3 X8 u% n: Z2 C5 E/ c. h
: O/ p0 N! B. p2 ?. e5 l, L
4.执行/etc/rcS.d/SS??*脚本文件. d& }+ J1 l t
4.1 执行S31emacs脚本,即Configure TSMAC interfaces
0 ~+ l) u4 d8 \' y 4.1.1 对/etc/sysconfig/network-scripts/ifcfg-mii*下文件分别执行之(shell设置变量的语句)
# ~' _; d* ]9 n- A 4.1.2 根据设置的DEVICE=xxx; HWADDR=xxx; CONNTYPE=xxx; MIITYPE=xxx; PHYADDR=xxx; LINKMODE=xxx;
9 M$ c3 O3 ]7 x/ x& j6 @3 X' e 对应创建/proc/net/${DEVICE}/connType文件(即执行echo ${CONNTYPE} > /proc/net/${DEVICE}/connType)0 e0 n q8 W) e: B
/proc/net/${DEVICE}/phyAddr文件(即执行echo ${PHYADDR} > /proc/net/${DEVICE}/phyAddr)
0 _; E: S0 L7 Y! [ /proc/net/${DEVICE}/miiType(...)
: X# p: M7 g# \9 [& m3 l /proc/net/${DEVICE}/linkMode/ l% L6 ~+ h+ K$ i
4.2 执行S40network脚本 :Initializes network interfaces& L2 ?$ j6 a3 V8 `- x, ?6 M$ X' d
根据ls /etc/sysconfig/network-scripts/ifcfg-*下的配置文件内容,若ONBOOT=“yes”则配置对应网卡,可由HWADDR改MAC地址,BOOTPROTO定staticIP,DHCP,PPPOE(pppoe拨号由/usr/bin/pppoe-start ${DEVICE}执行)等。
4 S6 n! s/ m) w% t6 t6 c8 B% t, M; \6 |" `' j3 ^2 _+ ]+ V
4.3 执行S43BSPDriver脚本,即加载 BSP driver module
; q& L% I- w1 l. ?' u9 ^: d8 n. G+ h 非常简单,就只是执行/sbin/insmod /kmodule/bspdriver.ko8 M1 w! \) s' ^8 h& A: L. g( H
4.4 执行S99modules脚本, ==== 中兴一堆与GPON,VOIP等driver加载的脚本:
4 t1 x5 z, c+ S 4.4.1 加载Personalized Paramters Driver6 Q! B# U8 I9 L: V, P
/sbin/insmod /kmodule/tagparam_mod.ko
7 M1 J7 Q( g# A8 Q2 T 4.4.2 加载Switch Fabric Device Driver。
5 B$ T' ?/ a2 b; o& u$ s7 q /sbin/insmod /kmodule/mv_tpm.ko
Z: q( I d$ ~+ S" {2 c9 F /sbin/insmod /kmodule/switch.ko
. P2 A. q7 U4 J3 c7 b9 w === switch.ko重新初始化xml,其中buffer部分需要端口未启动时配置,因此先down,再up
$ F+ y$ K% C, x7 e 4.4.3 加载GPON/EPON mv_gpon.ko,gpondrv.ko7 N% K# A; P/ _/ ~& D6 q5 R
4.4.4 加载optical driver:optical.ko
) ]& s* n/ e' J7 g- u& g 4.4.5 加载SLIC driver:usrline.ko4 T0 T D- m8 s5 g5 k# G8 o
4.4.6 加载Ethernet Driver:netdriver.ko
( F5 `4 S* T" U: a9 {9 D$ b* @ 4.4.7 加载DSP driver:kudp.ko,voip_codec.ko,dsp_dev.ko, M j1 N' p. c/ d4 o5 \% N) I
4.4.8 加载l2 l3 fast:l2fastpath.ko,l3fastpath.ko
4 I5 X( w3 C9 p6 F% B2 ?. r* j5 w1 N
5.执行/etc/default/S01userconfig f f% [" p: I2 U" U" \9 `. ?
5.1 mount 15M的ramdisk at /var: mount -t tmpfs -o size=15360k tmpfs /var
' p* ]/ k* b+ i+ o. S" } 5.2 check and mount /dev/mtdblock5 to /userconfig; O' B& }2 m; c% V$ x g* k/ ?
5.3 Check for a jffs2 filesystem on mtd4 and mount mtd4 to /usr/local/ct, 即mount /dev/mtdblock4 /usr/local/ct& Y. M. R5 q4 ?- L' A0 x5 w
& M$ `3 Y# s0 N8 J* c; @
% u2 z. Q4 E2 d" B9 W: ?6.检查是否存在/userconfig/cfg/flag_usrfs日志文件,若无Create log flag file- |3 D6 `* L, |4 _* h j. _2 G) h
7.处理GPON国家码、地区码配置的一些database文件xxx.xml;
! q' F4 _0 T% m4 R; u8.copy some files to /var/tmp/linux-igd, used by UPNP and SNTP
# r& t4 _ y# e% b. I9.执行 pc& #### ==> auto-start cspd1 F* k1 j0 `% k8 V; f b
# n0 t2 M1 Q0 k! p
' X6 { |9 Q }* Z; A2 b |
|