Linux启动简单分析
1. 概述
从Bootloader至init程序主要过程如下
++++++++++++++ ++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ | | -> | kernel_entry() | -> | start_kernel() -> rest_init() -> kernel_init() | ============== -> ================== -> ================================================== | BootLoader | -> | MIPS | -> | kernel | ++++++++++++++ ++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++
kernel_init()首先尝试执行从bootloader传递的命令参数rdinit=、init=
如果失败,会依次尝试执行/sbin/init、/etc/init、/bin/init、/bin/sh、
以下是从UBoot传递的命令行实例
如console=ttyS0,115200 root=/dev/ram rw init=/linuxrc
2. busybox
在嵌入式系统中,init程序通常就是是busybox
而linuxrc则为busybox的符号链接
busybox的init程序,即init_main函数
init_main() -> parse_inittab() -> run_actions(SYSINIT)
3. inittab
文件/etc/inittab是Linux启动非常重要的文件
参考</etc/inittab文件分析> 或 <linux /etc/inittab文件>
这里关注以下action为sysinit的行
该行指定的脚本将完成系统的初始化过程
在ttylinux中,该行为
::sysinit:/etc/rc.d/rc.sysinit
rc.sysinit完成的工作主要有
设置环境变量,加载文件系统。。。
其中值得关注的是启动服务
~~~~~~~~~~~~~ Part of /etc/rc.d/rc.sysinit ~~~~~~~~~~~~~ # ***************************************************************************** # Start the services. # ***************************************************************************** for p in /etc/rc.d/rc.startup/*; do [[ -x ${p} ]] && ${p} start done; unset p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
而rc.startup目录下又包含如下脚本
$ ls -al /etc/rc.d/rc.startup total 8 drwxr-xr-x 2 root root 4096 Jul 29 07:33 . drwxr-xr-x 5 root root 4096 Jul 29 07:33 .. lrwxrwxrwx 1 root root 16 Jul 29 07:33 00.random -> ../init.d/random lrwxrwxrwx 1 root root 18 Jul 29 07:33 01.firewall -> ../init.d/firewall lrwxrwxrwx 1 root root 16 Jul 29 07:33 05.syslog -> ../init.d/syslog lrwxrwxrwx 1 root root 17 Jul 29 07:33 10.network -> ../init.d/network lrwxrwxrwx 1 root root 14 Jul 29 07:33 20.sshd -> ../init.d/sshd lrwxrwxrwx 1 root root 15 Jul 29 07:33 30.inetd -> ../init.d/inetd lrwxrwxrwx 1 root root 13 Jul 29 07:33 85.gpm -> ../init.d/gpm lrwxrwxrwx 1 root root 15 Jul 29 07:33 90.crond -> ../init.d/crond
可以看出ttylinux依次启动了脚本中指定的服务
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。