###系统引导过程图示
1.计算机加电后,加载bios
2.bios对硬件进行自检
3.bios从硬盘第0柱面,第0磁道,第一个扇区读取MBR——主引导记录
4.MBR共512字节,其中引导程序512字节 = 引导程序446字节 + 磁盘分区表DPT64字节 + 结束位2字节
5.引导程序可以替换为Grub,用于引导centOs、RedHat
6.运行Grub,根据配置文件加载kernel镜像,并运行第一个程序/sbin/init
7./sbin/init通过etc/inittab进行初始化工作
8.linux根据/etc/inittab的配置来运行/etc/rc.sysinit脚本,设置系统变量、网络配置,启动swap,设定/proc,加载用户自定义模块,加载内核设置
9.启动其他服务
10.运行/etc/rc.local
11.生成终端
*****************************************以下实验均在虚拟机中完成****************************************************
一.破坏引导程序
1)先查看自己的系统版本,和Boot引导程序所在分区
2)下面我们模拟破坏引导程序,破坏后重启
dd if=/dev/zero of=/dev/xda bs=446 count=1
3)重启后发现如下图报错
4)这时候我们进入挽救模式,打开虚拟程序图形管理,点击小灯泡图标,选择下面的Add Hardware添加
5)进去后选择Storage并在Browse里选择与自己系统匹配的镜像文件,Device type设备类型选择添加CDROM光驱,完成后Finish
6)出来后选择Boot Options 把刚才添加的CDROM排到第一读取的位置,然后重启虚拟机
7)再次进入后,依次选择Trobuleshooting,Rescue a Red Hat Enterprise Linux system,进入
8)进入后会让你确认三次,Continue->OK->OK
9)进入挽救模式后,恢复引导程序,命令如下,完成后两次exit退出
10)在将Disk设置为第一读取位置重启即可恢复
二、引导文件丢失
引导文件在/boot/grub2/grub.cfg中
1)模拟问题:删除引导文件,在系统没有重新启动的情况下,可以直接恢复,如下图
2)当系统重新启动时,操作如下
第一行,指定/boot所在分区(此位置不固定),在grub.cfg里可以查看
第二行,root=根分区的设备名称,df可以查看
3)以上操作可以使系统正常启动,但是是临时的,所以进入系统还是要执行一遍恢复命令:
三、修改登陆的操作
1、增长登陆选择时间,编辑/boot/grub2/grub.cfg文件,修改选择时间,完成后重启
2、增添系统的选择,在grub.cfg里编写
3)还可以设置进入选择界面默认选择第几个进去
命令grub2-set-default 0(默认第一个进去)
命令grub2-set-default 1(默认第二个进去)
依此类推
四.内核文件丢失
1)模拟问题:删除内核文件并重启
2)开机后显示的报错如下图
3)进入到挽救模式,先切换root,命令chroot /mnt/sysimage,在随便建立一个目录,为挂载设备,我这里建立的/rhel7,然后从挂载的光驱里下载丢失的内核文件,操作如下图:
4)完成后两次exit退出,并退出挽救模式,重启即可
五、系统初始化镜像文件丢失
1)模拟问题,删除镜像文件(镜像文件在/boot/下),这里要先提示一下命令uname -r为显示你的版本,如下图
2)当系统没有重启时,可以直接恢复,命令如下:提示$()为先执行括号里的内容
3)如果重启了,会产生如下报错
4)然后进入挽救模式,恢复初始化镜像文件
5)两次exit退出,并退出挽救模式即可
六、当/boot分区被删除
1)模拟问题,删除/boot并重启
2)开机会显示如下图报错
3)进入挽救模式,先建立/boot目录,然后恢复/boot下的文件,和上面操作类似,具体如下图
4)两次exit退出,并退出挽救模式,重启即可
七、当开机启动级别被篡改
第一种方法:
1)模拟错误:修改开机级别
2)重新开机时,显示如下图报错:
3)此时修改为,进入登陆选择界面时,先按上下键停止进入,然后选择你要登陆的系统按e,将linux16那行从末尾删除至ro,从ro改变为rw rd.break
4)再按ctrl+x进入修改界面,查看开机级别,并删除错误的,重新恢复正确的开机级别,两次exit退出即可恢复
第二种方法:
1).进入引导选择系统时上下键暂停,选择要进入的系统,按e在启动内核命令后输入5后可以正常启动
2)但是这种进入方式是临时的,需要重新设置开机打开图形
八、忘记开机密码
1)进入登陆选择界面时,先按上下键停止进入,然后选择你要登陆的系统按e,将linux16那行从末尾删除至ro,从ro改变为rw rd.break,再按ctrl+x进入修改界面
2)chroot /sysroot/ 进入shell 然后输入修改密码命令echo redhat|passwd --stdin root(将root用户密码更改为redhat) ,再输入两次exit即可
九、开机大量服务启动失败
修复过程:关闭虚拟机,通过光驱模式启动得到shell,
cp /bin/bash /mnt/sysimage/bin/bash
一次退出通过硬盘启动即可