来源: http://wiki.openwrt.org/doc/techref/preinit_mount#first.boot
基本的openwrt启动顺序为:
1、boot loader loads kernel
boot loader 加载内核
2、kernel loads whilst scaning the mtd partition rootfs for a valid superblock for mounting the SquashFS partition (which contains /etc). More info at technical.details
内核加载同时扫描mtd分区rootfs,查找一个有效的超级块区用来存放squashfs分区(这个分区中包含了/etc目录)
3、kernel calls /etc/preinit
(the kernel considers this to be the init
(or root) process
内核调用/etc/preinit
4、/etc/preinit
prepares system for multiuser mode
/etc/preinit为系统准备好多用户模式
5、/etc/preinit
exec
s /sbin/init
which becomes the init
(or root) process and launches multiuser
/etc/preinit 执行/sbin/init(/sbin/init变为起始进程)
6、/sbin/init
launches processes according to /etc/inittab.
/sbin/init顺序执行/etc/inittab中的进程
7、Typically the first process launched is /etc/init.d/rcS
which causes the scripts in /etc/rc.d
which begin with 'S' to be launched (in glob sort order). The /etc/rc.d
directory is populated with symlinks to the scripts in /etc/init.d
. Each script in /etc/init.d
accepts enable
and disable
arguments for creating and removing the symlinks.
执行顺序是按照/etc/iit.d/rcS中以“S”开头的后面跟的数字顺序。 /etc/rc.d是/etc/init.d的链接文件。
8、These script initialize the system and also initialize daemons that wait for input, so that when all the scripts have executed the normal system is active. On first boot this initializing includes the process of preparing the root filesystem for use.