1.系统正常启动流程
1.通电
2.bios(basic input or output system基本输入输出系统)初始化:
主要作用是自检及初始化,开机后bios最先被启动,他会对电脑的硬件设备进行完全彻底的检验和测试。
3.grub系统引导,分为两个阶段:
1>阶段1:mbr主引导记录,在硬盘的0磁道,1扇区,共446字节。
2>阶段2:grub文件引导阶段
4.启动内核,只读挂载根设备,检测设备,对设备驱动进行初始化。
5.系统初始化阶段:系统初始化阶段加载initrd镜像,开启初始化进程systemd,开启selinux,加载内核参数,初始化系统时钟,键盘,主机名称,重新读写挂载设备,激活RAID,lvm,激活配额,启动multi-user.target.wants中的所有服务,开启虚拟控制台,启动图形界面。
2.常见系统故障恢复
1.硬盘引导阶段(mbr主引导记录的恢复)
若mbr引导分区数据(程序)丢失,系统将无法启动;mbr 的作用是为了记录 /boot 目录所在分区位置,磁盘的 0 磁道 1 扇区的前 446 字节。
- 模拟问题:
dd if=/dev/zero of=/dev/vda bs=446 count=1
重启后显示:
- 解决:
关闭虚拟机,并给虚拟机添加光驱,将开机启动方式改为光驱启动优先
重新启动后进入secure模式
执行如下命令进行恢复:
chroot /mnt/sysimage
grub2-install 启动分区所在硬盘
grub2-install /dev/vda
exit
exit
完成后关闭虚拟机,取消光驱启动,改为默认的硬盘启动即可。
2.文件引导阶段
1)引导文件丢失
- 模拟问题:
rm -fr /boot/grub2/grub.cfg
-当系统没有重新启动时
grub2-mkconfig > /boot/grub2/grub.cfg
- 当系统重新启动时
grub > set root=‘hd0,msdos1’
grub > linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=/dev/vda1
grub > initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
grub > boot
以上操作可以使系统正常启动,但是是临时的,grub2.cfg文件还没恢复,所以进入系统后还是需要执行:grub2-mkconfig > /boot/grub2/grub.cfg
2)内核文件丢失
-
模拟问题:
rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
使用光盘重启时,进入rescue模式chroot /mnt/sysimage
mkdir /rhel7
mount /dev/sr0 /rhel7
cd /rhel7/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio - id
cd boot
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit
exit
完成后关闭虚拟机,将开机方式设置为硬盘启动,再正常开机
3)初始化镜像文件丢失
-
模拟问题:
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
-
当系统没有重启时
执行mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
-
当系统重启后,使用光盘重启,进入rescue模式:
chroot /mnt/sysimage ##切换目录
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##转换类型
cd /boot/
ls
exit
exit
4)当/boot分区被删掉
模拟问题:rm -fr /boot/*
当系统重启后,使用光盘重启,进入rescue模式:
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda ##启动分区所在硬盘,不固定,我这里是/dev/vda
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force ##强制安装内核文件
grub2-mkconfig > /boot/grub2/grub.cfg ##引导文件
exit
exit
完成后关闭虚拟机,将开机方式设置为硬盘启动,再正常开机
3.当开机启动级别被篡改
- 模拟问题
执行systemctl set-default reboot.target
- 解决方法
1.开机按上下健停止读秒
2.按e编辑
3.选择内核启动行
linux16 /vmlinuz-xxxxx ro xxxxx
改为:linux16 /vmlinuz-xxxxx rw rd.break
4.执行如下命令:
ctrl+x
chroot /sysroot
rm -fr /etc/systemd/system/default.target
ln -s /lib/systemd/system/graphical,target /etc/systemd/system/default.target
exit*2
4.忘记超户密码
1.开机按上下健停止读秒
2.按e编辑
3.选择内核启动行
linux16 /vmlinuz-xxxxx ro xxxxx
改为:linux16 /vmlinuz-xxxxx rw rd.break
按crtl+x退出
4.chroot /sysroot/ ##进入sysroot目录下
echo westos | passwd --stdin root ##将超户密码改为westos
5.执行touch /.autorelable
执行两次exit退出
6.使用新密码登陆进入系统