linux系统引导与修复过程

目录

一、linux系统启动的过程

1、开机自检

2、MBR引导

3、GRUB菜单

4、加载linux内核

5、init进程初始化

6、运行的级别

二、修复MBR扇区故障

1.备份MBR扇区到别的硬盘或者安全的地方

2、模拟sda第一扇区被破坏

扫描二维码关注公众号,回复: 13594889 查看本文章

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用户密码忘记之后的修改方式,都是挺实用的技巧,掌握之后能应对一些常见的小错误之类的,也能进行初步的排查系统的故障。

猜你喜欢

转载自blog.csdn.net/m0_60360828/article/details/120295833