Linux启动过程

启动过程

  1. BIOS/UEFI 阶段

    • 当计算机启动时,首先执行基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)。
    • BIOS/UEFI 负责进行硬件自检(POST)、初始化硬件设备,并加载引导程序。
  2. 引导加载程序阶段

    • BIOS/UEFI 加载引导加载程序(boot loader),如 GRUB(GRand Unified Bootloader)。
    • 引导加载程序负责在启动时提供菜单选择操作系统、加载内核和初始化 RAM 磁盘。
  3. 内核加载阶段

    • 引导加载程序加载 Linux 内核(vmlinuz)到内存中,并启动内核。
    • 内核初始化系统硬件、文件系统、进程管理等核心功能。

默认引导内核
grub2-editenv list

  1. 用户空间初始化阶段

    • 内核启动后,会启动第一个用户空间进程 init 或现代系统中的 systemd
    • initsystemd 负责启动系统服务、加载驱动程序、设置网络等。
  2. 登录管理器阶段

    • 用户空间初始化后,系统启动登录管理器(如 GDM、LightDM)提供登录界面。
    • 用户可以通过登录管理器登录到图形用户界面或命令行终端。
  3. 用户会话阶段

    • 用户成功登录后,系统启动用户会话,加载用户环境、启动用户应用程序等。
    • 用户可以在系统中进行操作、运行应用程序等。

加载文件

  1. 内核文件(vmlinuz):

    • 内核文件通常存储在 /boot 目录下,路径可能类似于 /boot/vmlinuz-<kernel-version>
  2. 初始内存盘(initramfs/initrd)

    • 初始内存盘文件通常也存储在 /boot 目录下,路径可能类似于 /boot/initrd.img-<kernel-version>
  3. 引导加载程序配置文件(如 GRUB 配置文件):

    • GRUB 配置文件通常存储在 /boot/grub 目录下,路径可能是 /boot/grub/grub.cfg/boot/grub/grub.conf

在 CentOS 6 中,使用的是 GRUB Legacy,其配置文件通常位于 /boot/grub/grub.conf。
GRUB Legacy 的配置文件是 grub.conf,其中包含了引导加载程序的设置和引导选项。
在 CentOS 7 中,使用的是 GRUB 2,其配置文件通常位于 /boot/grub2/grub.cfg。
GRUB 2 的配置文件是 grub.cfg,与 GRUB Legacy 的 grub.conf 不同,但功能类似。

  1. 系统服务配置文件(如 systemd 配置文件):

    • systemd 配置文件通常存储在 /etc/systemd/system 目录下,包括系统服务单元文件和其他配置文件。
  2. 登录管理器配置文件(如 GDM、LightDM 配置文件):

    • 登录管理器的配置文件通常存储在 /etc 目录下,例如 GDM 的配置文件可能是 /etc/gdm/custom.conf,LightDM 的配置文件可能是 /etc/lightdm/lightdm.conf
  3. 用户环境配置文件(如 bash 配置文件):

    • 用户环境的配置文件通常存储在用户的主目录下,例如 bash 的配置文件 .bashrc 可能是 ~/.bashrc

初始化系统

CentOS 6 使用的是 SysVinit(System V init)作为初始化系统,而 CentOS 7 则使用的是 systemd。

  1. 启动速度

    • systemd 相对于 SysVinit 更快,因为它采用并行启动服务的方式,而不是线性启动。
  2. 服务管理

    • systemd 提供了更强大和灵活的服务管理功能,支持服务的并行启动、自动重启、依赖关系管理等。
    • SysVinit 使用脚本来管理服务,而 systemd 使用单元文件(unit files)来定义和控制服务。
  3. 日志管理

    • systemd 集成了日志记录功能,通过 journalctl 命令可以方便地查看系统日志。
    • SysVinit 使用传统的日志文件,如 /var/log/messages
  4. 系统状态管理

    • systemd 提供了更多系统状态管理功能,如挂起、休眠、恢复等。
    • SysVinit 对系统状态管理的支持相对较少。
  5. 启动过程

    • systemd 使用 target(目标)的概念来代替 SysVinit 的运行级别(runlevel),更加灵活和直观。
    • systemd 的启动过程更加现代化和可配置。
初始化系统不同版本centos的区别
/etc/rc.d 目录是 Linux 系统中与系统启动和运行级别相关的目录,特别是在使用 SysVinit 的系统中(如 CentOS 6)。该目录包含了一些与系统初始化和服务管理相关的文件和子目录
  1. /etc/rc.d/init.d

    • 这个子目录包含了所有的服务启动脚本(init 脚本),这些脚本用于启动、停止和管理系统服务。
    • 每个脚本通常对应一个服务,脚本的命名通常与服务名称相同。
  2. /etc/rc.d/rc*.d

    • 这些目录(如 /etc/rc.d/rc0.d, /etc/rc.d/rc1.d, … /etc/rc.d/rc6.d)对应不同的运行级别(runlevel)。
    • 每个运行级别目录中包含以 S 开头的脚本(表示启动服务)和以 K 开头的脚本(表示停止服务)。
    • 系统在进入特定运行级别时,会根据这些脚本的顺序启动或停止相应的服务。
  3. /etc/rc.d/rc

    • 这个文件是一个脚本,用于管理不同运行级别之间的切换。
    • 它会根据当前运行级别和目标运行级别,调用相应的启动和停止脚本。
/usr/sbin/init
  • 在一些 Linux 系统中,/usr/sbin/init 这个路径下通常是一个符号链接,指向真正的初始化程序,即 systemd。systemd 是一个系统和服务管理器,取代了传统的 SysVinit 系统,负责系统的初始化、服务管理和进程控制。

  • 因此,当您在系统中查看 /usr/sbin/init 时,实际上是指向 systemd 这个程序的。systemd 是一个功能强大的初始化系统,提供了更快的启动速度、并行启动服务、依赖关系管理、日志记录等功能,使得系统管理更加高效和灵活。

  • 如果您在系统中查看 /usr/sbin/init,而不是一个符号链接,而是一个实际的可执行文件,可能表示系统使用的是传统的 SysVinit 系统。在这种情况下,/usr/sbin/init 是系统的初始化程序,负责启动系统并管理其他进程。

/etc/systemd/system

/etc/systemd/system 目录是 systemd 系统服务单元文件的存储位置,用于定义和配置系统服务。systemd 是现代 Linux 系统中常用的初始化系统和服务管理器,通过单元文件(unit files)来描述和控制系统服务的行为。

  1. 服务单元文件(Service Units)

    • 服务单元文件以 .service 扩展名结尾,用于定义和控制系统服务的启动、停止和管理。
    • 这些文件包含了服务的配置信息,如服务的执行命令、依赖关系、启动顺序等。
  2. 套接字单元文件(Socket Units)

    • 套接字单元文件以 .socket 扩展名结尾,用于定义和管理套接字服务。
    • 这些文件描述了套接字服务的监听地址、类型和相关配置。
  3. 设备单元文件(Device Units)

    • 设备单元文件以 .device 扩展名结尾,用于描述系统中的设备。
    • 这些文件定义了设备的属性、驱动程序和相关信息。
  4. 其他单元文件

    • 除了上述类型的单元文件外,/etc/systemd/system 目录中还可能包含其他类型的单元文件,如挂载单元文件(.mount)、定时器单元文件(.timer)等。

编辑或创建适当的 systemd 单元文件,管理员可以定义和配置系统服务的行为,包括启动顺序、依赖关系、环境变量设置等。

请注意,对于系统服务的自定义配置,建议将单元文件放置在 /etc/systemd/system 目录中,而不是直接修改 /lib/systemd/system 目录中的系统提供的单元文件,以避免系统升级或更新时被覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远歌已逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值