5个RHCE考试的实验
2019-03-09 本文已影响0人
epiiplus1equal0
[TOC]
系统启动流程
-
一. BIOS初始化过程:
- 硬件自检 dmesg /var/log/dmesg 性能越好, 启动自检的时间越长
- 选择启动设备
-
二. GRUB(grand unified bootloader)
-
BIOS读取并执行引导程序(固定的代码)
MBR # master boot loader # 第一扇区 = MBR + partition table + end # 引导程序 分区表(16*4) 结束位 # 512bytes = 446 + 64 + 2
-
引导程序读取配置文件/boot/grub2/grub.cfg
default = 0 # 第一个菜单进入 timeout = 5 # 倒计时5s, 0 为直接进入 title ... root # 指定/boot目录所在分区 (hd0,0)表示第一块硬盘的第一个分区 kernel # 加载内核文件, 并以只读的方式挂载 init # 加载init ram disk(内存磁盘文件) # 内存磁盘文件内部封装驱动, 在内存中解压, 最终驱动根
-
1. 删除/boot/grub2/grub.cfg并修复
rm -rf /boot/grub2/grub.cfg
# 修复, 先重启系统, 进入如下界面:
grub> set root='hd0,msdos1'
grub> linux16 /boot/vm... ro root=/dev/vda1 # 此处的root为指定根目录的位置
grub> initrd16 /boot/initra...img
grub> boot
# 重启后生成配置文件, 即可修复系统:
grub2-mkconfig -o /boot/grub2/grub.cfg # 重新生成grub.cfg的配置文件
# 其实上面这几步可以看作是分别手动指定系统启动流程里面的/boot目录所在分区,
# 指定内核文件所在位置, 以及内存磁盘文件的位置
2. 设置默认启动
条件:
- 升级内核
- 从旧内核启动
cat /boot/grub2/grub.cfg | grep menuentry
grub2-set-default "Red Hat ..." # 注意选择你需要使用的内核版本
grub2-editenv list # 展示你选择默认启动的内核版本
reboot # 重启后就会发现已经生效
3. 破解密码
# 进入操作系统界面, 按e
linux16 ... # 删除内容到ro后面, 输入rd.break
ctrl x
mount -o remount,rw /sysroot/ # 以读写的方式重新挂载/sysroot/,
# 因为真实的根就在/sysroot/下
chroot /sysroot/
passwd # 到此步可以修改root密码
touch .autorelabel # 此步骤一定要进行, 告诉系统启动时打selinux标签
# 重启系统时打selinux标签会比较慢, 莫认为系统出问题
exit
exit
4. 破环引导程序后如何修复
# 在虚拟机中测试
rm -rf /boot/grub2/*
dd if=/dev/zero of=/dev/vda bs=446 count=1
# 接下来开始修复:
# 选择PXE启动或光盘启动, 进入救援模式
chroot /mnt/sysimage
grub2-install /dev/vda # 重构MBR
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
exit
# 修改启动顺序, 选择硬盘启动
5. 破坏第一扇区, 删除/boot目录下的文件并修改/etc/fstab后如何修复
# 依旧在虚拟机中测试, 先做好备份:
dd if=/dev/vda of=/tmp/boot.bak bs=512 count=1
scp /tmp/boot.bak 172.25.0.1:/root/boot.bak # 将本地的第一扇区备份到远端主机
# 再破坏:
dd if=/dev/zero of=/dev/vda bs=512 count=1
rm -rf /boot/*
mv /etc/fstab /etc/fstab.bak
# 接下来修复:
# 1. 先修复分区表:
# 选择PXE环境启动, 进入救援模式
mkdir /redhat ; cd /redhat
scp 172.25.0.1:/root/boot.bak .
dd if=/redhat/boot.bak of=/dev/vda
fdisk -l /dev/vda # 此时可以看到分区表的内容
reboot # 再次进入救援模式, 可以看到分区
# 2. 再根据分区表进入分区, 恢复系统启动时会读取的配置文件/etc/fstab
mkdir /redhat
mount /dev/vda1 /redhat
mv /redhat/etc/fstab.bak /redhat/etc/fstab
reboot # 再次进入救援模式
# 3. 重新安装内核(包括内核文件和内存磁盘文件)
chroot /mnt/sysimage/
rpm -qf vm... # 查询内核文件来自于哪个包
yum -y reinstall kernel # 强制重装内核
grub2-install /dev/vda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
exit
# 将启动模式设为硬盘启动
# 重启, 系统恢复正常