Linux-Redhat系统启动读取文件方式

 更新时间:2026年02月24日 09:51:36   作者:feng68_  
文章详细描述了RHEL系统从启动到登录的整个过程,包括读取关键配置文件、加载内核、挂载文件系统、启动初始化系统以及进入用户界面的步骤

文件引导启动系统

所要读取的文件:

  • 首先读的是/boot/grub2/grub.cfg这个文件
  • 之后是这个文件/boot/loader/entries/
  • 之后读取/boot下面的内核文件、系统初始化镜像文件
  • 开始启动内核

之后读取/etc/fstab

之后读取/etc/sysconfig/selinux

  • 开始系统初始化

之后读取/etc/systemd/system/multi-user.target.wants/下的软链接文件

  • 之后读取/etc/rc.d/rc.local(开机自运行脚本)
  • 最后读取tty

1. /boot/grub2/grub.cfg

首先读的是/boot/grub2/grub.cfg这个文件

开机后会有两个内核标题

这两个标题看的是/boot/grub2/grub.cfg这个文件,这个文件中指定了下一步读取哪一个文件、timeout等于几秒等等配置

[root@Client ~]# vim /boot/grub2/grub.cfg
# timeout(就是开机启动时有5秒给你选择操控图形界面,不做操作的话就默认进入系统正常内核文件)指定为多少秒,默认是五秒,但是一般不修改这个文件,直接修改这个文件很危险,可以修改/etc/default/grub文件,当grub.cfg文件丢失后,系统无法完成自动启动
 terminal_output console
 if [ x$feature_timeout_style = xy ] ; then
   set timeout_style=menu
   set timeout=5
 # Fallback normal timeout code in case the timeout_style feature is
 # unavailable.
 else
   set timeout=5
 fi
 ​
 [root@Server ~]# vim /etc/default/grub  # 这个文件的内容是生成grub.cfg时使用的默认参数
 GRUB_TIMEOUT=5      # 修改这里参数是表示修改:grub启动时的等待时间
 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
 GRUB_DEFAULT=saved
 GRUB_DISABLE_SUBMENU=true
 GRUB_TERMINAL_OUTPUT="console"
 GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUID=bfdecbb4-7f0a-43ca-b071-da64fa17f29b rhgb quiet net.ifnames=0 selinux=0"
 GRUB_DISABLE_RECOVERY="true"
 GRUB_ENABLE_BLSCFG=true
 [root@Server ~]# grub2-mkconfig > /boot/grub2/grub.cfg  # 生成新的grub.cfg并覆盖掉旧的grub.cfg

2. /boot/loader/entries/

之后读取/boot/loader/entries/下面的内核文件

 [root@Client ~]# ll /boot/loader/entries/
 total 8
 -rw-r--r--. 1 root root 507 Oct 26 22:18 3890aef9b6a64543b93a31bfc8c60d0d-0-rescue.conf     # 挽救内核文件
 -rw-r--r--. 1 root root 469 Oct 26 22:18 3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf     # 正常内核文件
 ​
 [root@Client ~]# vim /boot/loader/entries/3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf
 title Red Hat Enterprise Linux (5.14.0-427.13.1.el9_4.x86_64) 9.4 (Plow)
 version 5.14.0-427.13.1.el9_4.x86_64    # 标题
 linux /vmlinuz-5.14.0-427.13.1.el9_4.x86_64     # 引导内核,读取内核镜像
 initrd /initramfs-5.14.0-427.13.1.el9_4.x86_64.img $tuned_initrd    # 读取(加载)系统初始化镜像
 options root=UUID=a591379a-75cc-41c4-85d3-45e085821016 ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUID=bfdecbb4-7f0a-43ca-b071-da64fa17f29b rhgb quiet net.ifnames=0 selinux=0  # 启动参数  
 grub_users $grub_users
 grub_arg --unrestricted
 grub_class rhel
 ​
 # 之前使用grub命令就是改变这个文件的“启动参数”的位置
 grubby --update-kernel ALL --args net.ifnames=0
 grubby --update-kernel ALL --args selinux=0

虚拟机按e后会发现内容和上面查看的文件的内容一样

3. 内核文件、系统初始化镜像文件

 [root@Client ~]# ll /boot
 total 214032
 -rw-r--r--. 1 root root    223205 Apr 10  2024 config-5.14.0-427.13.1.el9_4.x86_64
 drwxr-xr-x. 3 root root        17 Oct 25 13:14 efi
 drwx------. 5 root root        97 Oct 29 16:51 grub2
 -rw-------. 1 root root 117325156 Oct 25 13:16 initramfs-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d.img
 -rw-------. 1 root root  34653703 Oct 25 13:18 initramfs-5.14.0-427.13.1.el9_4.x86_64.img   # 系统初始化镜像文件
 -rw-------. 1 root root  31115776 Oct 25 13:22 initramfs-5.14.0-427.13.1.el9_4.x86_64kdump.img
 drwxr-xr-x. 3 root root        21 Oct 25 13:15 loader
 lrwxrwxrwx. 1 root root        52 Oct 25 13:15 symvers-5.14.0-427.13.1.el9_4.x86_64.gz -> /lib/modules/5.14.0-427.13.1.el9_4.x86_64/symvers.gz
 -rw-------. 1 root root   8629622 Apr 10  2024 System.map-5.14.0-427.13.1.el9_4.x86_64
 -rwxr-xr-x. 1 root root  13604984 Oct 25 13:16 vmlinuz-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d
 -rwxr-xr-x. 1 root root  13604984 Apr 10  2024 vmlinuz-5.14.0-427.13.1.el9_4.x86_64     # 系统内核文件

读完这两个文件后,没问题就开始启动内核(vmlinuz-5.14.0-427.13.1.el9_4.x86_64),它的主要作用是只读挂载根分区(/)

4. 开始启动内核

4.1 /etc/fstab

目的是确定系统中还有哪些磁盘需要挂载

[root@Client ~]# vim /etc/fstab
​
 #
 # /etc/fstab
 # Created by anaconda on Sat Oct 25 05:13:56 2025
 #
 # Accessible filesystems, by reference, are maintained under '/dev/disk/'.
 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
 #
 # After editing this file, run 'systemctl daemon-reload' to update systemd
 # units generated from this file.
 #
 UUID=a591379a-75cc-41c4-85d3-45e085821016 /                       xfs     defaults        0 0
 UUID=3d02312d-1efc-4336-9505-125191f59fa3 /boot                   xfs     defaults        0 0
 UUID=bfdecbb4-7f0a-43ca-b071-da64fa17f29b none                    swap    defaults        0 0
 ​

4.2 /etc/sysconfig/selinux

目的是通过此文件里面的参数来确认是否激活selinux(我记得哪个网卡默认命名(grub……net.ifnames=0命令那个)那个文件也读)

[root@Client ~]# vim /etc/sysconfig/selinux
 # This file controls the state of SELinux on the system.
 # SELINUX= can take one of these three values:
 #     enforcing - SELinux security policy is enforced.
 #     permissive - SELinux prints warnings instead of enforcing.
 #     disabled - No SELinux policy is loaded.
 # See also:
 # https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/changing-selinux-states-and-modes_using-selinux#changing-selinux-modes-at-boot-time_changing-selinux-states-and-modes
 #
 # NOTE: Up to RHEL 8 release included, SELINUX=disabled would also
 # fully disable SELinux during boot. If you need a system with SELinux
 # fully disabled instead of SELinux running with no policy loaded, you
 # need to pass selinux=0 to the kernel command line. You can use grubby
 # to persistently set the bootloader to boot with selinux=0:
 #
 #    grubby --update-kernel ALL --args selinux=0
 #
 # To revert back to SELinux enabled:
 #
 #    grubby --update-kernel ALL --remove-args selinux
 #
 SELINUX=enforcing
 # SELINUXTYPE= can take one of these three values:
 #     targeted - Targeted processes are protected,
 #     minimum - Modification of targeted policy. Only selected processes are protected.
 #     mls - Multi Level Security protection.
 SELINUXTYPE=targeted

然后修改系统的时钟

然后对硬件开始初始化

到此内核启动结束了

5. 开始系统初始化

内核启动结束后开始读取“系统初始化镜像文件”(initramfs-5.14.0-427.13.1.el9_4.x86_64.img)

主要作用是加载初始化系统,开始进行系统初始化

5.1 /etc/systemd/system/multi-user.target.wants/下的软链接文件

首先把根(/)读写挂载,进入/etc/systemd/system/multi-user.target.wants/中读取链接文件,它们都是链接到做开机自启动服务的服务脚本

[root@Client ~]# ll /etc/systemd/system/multi-user.target.wants/

6. /etc/rc.d/rc.local

读取完这些链接后,最后会读取开机自运行脚本(/etc/rc.d/rc.local)

[root@Client ~]# ll /etc/rc.d/rc.local
 -rwxr-xr-x. 1 root root 497 Oct 26 22:15 /etc/rc.d/rc.local

7.tty

读取完开机自运行脚本后开始读取tty

❓tty是什么

  • tty 是 Linux 中用户与系统交互的 “终端接口”,涵盖物理终端、虚拟终端、伪终端等多种形式。它是命令行交互的基础,通过 tty 命令可查看当前终端类型,而 Ctrl + Alt + Fn 组合键可切换不同的虚拟终端,这在系统故障排查(如图形界面崩溃)时非常实用。
  • 简单来说tty 是用户输入命令、系统输出结果的 “交互窗口”。

tty启动完后启动图形(如果开图形的话就显示图形登录界面)如果没开就显示那个黑黑的登录界面

至此,rhel系统启动完成

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux下如何查看内存泄露的命令

    Linux下如何查看内存泄露的命令

    这篇文章主要介绍了Linux下如何查看内存泄露的命令方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • inotify-tools+rsync实时同步文件的配置方法

    inotify-tools+rsync实时同步文件的配置方法

    我使用的是google的inotify-tools,比较简单.国内有功能很强大的类似的程序,但是好复杂.
    2013-02-02
  • CentOS7 LNMP+phpmyadmin环境搭建 第一篇虚拟机及centos7安装

    CentOS7 LNMP+phpmyadmin环境搭建 第一篇虚拟机及centos7安装

    这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建第一篇虚拟机及centos7安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Linux中的进程守护supervisor安装配置及使用

    Linux中的进程守护supervisor安装配置及使用

    supervisor是一个很好的守护程序管理工具,配置方面自动启动,日志输出,自动切割日志等等一系列强大功能,下面是在CentOS下安装使用supervisor的记录,非常不错,感兴趣的朋友跟随小编一起看看吧
    2019-07-07
  • 在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)

    在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP

    LEMP 是个缩写,代表一组软件包(L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络应用和网页
    2016-09-09
  • Linux切换到Root用户的方式及区别详解

    Linux切换到Root用户的方式及区别详解

    在 Linux 系统中,切换到 root 用户是执行系统管理任务的常见需求,su(substitute user)和 sudo(superuser do)是实现这一目标的核心工具,文将详细解析 su 的选项、sudo 与 su 的配合效果,需要的朋友可以参考下
    2025-09-09
  • 阿里云添加的安全组端口以及添加后无法访问问题排查

    阿里云添加的安全组端口以及添加后无法访问问题排查

    这篇文章主要介绍了阿里云添加的安全组端口以及添加后无法访问问题排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Linux查看分区文件系统类型的方法总结

    Linux查看分区文件系统类型的方法总结

    这篇文章主要给大家总结介绍了关于Linux查看分区文件系统类型的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • centos6.5安装vncserver图文教程

    centos6.5安装vncserver图文教程

    这篇文章主要介绍了centos6.5安装vncserver图文教程的相关资料,这里对centos 安装vncserver 进行了实例介绍,需要的朋友可以参考下
    2016-11-11
  • Linux之信号的保存方式

    Linux之信号的保存方式

    这篇文章主要介绍了Linux之信号的保存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论