Linux 系统启动过程及相关实验(破解密码;明文密文加密;修复grub2目录和boot目录)
Linux 系统启动过程及相关实验
一、Linux 系统启动过程
- 开机自检:计算机启动后,BIOS/UEFI 进行硬件自检(如内存、硬盘、CPU 等),确保硬件正常。
- 读取引导程序:从硬盘的 MBR(主引导记录)中读取引导程序 GRUB2。
- 加载引导配置:GRUB2 根据配置文件 /boot/grub2/grub.cfg 加载配置并显示引导菜单。
- 加载内核文件:引导程序加载 Linux 内核文件(通常位于 /boot 目录)。
- 初始化内核环境:内核载入内存后,接管系统控制权,初始化任务调度、内存分配、加载驱动等,建立内核运行环境。
- 启动第一个进程:内核执行完成后,启动系统第一个进程 systemd(进程号为 1)。
- 设置运行级别:systemd 读取 /etc/systemd/system/default.target 文件,根据该文件设置系统运行级别并启动相应服务。
- 进入登录界面:服务启动完成后,引导至登录界面。
二、运行级别说明
运行级别 | 对应 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 --force
ps:等待过程可能有点久
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.重启查看是否有变化