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

Linux 启动流程、密码破解、引导修复完全手册

Linux 启动流程、密码破解、引导修复完全手册

一、Linux系统启动完整流程

1. 开机自检(BIOS/UEFI阶段)

  • 计算机接通电源后,首先进行硬件自检(POST,Power-On Self-Test)
  • 检测CPU、内存、硬盘、显卡等核心硬件是否正常
  • 完成后,根据BIOS/UEFI设置的启动顺序(如硬盘、光驱、U盘等)查找启动设备

2. MBR引导

  • 从首选启动设备(通常是硬盘)的MBR(主引导记录)中读取引导程序GRUB2
  • MBR位于硬盘的第一个扇区(512字节),包含引导代码和分区表

3. GRUB2菜单

  • 引导程序GRUB2读取配置文件/boot/grub2/grub.cfg
  • 加载配置并显示引导菜单,允许用户选择要启动的操作系统或内核版本

4. 加载Linux内核

  • 根据用户选择,GRUB2加载对应的Linux内核文件(位于/boot目录下,如vmlinuz-xxx
  • 同时加载初始ramdisk镜像(initramfs-xxx.img),提供内核启动所需的临时文件系统和驱动

5. 内核初始化

  • 内核载入内存后,GRUB2完成使命,控制权移交内核
  • 内核初始化任务调度、内存管理、设备驱动加载等,建立基本运行环境

6. 启动systemd进程

  • 内核初始化完成后,启动系统第一个进程systemd(进程号为1)
  • systemd是系统的初始化系统,负责后续所有进程的启动和管理

7. 确定运行级别

  • systemd读取/etc/systemd/system/default.target文件,确定系统默认运行级别
  • 根据运行级别启动相应的服务和程序

8. 进入登录界面

  • 所有服务启动完成后,引导至登录界面,等待用户登录

二、运行级别(target)说明

运行级别对应target说明
0poweroff.target关机
1rescue.target单用户模式(无网络)
2multi-user.target多用户模式(无网络,无图形)
3multi-user.target完全多用户模式(命令行界面)
4无对应默认target保留,可自定义
5graphical.target图形化界面
6reboot.target重启

运行级别相关操作

  • 查看默认运行级别:systemctl get-default
  • 设置默认运行级别:systemctl set-default [multi-user.target/graphical.target]
  • 临时切换到图形化界面:systemctl isolate graphical.target

三、GRUB2配置与维护

生成GRUB2配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg
# 或
grub2-mkconfig > /boot/grub2/grub.cfg

修复GRUB2引导

当GRUB2目录被删除时,需执行以下步骤恢复:

  1. 安装启动引导器到硬盘:grub2-install /dev/sda/dev/sda为系统硬盘)
  2. 重建配置文件:grub2-mkconfig -o /boot/grub2/grub.cfg

GRUB2加密

1. 明文加密
vim /etc/grub.d/00_header
# 在文件末尾添加以下内容
cat << EOF
set superusers="zhangsan"  # 定义超级用户
password zhangsan 123456   # 用户名和密码(明文)
EOF# 重新生成配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
2. 密文加密
# 生成密文密码
grub2-mkpasswd-pbkdf2
# 按提示输入密码,复制生成的密文vim /etc/grub.d/00_header
# 在文件末尾添加以下内容
cat << EOF
set superusers="tom"  # 定义超级用户
password_pbkdf2 tom 粘贴刚才复制的密文  # 用户名和密文密码
EOF# 重新生成配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

四、破解root密码步骤

粗心大意的小明把密码忘记了快点帮帮它把

  1. 重启系统:reboot

  2. 在GRUB2菜单界面按e进入编辑模式

    在这里插入图片描述

  3. 找到Linux内核所在行,在末尾添加rd.break,按Ctrl+X启动
    请添加图片描述

  4. 进入伪系统后,重新挂载根目录并赋予读写权限:mount -o remount,rw /sysroot

  5. 切换到真实系统环境:chroot /sysroot

    在这里插入图片描述

  6. 修改root密码:

    • 方法1:passwd root(按提示输入新密码)
    • 方法2:echo 新密码 | passwd --stdin root(直接设置密码,如echo linux123 | passwd --stdin root
      请添加图片描述
  7. 处理SELinux标签:touch /.autorelabel

    请添加图片描述

  8. 退出并重启:exit(退出chroot环境),再次exit(重启系统)

    请添加图片描述

五、修复/boot目录

小明一不小心把boot删了,现在系统崩溃了,快来帮帮它吧

请添加图片描述

/boot目录损坏或丢失时,可通过以下步骤恢复:

  1. 进入系统救援模式(从安装光盘或U盘启动,选择"Rescue installed system")

    请添加图片描述

    按住shift加加号键将cd-ROM移到最上面

    请添加图片描述

    选最下行

    请添加图片描述

    再按第二行进入救援模式

  2. 切换到系统根目录:chroot /mnt/sysroot

请添加图片描述

选一让系统自动的帮助你修复

  1. 挂载安装介质:mount /dev/cdrom /mnt(假设光驱为/dev/cdrom

    输入chroot /mnt/sysimage进入可输入命令的环境

    请添加图片描述

    挂载

    请添加图片描述

  2. 重新安装内核:rpm -ivh /mnt/Packages/kernel-<版本号>.rpm --force(需替换为实际内核包名)

    请添加图片描述

  3. 恢复GRUB2引导:grub2-install /dev/sda

    请添加图片描述

  4. 重建GRUB2配置:grub2-mkconfig > /boot/grub2/grub.cfg

    请添加图片描述

  5. 退出救援模式:exit,系统将正常启动

http://www.dtcms.com/a/303910.html

相关文章:

  • 【智能协同云图库】智能协同云图库第八弹:基于阿里云百炼大模型—实现 AI 扩图功能
  • haproxy应用详解
  • 创建型设计模式-工厂方法模式和抽象工厂方法模式
  • 云端文档管理新纪元:Paperless-ngx与cpolar打造的无边界文件生态
  • Ext JS极速项目之 Coworkee
  • 在WSL中配置VS Code C++开发环境完整教程
  • Java抽Oracle数据时编码问题
  • 百元级工业级核心板:明远智睿×瑞萨V2H,开启AIoT开发新纪元
  • 论文阅读:LMM-Det: Make Large Multimodal Models Excel in Object Detection
  • 从0到1学PHP(三):PHP 流程控制:掌控程序的走向
  • 解析hive sql——将别名表、字段转化为指示表字段
  • 算法思维进阶 力扣 375.猜数字大小 II 暴力递归 记忆化搜索 DFS C++详细算法解析 每日一题
  • 详细说明零拷贝
  • LeetCode 1616.分割两个字符串得到回文串
  • 使用鼠标在Canvas上绘制矩形
  • 【dropdown组件填坑指南】鼠标从触发元素到下拉框中间间隙时,下拉框消失,怎么解决?
  • 前后端分离的项目,有一个计算的功能,是前端计算还是后端计算
  • C/C++离线环境安装(VSCode + MinGW)
  • leetcode热题——螺旋矩阵
  • JAVA中集合的遍历方式
  • Python OpenCV图像增强:高通滤波与浮雕特效实战指南
  • SAP-ABAP:Excel 文件内容解析到 ABAP 内表函数ALSM_EXCEL_TO_INTERNAL_TABLE运用详解
  • 记一次生产环境排查OOM问题,byte[]数组超多
  • 自动调优 vLLM 服务器参数(实战指南)
  • ArkTS懒加载LazyForEach的基本使用
  • 【Delphi】快速理解泛型(Generics)
  • 疯狂星期四文案网第23天运营日记
  • 第2章 cmd命令基础:常用基础命令(1)
  • 为什么分类任务偏爱交叉熵?MSE 为何折戟?
  • Aspose:构建高效文档处理系统的专业组件选择