init
init 是用户空间 程序,它在 /sbin 目录下;它负责启动和关闭 系统的 重要程序。·
systemd 是 init 的标准实现;它是如何工作的?怎样和它交互?
system V 也是 init 程序,常存在于老版本中。
还有些 init 的不同实现 在嵌入式的 系统里出现。
以后 init 的各种版本 都是来处理 system V init 短处。system V init 通过 脚本 顺序启动 服务,这有点过于简单了。
这种 策略 导致了系统管理 和 新能方面的问题:
1.两个服务 不能 同时 启动;
2.没有提供方便的 机制 来管理 运行中的 系统;
3. startup scripts 很难读;
4. 没有必要 服务 和必要配置 的概念。服务在 启动的时候 发起;配置也在 这个时候 被设置。不能体现 依赖。
现代的 init 系统 改变了 服务如何启动,改变了 服务如何被监控,改变了 依赖 如何被 配置。
内核 启动 init 的时刻 很重要。init 是用户空间的第一个进程。很重要 不仅 因为 CPU 和 内存 终于就绪 做常规操作,还因为 从那个点起,整个系统 开始建立起来。在这个点前,内核按照 固定道路执行, 之后 user space 更加 客户定制化。
user space init 的顺序
1. init
2.low-level services。比如:udevd syslogd
3. 网络配置
4. mid 和 high - level services。比如:cron, printing
5. login, GUI, high-level applications 比如:web server