简介
初始化英文简称:init(initialization)是 Unix 和 类Unix 系统启动过程中的第一道程序,用来产生其它所有进程的程序。
它以守护进程的方式存在,其进程号为1,它将继续运行直到系统关闭。它是所有其他进程的直接或间接的始源,并会接管孤儿进程。Init由使用硬编码的文件名的内核来启动,如果内核无法启动它,将导致内核崩溃(或“内核恐慌”)。
init的设计,在Unix系统,如System III和System V中,已经偏离了在Research Unix和它的BSD衍生(版)的init所提供的功能。大多数Linux发行版上的用法是与System V有些兼容,但也有一些发行版使用非BSD风格:
Gentoo 是自己定制的
deepin,ubuntu等大部分发行版都采用systemd
BSD风格
BSD init 运行存放于/etc/rc的初始化 shell 脚本,然后启动基于文本模式的终端(getty)或者基于图形界面的终端(窗口系统,如 X)。 这里没有运行模式的问题,因为文件 'rc' 决定了 init 如何执行。
优点: 简单且易于手动编辑。
缺点: 如果第三方软件需要在启动过程执行它自身的初始化脚本,它必须修改已经存在的启动脚本,一旦这种过程中有一个小错误,都将导致系统无法正常启动。
值得注意的是,现代的 BSD 派生系统一直支持使用 rc.local文件的方式,它将在正常启动过程接近最后的时间以子脚本的方式来执行。这样做减少了整个系统无法启动的风险。然后,第三方软件包可以将它们独立的 start/stop 脚本安装到一个本地的 rc.d目录中(通常这是由 ports collection/pkgsrc