Busybox ---------- init进程解析

Busybox ---------- init进程解析

1、/sbin/init /bin/busybox的符号链接,所以busybox是目标板上执行的第一个应用程序。

2、当busybox知道调用它的目的是init,它会立即跳转到init进程

3、busybox init 进程会依次执行以下工作:

a) 为init设置信号处理进程

b) 初始化控制台

c) 剖析inittab文件、/etc/inittab文件

d) 执行系统初始化命令。busybox在缺省情况下会使用/etc/init.d/rcS命令行。

e) 执行所有会导致init暂停的inittab命令(动作类型:wait

f) 执行所有仅执行一次的inittab命令(动作类型:once

 

 

一旦完成以上工作:init进程便会循环执行以下工作:

g) init进程便会从新启动Inittab命令(动作类型:respawn

h) 执行所有终止时必须重启但启动前必须先询问用户的inittab命令(动作类型:askfirst

 

在控制台初始化器件,busybox会判断系统是否被设置成在串行端口上执行控制台(console=ttyS0作为内核引导参数)

控制台初始化之后,busybox会检查/etc/inittab文件是否存在,如果此文件不存在,busybox会使用缺省的inittab配置。它主要为系统引导,系统挂起以及init重启动设置缺省的动作。如果存在则busybox会自动剖析/etc/inittab文件

 

4、/etc/inittab 文件格式

 

inittab文件中每一行的格式如下:

id:runlevel:action:process

 

id:用来指定所启动进程的控制tty;如果启动的进程并不是一个可以交互的shell,这个字段可以空,可以交互的shell,应该会有一个控制tty

 

runlevel: busybox会忽略此字段,可以不填

 

process:用来指明程序的路径

 

action字段用来表示应用到process的动作,该字段有:

 

sysinit :init提供初始化命令行的路径

respwn:每当相应的进程终止执行便从新启动

askfirst:

wait:

once:

ctrlaltdel:按下组合件ctrl+alt+del执行相应的进程

shutdown:系统关机执行相应的程序

restart:init从新启动时,执行相应的进程

 

简单的模板:

 

::sysinit:/etc/init.d/rcS /*设置系统初始化文件*/

::respawn:/sbin/getty 115200 ttyS0 /*115200bps 的串行端口启动一个登陆会话*/

::respawn:/control-module/bin/init  /*控制模块初始化命令行*/

::restart:/sbin/init

::shutdown:/bin/umount -a -r

 

/*控制模块初始化命令行具体内容*/

#!/bin/sh

#以读写模式从新安装(挂载)根文件系统(需要 /etc/fstab

mount -n -o remount,rw /

#挂载/proc文件系统

mount /proc

#启动网络接口

/sbin/ifconfig eth0 192.168.1.12

 

5、

你可能感兴趣的:(busybox,init进程,系统初始化,Linux嵌入式系统构建)