我试图弄清楚系统在启动过程中做了什么。
以下是我取得的进展:
GRUB
(引导加载程序)→ 内核→systemd
(初始化进程)systemd
检查默认的启动级别/目标(在哪里?)systemd
从适当的文件夹中运行脚本/etc/rcX.d
/etc/rcX.d
是对文件的一种排序/etc/init.d
。- 中的应用程序
/etc/init.d
,需要配置,将其放入/etc/init
(?) - 啥时候
/etc/rcS.d
用?
/etc/rc.local
开始(尽管 Debian FAQ 建议不要使用它)- [这里还有什么?]
问题:有人可以填写空白并更正错误信息吗?
答案1
我尝试通过 #ubuntu-offtopic @ freenode 中给出的答案来填补空白
GRUB
(引导加载程序)→ 内核→systemd
(初始化进程)systemd
检查默认值target
(大致是 的一个新术语runlevel
,但更细粒度)- 位置:systemd 管理文件中的某个位置
systemctl get-default
显示你的默认目标
systemd
开始运行服务。这基本上与在/etc/rc*.d
- 初始化脚本位于
/etc/systemd/system
(*.target.wants
) - 如果服务应该启动,但没有
*.service
文件,systemd 将检查当前目标对应的运行级别,并从 运行相应的初始化脚本etc/rc*.d
。更多信息可参见man systemd.service
- @
/etc/rcS.d
:这似乎是一个运行级别,就像数字一样。'S'可能代表“单用户模式”——就像救援控制台一样…… - 我真的建议你读一下
man systemd.service
(5)。它包含很多有用的信息,甚至还有更多指向各种主题的有用提示。
- 初始化脚本位于
/etc/rc.local
开始(尽管 Debian FAQ 建议不要使用它)- GUI,就像登录屏幕一样,只是
/etc/systemd/system
从步骤 3启动的另一个服务
其他信息:
/etc/rc*.d
并且/etc/init.d
是 SysV 所采用的传统初始化方式。如前所述,它仍然受支持。不过,它可能如果一切都迁移到 systemd(无论好坏),那么有一天它将不再受支持。- 中的文件
/etc/init
由 使用upstart
,据我所知,它在 Ubuntu 中不使用(因为 systemd 完成了它的工作)