• Linux启动过程基本指南


    每次你上电你的Linux PC,在最终显示一个提示你输入用户名和密码的登录窗口前,它经过了一系列阶段。每钟Linux发行版在一般启动过程中经过了4个不同阶段。

    用户登录提示

    在这里,我们将重点突出Linux OS从它上电到时到你登录时采取的各种步骤。注意:由于GRUB2 bootloader和systemd init当前由大量现代Linux发行版使用,所以本手册只考虑了它们。

    启动过程采取了以下四步,我们将更详细地讨论它们:

    • BIOS完整性检查(POST)
    • Boot  loader(GRUB2)装载
    • 内核初始化
    • 启动systemd,所有进程地父进程

    1、BIOS完整性检查(POST)

    如果PC已经关闭当一个用户按了上电按钮或者使用GUI或者命在令行上重启系统时,启动过程通常初始化了。这是一个执行大量诊断检查的完整性检测。

     POST探测诸如HDD或SDD,键盘,RAM,USB端口以及任何其他硬件组件的硬件操作性。如果某位硬件设备未被发现,或者诸如损坏的HDD或SDD的任何设备中有故障,在屏幕上闪现一条提示你干预的错误消息。

    在某些情况下,尤其遇到缺失RAM模块,蜂鸣声将发出。如果所需硬件存在并且功能正常,启动过程进入到下个阶段。

    2、Bootloader(GRUB2)

    一旦POST结束并且没有问题,BIOS为bootloader和磁盘分区信息探测MBR(主启动记录)。

    MBR是一段位于通常取决于你硬盘驱动架构为/dev/sda或/dev/hda的硬盘驱动第一个扇区上512字节代码。注意:有时,MBR可以位于一个Linux的Live USB或DVD安装上。

    在linux中有三种主要的bootloader:LILO,GRUB和GRUB2。GRUB2 bootloader是在现代Linux发行版中最新和主要的bootloader并且告诉我们决定忽略另外两种,随着时间推移它们已经过时了。

    GRUB2代表GRand Unified Bootloader版本2。一旦BIOS找到了grub2 bootloader,它执行并且装载它到主存(RAM)。

    grub2菜单允许你做很多事情。它允许你选择你想要使用的Linux内核版本。如果你已经多次升级了你的系统,你会看到列出的不同内核版本。另外,它是你能够通过按键盘组合键编辑某些内核参数。

    选择内核版本

    在你安装了多个OS的双启动设置中,grub菜单允许你选取OS启动进入哪一个OS。grub2配置文件是/boot/grub2/grub2.cfg文件。GRUB2的主要目标是装载linux内核到主存。

    3 内核初始化

    内核是任何Linux系统的核心。它连接PC的硬件和底层进程。内核控制在你Linux系统上的所有进程。一旦由这个bootloader装载了所选的Linux内核,它在接管任何任务前它必须从它的压缩版本自提取。在自提取中,所选内核挂载根文件系统和初始化通常被称为init的/sbin/init程序。

    内核初始化过程 

     init总是被执行的第一个程序并且被分配进程ID或PID 1。它是产生各种守护程序并且挂载在/etc/fstab文件中指定的所有分区的init进程。

    内核接着挂载初始的RAM磁盘(initrd),其在挂载真实根文件系统前是一个临时的根文件系统。所有内核和初始的RAM磁盘镜像一起位于/boot目录。

    4 启动systemd

    内核最终装载Systemd,其是老的SysV init的替代品。Systemd是所有Linux系统的母亲并且管理其他事情:文件系统的挂载,启动和停止服务到提高的几个。

    Systemd使用/etc/systemd/default.target文件决定Linux应该启动的状态或目标。

    • 对于(带GUI)桌面工作站,默认目标值是5,它相当于老的SystemV init的run level 5
    • 对于服务器,默认目标是multi-user.target,它对应在SysV init中的run level 3

    这是systemd目标种类:

    • poweroff.targett(runlevel 0):关闭系统。
    • recuse.targett(runlevel 1):启动一个救援shell会话
    • multi-user.targett(runlevel 2,3,4):配置系统为一个非图形(console)多用户系统
    • graphical.targett(runlevel 5):设置系统使用带有网络服务的图形多用户接口
    • reboot.target(runlevel 6):重启系统

    要检查你系统上当前目标,运行命令:

    1. [blctrl@areadetector ~]$ systemctl get-default
    2. graphical.target
    3. [blctrl@areadetector ~]$

    你可以通过在终端上运行以下命令从一个目标切换到另一个目标:

    此操作需要在root用户权限

    # init runlevel-value

    例如,init 3配置系统为一个非图形状态。

    init 6命令重启你的系统并且init 0关门系统。当你想要在两种状态切换时,确认调用sudo command。

    一旦systemd装载了所有守护进程并且设置目标或者运行级别值,启动过程结束。到此,提示你用户名和密码,你通过它们得到了进入Linux系统的入口。

  • 相关阅读:
    Spring MVC简介与概述
    微服务保护
    【Spring Boot+Vue.js+JPA+Mysql】实现前后端分离的名片系统(附源码 超详细必看 可作为大作业使用)
    大数据安全 | 【实验】仿射加密
    【JavaEE】MyBatis
    Hive UDF array_struct_sort 对Array<Struct>进行排序
    书生·浦语大模型全链路开源体系-第6课
    Stages—研发过程可视化建模和管理平台
    适配器模式 结构性模式之五
    你知道ChatGPT里面的G、P、T分别代表什么吗?
  • 原文地址:https://blog.csdn.net/yuyuyuliang00/article/details/125539188