Linux 机器启动时会执行哪些程序或进程

Linux 机器启动时会执行哪些程序或进程

有人能告诉我或给我一个链接,准确告诉我 Linux 启动时执行的程序或进程是什么吗?即从 grub(Linux 引导加载程序)启动

您可以选择您喜欢的口味。

答案1

RHEL3/4/5:

  1. 蛴螬
  2. 内核加载(由 grub 定义)
  3. 内核加载并挂载 grub 定义的 initrd
  4. 内核从 initrd 中查找并运行一些内容(通常足以获取挂载根文件系统所需的模块)
  5. initrd 和/或内核挂载 /
  6. /sbin/init 运行
  7. init 解析 /etc/inittab,获取有关要处于哪个运行级别的参数,并使用该参数或默认值来决定要运行哪些项目。通常首先是“/etc/rc.d/rc.sysinit”,然后是“/etc/rc.d/rc 3”。它还会为前 6 个 tty 运行 /sbin/mingetty。
  8. /etc/rc.d/rc.sysinit 包含所有 fsck 内容,并挂载所有其他非网络文件系统
  9. “/etc/rc.d/rc 3”按数字顺序运行 /etc/rc3.d 中所有以“K”开头、带有“stop”参数的程序以及所有以“S”开头、带有“start”参数的程序(这些是指向 /etc/init.d 脚本的符号链接)。这些脚本启动网络、启动 iptables、安装网络文件系统并启动所有其他服务。

在 Ubuntu 10 和 RHEL6(目前为测试版)中,经典的 init 已被“Upstart”取代,它使用 /etc/init 目录而不是 /etc/inittab。/etc/init 有一堆单独的文件,配置了它们的作用以及导致它们运行的​​条件。其中一个相当于 /etc/rc.d/rc.sysinit,其余大部分相当于 /etc/init.d 脚本。

答案2

内核启动后的引导过程实际上相当简单。内核启动init,它通过脚本解析/etc/inittab并启动其他所有内容。这些脚本启动在正常系统操作期间可能在后台运行的各种守护程序。init还会生成任何getty进程,这些进程通常用于控制台上的用户登录,有时用于其他接口(最常见的是串行接口)。

不同的 Linux 发行版使用不同的方法来识别脚本及其执行顺序(如果它是 SysV 风格的 init,则有时会区分给定的运行级别)。维基百科中有关 init 的页面可以为您提供更多详细信息,但基本上可以分解为存储/引用 init 将调用的脚本的方法的样式选择。内核本身与使用的 init 约定类型无关 - 它只是将 init 作为第一个用户级进程启动。

在 SysV 样式的 init 系统中,运行级别(基本上是一种允许系统以各种可能的启动配置启动的方法。如果您熟悉 Windows,可以将其类比为 Windows 的“硬件配置文件”、“安全模式”等。)决定执行哪些脚本。在 BSD 样式的 init 系统中,一系列rc脚本决定每次启动时启动的内容。

有些发行版init一开始是初始 RAM 磁盘。initrd 是在启动过程中使用的文件系统,用于加载内核模块并引导系统到可以挂载和访问“真实”根文件系统的程度。

答案3

在大多数 Linux 上,第一个启动的进程是/sbin/init使用文件/etc/inittab男人)启动其他进程。

如果你使用的是 Ubuntu 驱动器,则可能使用暴发户第一个二进制文件也被调用,/sbin/init但是其中的文件/etc/init/用于配置启动行为。

相关内容