一个外行的指南,了解ubuntu启动/启动的阶段

它起源于我想在每次系统启动时运行脚本的情况。

我注意到有很多地方,比如init.drc.localbash_profile~/config/autostart~/local/share/applications以及每次系统启动时运行的大量其他地方。 这是可以理解的。 但它确实显示了系统启动的模糊图像。

我是否可以知道是否有人可以指出我如何简要快速地理解标准资源

  1. 启动Ubuntu系统所涉及的各个阶段
  2. (留下不那么有趣的垃圾)一般来说,用户对他的自定义的实际兴趣是什么?

请注意,我确实已经谷歌,并发现可怕的资源与难以理解的细节。 如果您能够以外行的方式实际解释自己,或者至少指出一个不是一个外行人无法读取的大胖参考手册的地方,将不胜感激。

让我为那些挑剔的人做好准备,这些答案都没有用:

  • 如何理解引导加载的不同阶段?
  • 免费在线Ubuntu用户指南,简单易懂?
  • Ubuntu启动过程如何工作?

虽然他们可能有一些相似之处,但他们都明显没有获得任何对初学者有用的东西。 例如,最后一个只能获得一个图表生成解决方案。

GRUB加载内核,内核启动init进程(通常是/sbin/init )。 这是通常感兴趣的事情之后发生的事情。 在Ubuntu历史的各个阶段,有三个init系统:

  1. SysV init ,黑暗时代
  2. Upstart ,Ubuntu 9.10 – 14.10
  3. Systemd ,来自Ubuntu 15.04

除了其他职责之外,初始系统通常会启动应该运行的各种服务。 init系统做什么?

/etc/init.d是旧sysv init系统所关注的shell脚本所在的位置。 如果可以,请避免它。 它出于向后兼容的原因而存在。

/etc/rc.local是sysv init时代的一个脚本,由于向后兼容性,它仍然有效。 以root身份在系统启动时运行短命令是很好的。 它在启动期间执行一次。 对于长期任务,请改用Upstart( /etc/init )或systemd( /etc/systemd/system )服务。 Upstart和systemd都允许有条件地启动程序,但它们的执行方式是不同的。

登录GUI后,大多数桌面环境将启动~/.config/autostart列出的应用程序。 这是登录GUI后应该运行的命令的好地方,比如启动邮件客户端。 它们在您每次登录时都会执行,因此每次您注销并重新登录时,都会执行它们(与/etc/rc.local不同)。

~/.config/upstart就像~/.config/autostart ,但它是由登录GUI时启动的每会话Upstart进程处理的。 它比~/.config/autostart更灵活,它只是在登录时执行命令。 这在Ubuntu 16.10之前很有用,其中每个会话进程现在是systemd(从15.04到16.04,主init是systemd,但是每个会话都是Upstart)。 例如,请参阅我的答案: 如何在Unity登录/注销上运行脚本?


现在您可以更好地了解如何在启动时运行脚本中的选项?


~/.bash_profile~/.profile~/.bashrc等不适合在启动时启动命令。 这些通常由命令行shell读取,因此当您启动终端或登录TTY时。 因此, .bashrc适用于每次打开终端时运行命令,而.profile适用于从TTY登录时。 (请参阅此答案 。)这些文件也主要用于设置环境变量,但环境变量的规范位置是系统范围变量的/etc/environment和用户特定变量的~/.pam_environment 。 看到这个答案 。

~/.local/share/applications与此讨论无关。