当前位置: 首页 > java >正文

Linux 系统启动与 GRUB2 核心操作指南

Linux 系统启动与 GRUB2 核心操作指南

Linux 系统的启动过程是一个环环相扣的链条,从硬件自检到用户登录,每一步都依赖关键组件的协作。其中,GRUB2 引导器systemd 进程是核心枢纽,而运行级别则决定了系统的启动状态。以下是系统启动流程、关键配置及故障处理的详细解析

一、Linux 系统启动全流程

系统启动从硬件通电到登录界面出现,可分为 8 个关键步骤,层层递进:

  1. 开机自检(POST)
    计算机通电后,BIOS/UEFI 会对 CPU、内存、硬盘等硬件进行检测,确保硬件正常工作。检测通过后,定位启动设备(如硬盘)
  2. MBR 引导
    从启动设备的MBR(主引导记录) 中读取引导程序 GRUB2(MBR 位于硬盘第一个扇区,仅 512 字节)。
  3. GRUB2 菜单加载
    GRUB2 读取配置文件/boot/grub2/grub.cfg,解析内容并显示引导菜单(如多系统选择、内核版本选择)
  4. 加载 Linux 内核
    用户选择内核后,GRUB2 将内核文件(如/boot/vmlinuz-xxx)和初始化内存盘(/boot/initramfs-xxx.img)载入内存
  5. 内核初始化
    内核接管系统控制权,完成内存分配、进程调度、驱动加载等基础环境搭建,为后续进程运行铺路
  6. 启动 systemd 进程
    内核初始化完成后,启动系统第一个进程systemd(进程号为 1),它是所有后续进程的父进程
  7. 设置运行级别
    systemd 读取/etc/systemd/system/default.target文件,确定系统默认运行级别,并启动对应级别的服务(如网络、图形界面)
  8. 进入登录界面
    所有服务启动完成后,系统弹出登录界面,等待用户输入账号密码
二、运行级别:系统状态的 “开关”

运行级别定义了系统启动后的状态,通过对应的 target 文件控制。传统的 0-6 级别与 systemd 的 target 对应关系如下:

运行级别对应 target描述
0poweroff.target关机
1rescue.target单用户模式(无网络,用于修复)
2multi-user.target多用户模式(无网络,较少使用)
3multi-user.target完全多用户模式(命令行界面,有网络)
4(保留)未定义,可自定义(保留)
5graphical.target图形化界面(含命令行功能)
6reboot.target重启

常用操作命令

  • 查看当前默认运行级别:systemctl get-default
  • 设置默认运行级别(如命令行):systemctl set-default multi-user.target
  • 临时切换到图形界面(不改变默认):systemctl isolate graphical.target
三、GRUB2 引导器:启动的 “总开关”

GRUB2 是系统启动的关键引导程序,负责加载内核。以下是其核心配置与维护操作:

  1. 生成 GRUB2 配置文件
    当内核更新或引导菜单需要修改时,需重新生成grub.cfg

    grub2-mkconfig -o /boot/grub2/grub.cfg  # 推荐方式,直接写入配置文件
    # 或 grub2-mkconfig > /boot/grub2/grub.cfg
    
  2. GRUB2 加密:防止未授权修改
    为避免他人通过 GRUB2 菜单篡改系统(如破解密码),可对 GRUB2 加密:

    • 明文加密(简单但密码可见):
      编辑/etc/grub.d/00_header,添加:

      cat << EOF
      set superusers="zhangsan"  # 定义管理员用户
      password zhangsan 123456   # 用户名+密码(明文)
      EOF
      

      生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg

    • 密文加密(更安全):
      先生成密文密码:

      grub2-mkpasswd-pbkdf2  # 输入密码后,复制输出的密文(不含空格)
      

      编辑/etc/grub.d/00_header,添加:

      cat << EOF
      set superusers="tom"  # 管理员用户
      password_pbkdf2 tom 复制的密文  # 密文密码
      EOF
      

      生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg

四、应急处理:破解 root 密码与修复 GRUB2

系统故障时,需掌握关键修复技巧:

  1. 破解 root 密码(忘记密码时):

    1. 重启系统,在 GRUB2 菜单按e进入编辑模式;

    2. 找到内核行(以linux16linux开头),末尾添加rd.break,按Ctrl+X启动;

    3. 进入伪系统,重新挂载根目录为读写模式:

      mount -o remount,rw /sysroot
      
    4. 切换到真实系统环境:chroot /sysroot

    5. 修改 root 密码:

      passwd root  # 手动输入新密码
      # 或 echo "新密码" | passwd --stdin root  # 非交互式设置
      
    6. 修复 SELinux 标签(避免权限问题):touch /.autorelabel

    7. 退出并重启:exit(两次,第一次退出 chroot,第二次重启系统)

  2. 修复 GRUB2 引导器(误删 GRUB2 目录时):

    1. 重新安装 GRUB2 到硬盘(以/dev/sda为例):

      grub2-install /dev/sda
      
    2. 生成配置文件恢复菜单:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      
  3. 修复 /boot 目录(内核文件丢失时):

    1. 进入救援模式(从安装盘启动,选择 “Rescue a Linux system”);

    2. 挂载系统根目录到/mnt/sysroot,并切换到该环境:chroot /mnt/sysroot

    3. 挂载安装光盘(提供内核包):mount /dev/cdrom /mnt

    4. 重新安装内核(需替换为实际内核版本):

      rpm -ivh /mnt/Packages/kernel-3.10.0-xxx.rpm --force
      
    5. 恢复 GRUB2(同上述 “修复 GRUB2” 步骤);

    6. 退出并重启:exit(两次)

总结:启动流程与核心操作要点

Linux 启动的核心逻辑是 “硬件自检→引导程序→内核→初始化进程→服务启动”,其中GRUB2systemd是两大关键组件。掌握运行级别的切换、GRUB2 的配置与加密、以及应急修复(如破解密码、恢复引导器),能有效应对系统启动故障。记住:配置修改后及时生成 GRUB2 配置文件,是避免引导失败的关键习惯

http://www.xdnf.cn/news/16597.html

相关文章:

  • Kafka运维实战 17 - kafka 分区副本从 1 增加到 3【实战】
  • 作物生长模型Oryza V3实战17:土壤数据集
  • 【RH134 问答题】第 9 章 访问网络附加存储
  • 2025年Solar应急响应公益月赛-7月笔记ing
  • 正运动控制器Zbasic回零详细教程(不带Z信号)
  • 【Linux知识】Linux Shell 脚本中的 `set -ex` 命令深度解析
  • SQL排查、分析海量数据以及锁机制
  • Fast Video generation with sliding tile attention
  • 2-verilog-基础语法
  • flask使用celery通过数据库定时
  • 【Linux我做主】探秘进程状态
  • Java中的有界队列和无界队列详解
  • CMake 目标文件后缀
  • react 项目怎么打断点
  • 大规模矩阵构建与高级算法应用
  • 【Linux篇】补充:消息队列和systemV信号量
  • 为什么分类任务偏爱交叉熵?MSE 为何折戟?
  • 【C++】判断语句
  • 网络数据传输与NAT技术的工作原理
  • 智能体安全与可信AI:防护机制与伦理考量
  • 代码随想录Day32:动态规划(斐波那契数、爬楼梯、使用最小花费爬楼梯)
  • 代码随想录算法训练营第三十三天
  • 力扣 之 最小覆盖子串(变长滑动窗口,越短越好)
  • 历史版本的vscode下载地址
  • 数据处理工具是做什么的?常见数据处理方法介绍
  • C++ 哈希算法、贪心算法
  • Android15广播ANR的源码流程分析
  • Linux系统Centos7 安装mysql5.7教程 和mysql的简单指令
  • rhel9.1配置本地源并设置开机自动挂载(适用于物理光驱的场景)
  • 在 Windows 系统 下直接使用了 Linux/macOS 的环境变量设置语法 PLATFORM=android