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

Linux 系统启动过程及相关实验(破解密码;明文密文加密;修复grub2目录和boot目录)

Linux 系统启动过程及相关实验

一、Linux 系统启动过程

  1. 开机自检:计算机启动后,BIOS/UEFI 进行硬件自检(如内存、硬盘、CPU 等),确保硬件正常。
  1. 读取引导程序:从硬盘的 MBR(主引导记录)中读取引导程序 GRUB2。
  1. 加载引导配置:GRUB2 根据配置文件 /boot/grub2/grub.cfg 加载配置并显示引导菜单。
  1. 加载内核文件:引导程序加载 Linux 内核文件(通常位于 /boot 目录)。
  1. 初始化内核环境:内核载入内存后,接管系统控制权,初始化任务调度、内存分配、加载驱动等,建立内核运行环境。
  1. 启动第一个进程:内核执行完成后,启动系统第一个进程 systemd(进程号为 1)。
  1. 设置运行级别:systemd 读取 /etc/systemd/system/default.target 文件,根据该文件设置系统运行级别并启动相应服务。
  1. 进入登录界面:服务启动完成后,引导至登录界面。

二、运行级别说明

运行级别

对应 target 文件

说明

0

poweroff.target

关机

1

rescue.target

单用户模式(用于系统修复)

2

-

多用户模式,无网络(较少使用)

3

multi-user.target

完全多用户模式,命令行界面

4

-

保留(未默认使用)

5

graphical.target

图形化界面

6

reboot.target

重启

运行级别相关命令

  • 查看默认运行级别:
systemctl get-default
  • 设置默认运行级别(如设置为命令行界面):
systemctl set-default multi-user.target
  • 临时切换到图形化界面(当前会话生效):
systemctl isolate graphical.target

三、实验操作

实验一:破解 Linux 管理员 root 密码

步骤:

1.重启系统:

reboot

2.启动时按 e 键编辑 GRUB2 引导菜单。

3.在 Linux 内核所在行的末尾添加 rd.break,按 Ctrl+X 启动进入伪系统。

4.重新挂载根目录并赋予读写权限:

mount -o remount,rw /sysroot

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

chroot /sysroot

6.修改 root 密码(例如设置为 linux123):

# 方法 1:交互式设置

passwd root

# 方法 2:非交互式设置

echo linux123 | passwd --stdin root

7.为 SELinux 重打标签(避免权限问题):

touch /.autorelabel

8.退出并重启系统:

exit # 退出 chroot 环境

exit # 重启系统

9.使用新的密码测试能否打开

实验二:GRUB2 加密(明文 / 密文)

1. 明文加密

        1.编辑 GRUB2 配置文件:

vim /etc/grub.d/00_header

        2.在文件末尾添加以下内容(设置超级用户 zhangsan,密码 123456):

cat << EOF

set superusers="zhangsan"

password zhangsan 123456

EOF

        3.生成新的 GRUB2 配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg
2. 密文加密

      1.生成密文密码(按提示输入密码,例如 123456,复制输出的密文,注意不要复制到空格):

grub2-mkpasswd-pbkdf2

        2.编辑 GRUB2 配置文件:

vim /etc/grub.d/00_header

        3.在文件末尾添加以下内容(用户 tom,粘贴步骤 1 生成的密文):

cat << EOF

set superusers="tom"

password_pbkdf2 tom 【粘贴密文密码】

EOF

        4.生成新的 GRUB2 配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg

实验三:修复 GRUB2 及 /boot 目录

场景 1:GRUB2 目录被删除(仅修复引导器)

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

grub2-install /dev/sda

        2.但grub2里面的.cfg并没有修复所以需要重建 GRUB2 配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg
场景 2:/boot 目录丢失(需恢复内核和引导)

/boot目录丢失会导致设备无法启动

 关闭虚拟机后 点击打开电源时进入固件:

      

移到boot(选择CD-ROM Drrive选项,使用shift和+置顶,按f10保存)

        1.然后就可以进入救援模式(troubleshooting)

选择第二个Rescue a CentOs system修复选项

等待修复后就可以进入修复界面

按照选项选择1,按下回车后就可以输入命令了

        2.切换到系统根目录:

chroot /mnt/sysimage

        3.挂载安装光盘(假设光盘设备为 /dev/cdrom):

mount /dev/cdrom /mnt

        4.重新安装内核(替换为实际内核版本,使用 --force 强制安装):

rpm -ivh /mnt/Packages/kernel-3.10.0-xxx.el7.x86_64.rpm --forceps:等待过程可能有点久

        5.恢复 GRUB2 引导器:

grub2-install /dev/sda

        6.重建 GRUB2 配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg

        7.退出并重启:

exit

exit 

退出后会重新回到选择救援模式的地方,这时候直接将设备关机就行,然后再次点击打开电源时进入固件

进入后将hard drive置顶,f10保存,等待后设备就可以启动了

补充:修改 GRUB2 引导菜单超时时间

        1.编辑 GRUB 配置文件:

vim /etc/default/grub

        2.修改超时时间(例如设置为 10 秒):

GRUB_TIMEOUT=10

        3.生效配置:

grub2-mkconfig -o /boot/grub2/grub.cfg

​​​        4.​​​​重启查看是否有变化

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

相关文章:

  • 前端优化之虚拟列表实现指南:从库集成到手动开发
  • 【24】C# 窗体应用WinForm ——日历MonthCalendar属性、方法、实例应用
  • 算法精讲:二分查找(一)—— 基础原理与实现
  • vscode remote ssh相关问题
  • 车载刷写架构 --- 刷写思考扩展
  • Git 从入门到精通
  • 【数据库】—— 分区字段为null的时候在未指定最大分区的情况下数据无法插入?
  • 【C++算法】81.BFS解决FloodFill算法_岛屿的最大面积
  • echarts图表点击legend报错问题(折线图)
  • [ java泛型 ] 只闻其名---->“浅浅“了解
  • Java面试宝典:MySQL中的锁
  • 如何在在NPM发布一个React组件
  • Kafka运维实战 16 - kafka 分区重新分配【实战】
  • numpy瑞士军刀 第三卷:实战演练 第七章 组合大阵
  • 【C++算法】77.优先级队列_数据流的中位数
  • Day23-二叉树的层序遍历(广度优先搜素)
  • React 图标库发布到 npm 仓库
  • 试用SAP BTP 02C:试用SAP HANA Schemas HDI Containers
  • 构建特定领域的大模型
  • OV IP证书如何满足PCI DSS要求
  • 网络通信基础(一)
  • 第十六章 Java基础-拼图小游戏
  • 测试自动化不踩坑:4 策略告别 “为自动化而自动化”
  • BERT和GPT和ELMO核心对比
  • vue3插槽详解
  • Python之禅
  • mac 字体遍历demo
  • 《林景媚与命运解放者》
  • OpenCV 学习探秘之四:从角点检测,SIFT/SURF/ORB特征提取,目标检测与识别,Haar级联分类人脸检测,再到机器学习等接口的全面实战应用与解析
  • MySQL(配置)——MariaDB使用