OpenWrt 開機流程

以下簡略說明OpenWrt 的開機流程。

1. 下圖為簡略的OpenWrt 開機流程圖。

2. 在kernel 的source code 中,找到init/main.c,可以在function kernel_init 中,發現kernel 執行了/sbin/init process。

3. 解析/sbin/init process。init source code 在/procd/initd 中。查看其source code init.c,可以看到init 執行,會一路執行early()、cmdline()、watchdog_init(1)。接著再執行

/sbin/kmodloader /etc/modules-boot.d

其中kmodloader 的source code 在ubox/kmodloader.c。這裡最重要的是有一些kernel module 會在這裡被掛載上去,接著再執行function preinit。

4. 查看preinit.c 中的function preinit,會先執行

/sbin/procd -h /etc/hotplug-preinit.json

然後再執行

/bin/sh /etc/preinit

最後就是啟動procd。

發佈留言