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字节,我们只需将这个扇区的数据备份出来即可。

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

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



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

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

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

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

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

7.启动成功。

什么是GRUB?

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

修复GRUB引导故障:

故障原因:

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

故障现象:

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

解决思路:

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

实际操作:

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

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



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

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

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

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


Root密码重置:

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



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

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

Systemd单元类型:

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

系统服务控制:

常用方式:

systemctl 控制类型 服务名称

常用控制类型:

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

Linux系统的运行级别:

查看运行级别:

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

用“runlevel”命令查看当前的运行级别和切换前运行级别,“5”表示当前的运行级别,“3”表示切换前的运行级别。

  • systemctl工具:查看默认的运行级别
    输入“systemctl get-default”命令,查看系统的默认运行级别,“graphical”表示图形化界面。

临时切换运行级别:

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

1.用“init 3”进入字符界面,“3”是字符界面的运行级别。

2.进入字符界面输入用户名“root”和用户密码登录,然后再用“init 5”命令进入图形化界面。

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

1.输入命令“systemctl isolate multi-user.target”进入字符界面,“multi-user”是字符界面的target。

2.在字符界面输入用户名和密码,登录后再用命令“systemctl isolate graphical.target”命令进入图形化界面。

更改默认运行级别:

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

系统服务管理工具:

ntsysv工具:

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

我们直接输入命令“ntsysv”就能进入服务管理界面,我们可以看到每个服务前都有“[ * ] ” 或“[ * ]”,有“ * ”的表示开机自启,没有则不开机自启,我们可以通过“空格键”来更改服务的自启状态,当我们更改完毕只需按[tab]键来选择确定保存设置即可。

systemctl工具:

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

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

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

原文地址:https://blog.51cto.com/14449541/2432504

时间: 2024-08-30 05:09:21

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

Nginx - Windows下作为服务启动

Nginx官方没有提供作为服务启动nginx的方案.以服务启动nginx依赖于winsw,当前最新版是1.19. 参考:https://segmentfault.com/a/1190000006807506

JavaWeb 服务启动时,在后台老板启动加载一个线程

avaWeb 服务启动时,在后台启动加载一个线程JavaWeb 服务启动时,在后台启动加载一个线程. 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet. 下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了): 监听(Listener) 首先,我们创建一个监听的类,继承ServletContextListener,如下: 源码复制打印    package com.wxp.thread;    import javax

Oracle11g服务启动

运行oracle的时候是很费资源的,也很影响机器的速度,所以一般不用oracle的时候我就会把它的服务停了,但是我们要哪些启动哪些服务,这些服务又是做什么呢?下面简单的介绍一下. OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl.在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务.(非必须启动) OracleJobSchedulerORCL:Oracle作业调度(定时器)服务,ORCL

vmvare centos 7.0 root密码忘记后重置及总结

今天遇到了一个比较尴尬的事情,我centos 7.0的虚拟机密码忘了.....里面还有我配置好的环境呢.于是我就上网上搜索各种方法,最后经我验证下面这个方法比较靠谱: 使用光盘修复Centos: http://www.tuicool.com/articles/MJr2UzN 下面这个方法在重启之后发生了错误,可能我开启了syslinux,可以参考一下: centOs7 忘记root密码:http://blog.csdn.net/niu_hao/article/details/52882895 =

OpenStack服务启动故障排除经验

今天同事在配置OpenStack的计算节点(在CentOS 7上部署)时遇到一个问题,发现在控制节点上运行nova service-list发现只有4行,没有nova-compute service,让我帮他排查. 提前透露原因:这位同事在/etc/nova/nova.conf配置文件中verbose = True 写成了 verbose =Ture,我也是检查了半天(两眼对了3遍)没看出来,有点汗! 根据我以前掌握的经验,OpenStack的部署过程遇到的问题可归纳总结为配置文件问题.配置步骤

【CentOS】fstab挂载项错误,无法正常启动系统的解决方法

因/etc/fstab的配置错误,导致重启系统时,无法正常进入系统,会卡在以下的页面. 提示的错误信息类似: An   error   occurred  during   the  file   system   check. 解决方法: 1.在错误的启动界面处输入root的密码(不会有显示的,只管输入正确的密码即可) 2.然后会出现(Repair  filesystem)1#的提示符,在其后面输入运行:mount  -no  remount,rw   / 3.编辑/etc/fstab的文件,

[CentOS 7系列]忘记密码的“救星”——单用户模式和救援模式

init是Linux系统操作中不可缺少的程序之一. 是一个由内核启动的用户级进程. 内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务.所以,init始终是第一个进程(其PID始终为1).内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init.如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败. 运行级就是操作系

centos下yum安装mysql5.6后,无法启动 MySQL Daemon failed to start

如果是全新安装应该就不会出现这个问题,升级安装的话,要运行 mysql_upgrade ,但是启动MYSQL就报错MySQL Daemon failed to start 如此就没办法运行mysql_upgrade升级MYSQL表了 因为是全新安装的数据库服务器就不管老数据了,直接把老的MYSQL数据库文件夹删除了,然后 运行 mysql_install_db 单独执行下命令,初始化mysql,test等数据库 初始化所有数据库以后,依然是无法启动,检查了MYSQL的日志发现没有权限,因为是RO

Cisco路由器密码忘了该怎么办?

Cisco 路由器在网络互联中得到广泛的应用,其中2500系列路由器更是在低 端用户中被大量采用.那么,如果你不慎将2500系列路由器的超级用户密码忘掉 了,怎么办呢?不要怕,只要你按如下方法就可以恢复: 准备工作:一台微机运行终端仿真程序(可以在Windows 95/98下启动超级终 端),微机串口(COM1/COM2)通过Cisco公司随机配备的配置线与路由器Consol e口连接. 恢复步骤:  (1)路由器开机,30秒内按Ctrl+Break键,出现提示符">"(如果没有