System V和BSD的init程序小结_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的对决。

原文链接: https://blog.csdn.net/dog250/article/details/5303624

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    System V和BSD的init程序小结_bsd init

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/410037

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 上午11:46
下一篇 2023年4月26日 上午11:46

相关推荐