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 | 说明 |
---|---|---|
0 | poweroff.target | 关机 |
1 | rescue.target | 单用户模式(无网络) |
2 | multi-user.target | 多用户模式(无网络,无图形) |
3 | multi-user.target | 完全多用户模式(命令行界面) |
4 | 无对应默认target | 保留,可自定义 |
5 | graphical.target | 图形化界面 |
6 | reboot.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目录被删除时,需执行以下步骤恢复:
- 安装启动引导器到硬盘:
grub2-install /dev/sda
(/dev/sda
为系统硬盘) - 重建配置文件:
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密码步骤
粗心大意的小明把密码忘记了快点帮帮它把
-
重启系统:
reboot
-
在GRUB2菜单界面按
e
进入编辑模式 -
找到Linux内核所在行,在末尾添加
rd.break
,按Ctrl+X
启动
-
进入伪系统后,重新挂载根目录并赋予读写权限:
mount -o remount,rw /sysroot
-
切换到真实系统环境:
chroot /sysroot
-
修改root密码:
- 方法1:
passwd root
(按提示输入新密码) - 方法2:
echo 新密码 | passwd --stdin root
(直接设置密码,如echo linux123 | passwd --stdin root
)
- 方法1:
-
处理SELinux标签:
touch /.autorelabel
-
退出并重启:
exit
(退出chroot环境),再次exit
(重启系统)
五、修复/boot目录
小明一不小心把boot删了,现在系统崩溃了,快来帮帮它吧
当/boot
目录损坏或丢失时,可通过以下步骤恢复:
-
进入系统救援模式(从安装光盘或U盘启动,选择"Rescue installed system")
按住shift加加号键将cd-ROM移到最上面
选最下行
再按第二行进入救援模式
-
切换到系统根目录:
chroot /mnt/sysroot
选一让系统自动的帮助你修复
-
挂载安装介质:
mount /dev/cdrom /mnt
(假设光驱为/dev/cdrom
)输入chroot /mnt/sysimage进入可输入命令的环境
挂载
-
重新安装内核:
rpm -ivh /mnt/Packages/kernel-<版本号>.rpm --force
(需替换为实际内核包名) -
恢复GRUB2引导:
grub2-install /dev/sda
-
重建GRUB2配置:
grub2-mkconfig > /boot/grub2/grub.cfg
-
退出救援模式:
exit
,系统将正常启动