前 言:

在解决问题前我们先了解一下开机引导的过程:

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

启动故障主要出现在前三个步骤,开机自检主要是检查硬件是否损坏,主要是检查CPU和内存, 所以如果是这一步骤出问题了我们就需要更换硬件了。下面我开始从MBR开始讲。

什么是MBR?

通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。主引导扇区由三个部分组成(共占用512个字节):
1.主引导程序即主引导记录(MBR)(占446个字节)
可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。
2.磁盘分区表项(DPT,Disk Partition Table)
由四个分区表项构成(每个16个字节)。
负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)
3.结束标志(占2个字节)
其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

修复MBR扇区故障:

故障原因:

  • 病毒、等造成破坏
  • 不正确的分区操作、磁盘读写误操作

故障现象:

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

解决思路:

  • 应提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复

实际操作:

1.在进行MBR引导扇区恢复之前,一定要保证在其它磁盘中有MBR引导扇区的备份,下面我们先对MBR引导扇区进行备份。因为引导扇区是sda磁盘的第一个扇区,大小为512字节,我们只需将这个扇区的数据备份出来即可。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.备份好引导扇区后,我们将引导扇区破坏来模拟引导扇区损坏的启动故障,我们只需要复制一些垃圾文件将引导扇区覆盖即可,然后重启你就会发现系统无法正常启动。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

3.此时我们就需要一个系统驱动盘,就是你用来装系统的U盘驱动或光盘驱动都行。我用的是光盘镜像,将它们插到你的设备上,然后重启设备,在刚开启时按下[ESC]键,在启动菜单中选择光盘启动,然后按下面图片依次进行选择。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

4.进入后稍作等待,然后输入“1”回车,再直接回车,进入到一个镜像的shell终端模式。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

5.创建一个新目录,然后将之前用来备份的磁盘sdb1挂载上去。

输入:mkdir bak
输入:mount /dev/sdb1 /bak/

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

6.将sdb1中的备份文件sda.mbr.bak复制到sda的引导扇区中,然后重启即可。

输入:dd if=/bak/sda.mbr.bak of=/dev/sda
输入:init 6

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

7.启动成功。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

什么是GRUB?

是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

修复GRUB引导故障:

故障原因:

  • MBR中的GRUB引导程序遭到破坏
  • grub.conf 文件丢失、引导配置有误

故障现象:

  • 系统引导停滞,显示“grub>”提示符

解决思路:

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

实际操作:

1.首先咱们需要将grub配置文件grub.cfg删除,用来模拟grub损坏的启动故障,然后重启系统。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.步骤与恢复MBR引导扇区相同,我们需要一个系统驱动盘,就是你用来装系统的U盘驱动或光盘驱动都行。我用的是光盘镜像,将它们插到你的设备上,然后重启设备,在刚开启时按下[ESC]键,在启动菜单中选择光盘启动,然后按下面图片依次进行选择。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

3.进入后稍作等待,然后输入“1”回车,再直接回车,进入到一个镜像的shell终端模式。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

4.首先加载系统镜像进入到bash环境,然后重新建立加载sda分区,最后重新构建grub菜单配置文件并退出bash环境。

输入:chroot /mnt/sysimage/
输入:grub2-install /dev/sda
输入:grub2-mkconfig -o /boot/grub2/grub.cfg
输入:exit

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

5.重启设备,稍作等待,启动成功。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

Root密码重置:

1.当你忘记root的开机密码了,首先咱们用到的还是光盘镜像,步骤与上面的步骤相同,将它们插到你的设备上,然后重启设备,在刚开启时按下[ESC]键,在启动菜单中选择光盘启动,然后按下面图片依次进行选择。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.进入后稍作等待,然后输入“1”回车,再直接回车,进入到一个镜像的shell终端模式。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

3.先加载系统镜像进入到bash模式,直接用“passwd”命令重置密码,再用“exit”命令退出bash模式,输入“init 6”重启直接用新密码登录即可。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

Systemd单元类型:

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

运行级别所对应的Systemd目标:

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

系统服务控制:

常用方式:

systemctl 控制类型 服务名称

常用控制类型:

  • start:启动
  • stop:停止
  • restart:重新启动
  • reload:重新加载
  • status:查看服务状态

Linux系统的运行级别:

查看运行级别:

  • runlevel命令:查看当前运行级别和切换前运行级别

用“runlevel”命令查看当前的运行级别和切换前运行级别,“5”表示当前的运行级别,“3”表示切换前的运行级别。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

  • systemctl工具:查看默认的运行级别
    输入“systemctl get-default”命令,查看系统的默认运行级别,“graphical”表示图形化界面。
    CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

临时切换运行级别:

  • init命令:命令参数是运行级别所对应的数字

1.用“init 3”进入字符界面,“3”是字符界面的运行级别。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.进入字符界面输入用户名“root”和用户密码登录,然后再用“init 5”命令进入图形化界面。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

  • systemctl工具:命令参数是具体的target

1.输入命令“systemctl isolate multi-user.target”进入字符界面,“multi-user”是字符界面的target。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.在字符界面输入用户名和密码,登录后再用命令“systemctl isolate graphical.target”命令进入图形化界面。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

更改默认运行级别:

我们将原来的默认运行级别“graphical”(图形化界面)更改为“multi-user”字符界面,这里其实就是创建一个“multi-user”的软链接“default.target”,并将原来同名的“graphical”的软链接删除。这里“-s”即使软链接,“-f”是删除软链接同名链接。直接输入命令“ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target”,然后查看默认运行级别已经修改成功,当你下次启动系统就会是字符界面了。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

系统服务管理工具:

ntsysv工具:

  • 提供一个交互式、可视化窗口
  • 可以在字符终端运行
  • 便于集中管理多个服务

我们直接输入命令“ntsysv”就能进入服务管理界面,我们可以看到每个服务前都有“[ * ] ” 或“[ * ]”,有“ * ”的表示开机自启,没有则不开机自启,我们可以通过“空格键”来更改服务的自启状态,当我们更改完毕只需按[tab]键来选择确定保存设置即可。
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!
CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

systemctl工具:

  • 不提供交互式、可视化窗口
  • 管理单个服务效率更高

1.我们直接输入命令“systemctl disable sshd.service”,就能直接关闭“sshd”服务的开机自启,然后用命令“systemctl is-enabled sshd”查看一下“sshd”服务的自启状态,显示“disabled”不能自启。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!

2.我们再用“systemctl enable sshd.service”命令将“sshd”服务的开机自启功能打开,然后查看显示“enabled”开机自启。

CentOS 7 启动故障、密码忘了怎么办?服务启动怎么优化?手把手教你解决!