System V和BSD的init程序小结

System V:
在/etc/目录下翻出inittab文件,里面有一行:
行1:si::sysinit:/etc/rc.d/rc.sysinit
这 里的rc.sysinit就是全局的初始化脚本,里面可能初始化了终端设备,回忆一下bios自检初始化,也是先初始化了显存,毕竟"显示"这件事是很重要的,人的眼睛是最敏感的.rc.sysinit初始化了终端后才可以从终端上提示用户输入运行级别以及显示当前初始化过程信息;在行1之后就是:
行2:l0:0:wait:/etc/rc.d/rc 0
行3:l1:1:wait:/etc/rc.d/rc 1
...
行n:...
这 些就是具体运行级别的初始化脚本调用相关的行,/etc/rc.d/rc是一个脚本,后面跟参数代表具体运行级别,然后会执行/etc/rc.d /rc1.d/里面的脚本或程序,比如K打头的代表kill,而S打头的代表start等等,这些都是rc脚本的策略,和init进程本身无关,在行n之后就是:
行n+1:ca::ctrlaltdel:/sbin/shutdown -t3 -r now
这个行说明ctrl+alt+del组合键会使系统shutdown,接下来就是:
行n+2:...
行n+3:1:2345:respawn:/sbin/mingetty tty1 
行n+4:2:2345:respawn:/sbin/mingetty tty2
...   
行n+m:...
这里的这些行就是初始化各个tty
BSD:
关于bsd的启动就脚本的角度就不好说了,因为一切全部在init.c的代码中界定了,比如没有运行级的概念,只是在初始化的时候运行/etc/rc脚本,至于脚本的内容,和System V不同的是,bsd不管rc脚本的格式和内容,bsd相信rc会做完初始化工作,如果出错则认为初始化出了问题,这时进入多用户最终模式是不安全的,因此进入单用户模式,如果没有出错则进入多用户模式,然后在init进程的执行逻辑中(实质上是状态机)解析/etc/ttys脚本从而初始化若干个会话,然 后在每个tty运行一个getty准备用户登录。
  System V的getty逻辑是inittab脚本定义的,而bsd的getty逻辑是init程序的执行逻辑定义的,耦合性和内聚性值得讨论一番。System V内置了脚本逻辑却外置了执行逻辑,而bsd则相反,内置了执行逻辑却外置了脚本逻辑,孰优孰劣?各占半边天,这就是两大unix的对决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值