📜  Linux 内核如何启动?

📅  最后修改于: 2022-05-13 01:57:28.690000             🧑  作者: Mango

Linux 内核如何启动?

当我们按下系统的电源按钮时,有许多进程在后台运行。学习启动过程以了解任何操作系统的工作非常重要。要解决引导错误,必须知道内核是如何引导的。这是一个非常有趣的学习主题,让我们从基础开始。下面给出了引导方法的简化阅读:

Linux 启动过程的各个阶段:

  1. 机器的 BIOS 或启动微码有数百个并运行启动加载程序。
  2. 引导加载程序在磁盘上找到内核映像并将其加载到内存中,以启动系统。
  3. 内核初始化设备及其驱动程序。
  4. 内核挂载基础文件系统。
  5. 内核启动一个名为 init 的程序,其方法 ID 为零
  6. init 设置系统进程的其余部分运行。
  7. 出于某种目的,init 会启动一个允许您登录的方法,通常在引导序列的顶部或接近顶部。

启动消息:

传统的 UNIX 操作系统系统在引导时会产生一些诊断消息,告诉您有关引导方法的信息。消息最初从内核返回,因此从 init 启动的进程和低级格式化程序返回。然而,这些消息并不美观或一致,在某些情况下,它们甚至没有提供非常丰富的信息。此外,硬件增强导致内核启动速度比消息闪烁之前快得多,因此可能很难检查发生了什么。因此,当前的大多数 Linux 发行版都尽最大努力通过启动画面和不同种类的填充物来覆盖引导医学专业,以在系统启动时分散您的注意力。

内核初始化和引导选项:

  1. CPU检查
  2. 记忆力检查
  3. 设备总线发现
  4. 设备发现
  5. 辅助内核系统设置
  6. 根文件系统挂载
  7. 用户空间开始

前两个步骤并不太例外,但是,一旦内核到达设备,就会出现依赖性问题。例如,磁盘设备驱动程序可能依赖于总线支持和 SCSI 系统支持。一般来说,你不需要担心依赖关系,除了一些必要的部分也是可加载的内核模块而不是大多数内核的一部分

内核参数:

当 Linux 内核启动时,它会收到一组基于文本的内核参数,其中包含一些进一步的系统详细信息。这些参数指定了许多替代行为,例如内核应该制造的诊断输出数量和设备驱动程序特定的选择。 Ro 参数指示内核在用户区开始时以只读模式挂载基础文件系统。这种正常的只读模式确保 fsck 在尝试做一些严肃的事情之前可以安全地检查基础文件系统。检查时,启动方法以读写模式重新挂载基础文件系统。

引导加载程序任务:

  • 从多个内核中选择。
  • 在内核参数组之间切换。
  • 为启动不同的操作系统提供支持。

自 Linux 内核诞生以来,引导加载程序变得非常先进,具有命令行历史记录和菜单系统等选项,但是,基本的需求一直是内核映像和参数选择的灵活性。一个惊人的发展是一些需求确实减少了。例如,由于您可以从 USB 设备执行关联紧急或恢复启动,您很少需要担心手动进入内核参数或进入单用户模式。当前的引导加载程序提供了前所未有的强大功能,如果您正在构建自定义内核或只是想调整参数,这可能会非常方便。

引导加载程序概述:

  • GRUB – Linux 系统上几乎通用的标准,具有 BIOS/MBR 和 UEFI 版本。
  • LILO – 主要的 Linux 引导加载程序之一。 ELILO 可能是 UEFI 版本。
  • SYSLINUX——它可以被组织成从许多替代风格的文件系统运行。
  • LOADLIN – 从 DOS 引导内核。
  • 系统引导一个简单的UEFI引导管理器。
  • coreboot – 包含内核的计算机 BIOS 的高级替代品。
  • Linux Kernel EFISTUB一个内核插件,用于直接从关联的 EFI/UEFI 系统分区加载内核。
  • EFI的Linux -一个UEFI启动加载器意味着函数为不同的UEFI引导加载程序的模型和参考。

GRUB 介绍和工作:

GRUB 代表 Grand Unified Boot Loader 。 GRUB 最重要的功能之一是文件系统导航,它支持直接的内核映像和配置选择。

  • 找到启动代码后,BIOS 会执行数百个代码。这通常是 GRUB 开始的地方。
  • GRUB 核心数百个。
  • 核心初始化。目前,GRUB 将访问磁盘和文件系统。
  • GRUB 在那里识别其引导分区和数百个配置。
  • GRUB 为用户提供了改变配置的机会。
  • GRUB 在超时或用户操作后执行配置。
  • 在执行配置的过程中,GRUB 可能会在引导分区中加载更多代码。其中一些模块也已预加载。
  • 为了加载和执行内核,GRUB 执行引导命令。