目录
一、linux系统启动的过程
1、开机自检
2、MBR引导
3、GRUB菜单
4、加载linux内核
5、init进程初始化
6、运行的级别
二、修复MBR扇区故障
1.备份MBR扇区到别的硬盘或者安全的地方
2、模拟sda第一扇区被破坏
3、引导界面进入急救模式,从备份中恢复MBR扇区的故障
三、修复GRUB引导故障
四、修改root用户密码
总结
一、linux系统启动的过程
1、开机自检
服务器开机之后,会根据主板BIOS的设置,对CPU、内存、显卡等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权。绝大部分都是移交给本机的硬盘。
2、MBR引导
当从本机硬盘中启动系统的时候,首先根据硬盘第一扇区中MBR的设置,将系统的控制权传递给包含操作系统引导文件的分区。
3、GRUB菜单
对于linux系统来说,GRUB是使用最广泛的多系统引导器程序,系统控制权传递给GRUB之后会显示启动菜单给用户选择,并根据所选选项加载linux内核文件,将系统控制权交给内核。现在centOS 7使用的是GRUB2启动引导器。
4、加载linux内核
linunx内核是一个事先编译好的特殊二进制文件,处于硬件资源与系统程序之间,主要负责资源分配与调度。内核在接过系统控制权以后,将会完全控制整个linux操作系统运行过程。
5、init进程初始化
为了进一步的完成系统引导过程,linux内核会先将系统中位于sbin下面的init程序加载到内存中运行,init程序负责一系列的系统初始化过程,然后等待用户登录。
linux系统的启动过程大致分为上面五个步骤。
init进程与systemd
init进程是:
1、由linux系统内核加载运行的程序位于sbin下的init文件。
2、init进程是系统中第一个运行的程序,并且init进程的PID永远都是1,也就是固定式第一个运行的。
systemd是:
1、systemd是linux操作系统中的一种init程序。
2、centOS 7中采用全新的systemd启动方式,取代传统的启动方式。
3、centOS 7中运行的第一个init进程是systemd。
6、运行的级别
init跟systemd中都有不同的运行级别对应着不同的功能
拿init来说
总共分为上面七个运行级别,systemd中也跟这个类似,只不过是运行级别那一列换成命令,而不是数字了。
跟init的数字级别代表的意义是一致的,可以看自己的喜好抉择一种方式。
二、修复MBR扇区故障
MBR扇区是第一启动项所在的区域,如果这个区域被攻击之后,就会导致系统在第一步就不能动了。一般都是由于病毒的攻击或者操作失误导致这个扇区数据丢失,导致系统无法正常启动引导程序导致黑屏等现象。
因为这个区的重要性,所以应该提前备份好,系统因为这个原因启动不了的时候能够直接恢复备份来正常运行。
这个恢复过程比较简单。
1.备份MBR扇区到别的硬盘或者安全的地方
我下面为了快捷点,就直接存储在别的硬盘中了。
先将备份存储的硬盘挂载到目录中,然后将sda的前512字节也就是第一扇区的内容复制到一个新的文件中。
2、模拟sda第一扇区被破坏
用这个命令复制文件覆盖掉MBR扇区的512字节的文件。
3、引导界面进入急救模式,从备份中恢复MBR扇区的故障
要先确认是否加入了镜像光盘,然后重启系统
在进入这个引导界面之后选择第三个“Troubleshooting”选项
在这个界面在选择第二个选项,进入急救模式
再根据选项,选择1进入下个界面,可能会卡一阵子,耐心等待。好了之后直接按Enter键就可以,进入shell环境。
创建一个目录将带有备份的硬盘挂载进去
然后将备份的文件再复制到sda下面覆盖掉前512字节,然后再exit返回,就可以正常运行系统了。
这样就是将MBR修复的过程。
三、修复GRUB引导故障
手动输入引导命令这种方式修复,我就不介绍了,因为需要系统的全名字以及镜像文件等全称,太长了有点繁琐,就不介绍了。
第二种方法是跟上面的处理过程是一致的,下面再来复述一遍吧。
GRUB是位于MBR中的前446个字节,,所以只需要复制/破坏前446个字节就可以恢复系统或者造成系统瘫痪。
操作步骤还是一致,先对复制文件存储目标的硬盘进行挂载,再将文件复制过去就可以了
将GRUB模拟破坏掉,再进行重启
这几步都是一致的,我就一起截图放一起了。
再创建目录进行挂载硬盘
对sda的前446字节进行覆盖复制就可以了 ,然后退出
现在GRUB引导被修复的其中一种方式就完成了。
第三种方式相较于前面的,就是繁琐一点。
在系统故障之后还是选择进入急救模式
还是按照上面的步骤进入shell环境,这次需要输入的命令就不一样了。
先输入:chroot /mnt/sysimage 进入bash模式
下一步输入:grub2-install /dev/sda 重新将GRUB引导程序安装到第一块硬盘的MRB扇区
最后一步输入:grub2-mkconfig -o /boot/grub2/grub.cfg 重新构建GRUB菜单的配置文件
输入:exit 退出bash模式就可以了
在sh模式中输入 reboot重启就可以了
重启之后就正常的进入了用户登录界面,表明系统故障已经修复完成
四、修改root用户密码
第一种是进入急救模式中修改root用户的密码
修改第一启动项是光驱,然后F10保存
进入这个模式
下面的步骤我就不一一详述,直接进入shell环境
先输入 chroot /mnt/sysimage进入bash视图
然后直接输入 passwd 加上用户名直接更改密码就可以了,提示密码过于简单,可以无视。实际应用的场合要设置的繁琐一点。然后 exit 退出就可以了
现在会发现之前的密码会提示错误。需要用新设置的密码进行访问root
用新的密码就能正常访问root用户。
第二种更改root用户密码的方式是进入单用户模式
在这个界面的第一行,按下e按键就可以了。
按e之后进入这个界面,按方向键的↓,找到这一行,在行尾加上这句话,然后按Ctrl+X继续下一步
进入这个界面之后
输入 mount -o remount,rw /sysroot/ 重新挂载,权限设置为rw 读写
重新挂载并且更改权限之后,更改目录到sysroot
下一步直接设置密码就可以了
最后一步使用 touch /.autorelabel 重新打一下标记就可以了
exit退出然后 init 6重启系统就可以了
然后静等系统重启
用新的密码能正常登录系统,配置过程是没有问题的。
总结
通过这些内容可以清楚的知道两种GRUB的简易的修复方式,还有ROOT用户密码忘记之后的修改方式,都是挺实用的技巧,掌握之后能应对一些常见的小错误之类的,也能进行初步的排查系统的故障。
更多推荐
linux系统引导与修复过程
发布评论