深入了解Linux启动过程,加深对上篇系统排错文章的理解
启动管理
- Linux 系统的启动过程
RHEL 7采用了systemd,启动过程被大大缩短,具体步骤如下
# 1. 开机自检
# 2. 从硬盘的MBR读取引导程序GRUB
# 3. 引导程序根据配置文件显示引导菜单
# 4. 若进入Linux系统,此时引导程序加载Linux内核文件
# 5. 内核全部加载入内存后,GRUB任务完成,此时控制权交给Linux,CPU开始执行Linux内核代码,
如初始化任务调度、分配内存、加载驱动等。此步骤建立一个内核运行环境
# 6. 内核代码执行完,开始执行Linux系统第一个进程--systemd,进程号为1
# 7. systemd进程启动后读取/etc/systemd/system/default.target,该文件作用是设置系统运行级别,
根据此文件设置系统的运行级别并启动相应服务
# 8. 服务启动完成后,引导login弹出登录界面
-
Linux 运行级别
Linux系统不同的运行级别启动不同的服务,Linux系统共有7个运行级别,由数字 0~6 表示
RedHat 7由于系统架构的变动,查看运行级别已经不能用”runlevel“了,显示结果为”unknown“ systemctl get-default # 查看运行级别 systemctl set-default runlevel3.target/multi-user.target # 设置默认运行级别为3/多用户 systemctl iso-late runlevel3.target/multi-user.target # 切换运行级别为3/多用户 systemctl set-default runlevel5.target/graphical.target # 设置默认运行级别为5/图形化 systemctl iso-late runlevel5.target/graphical.target # 切换运行级别为5/图形化
系统引导器 GRUB
GRUB全称GNU GRUB,是一个来自GNU计划的多操作系统引导器,可让用户在安装的多个不同操作系统之间选择启动的操作系统,同时还可以向操作系统内核传递参数,RHEL7默认使用GRUB作为系统引导器
-
GRUB 2 简介
默认情况下,RHEL 7 使用 GRUB 2 作为引导器,GRUB 2 引导系统使用的分区位于/boot中,称为引导分区
/boot中保存有linux内核、内存映像文件,GRUB2安装在/boot/grub2目录中,/boot/grub2/grub.cfg是配置文件
-
GRUB 启动菜单界面
Linux系统每次启动会显示启动菜单界面,以便用户选择启动的操作系统
该菜单界面中,上下方向键选择需要启动的选项,按 e 键编辑启动选项,编辑启动选项通常是为了向内核传参,如进入紧急模式时,需要向内核传递参数 rd.break,内核接收到该参数会自动进入紧急模式;按 c 键进入 GRUB 命令行界面 -
GRUB 2 的命令行界面
以 “grub>” 为提示符,按 Enter键可执行命令 -
GRUB 2 的一些常用命令
ls 列出设备或文件列表 set 设置环境变量 linux 引导操作系统内核 initrd 载入内存映像盘 reboot 重启计算机 boot 按设置引导操作系统
-
GRUB 2 手动引导Linux
# 先利用ls命令查看有哪些分区,再使用ls查看分区内容,确定了系统引导分区是hd0,msdos1 # 使用set命令将引导分区设置为根目录,为了能建立Linux内核运行环境 # 为引导器指定Linux内核和内存映像文件(文件名已在之前ls中列出) # 当前根目录被设置为hd0,msdos1,此处/boot分区是独立的,所以‘/’后面直接加文件名 # 使用root参数指定真正的根目录,以便内核能读取到根目录中的配置文件