CentOS 6 系统无法开机故障修复

本文针对grub故障及服务故障导致的开机无法启动的情况进行模拟,并给出修复详细步骤。


一、grub各配置文件问题引起的开机故障

可能出现此故障场景

  • 当前硬盘没有grub,每次启动都是通过有grub的光盘或U盘启动的当前硬盘上的操作系统

  • 有两块硬盘其中有一块没有安装grub

  • 主机WindowsLinux双系统共存,后来由于Windows坏了重装了Windows此时Linuxbootloader就被覆盖

1、模拟stage1阶段(操作系统所在磁盘分区的前446字节)被破坏导致的开机故障

模拟操作:

wKioL1mpRK-h7wGtAAAO5f0IiOA810.png

故障现象:开机停留在如果所示界面

wKiom1mpRJGSMpuXAAVAwVbUX2I309.png


修复方法1:

①如上图选择Rescue installed system(救援模式),或者在该界面按Esc进入boot命令行接口

键入圈红内容也可以进入紧急救援模式。之后需选择语言及键盘图略。

wKiom1mpRaqyeMamAAAKJyqzqPE908.png

②是否设置网络信息

wKioL1mpRf_hhFUcAABP7YInnzc659.png


注:若要通过网络服务器上的文件修复grub可启动该项,此处要通过光盘修复选择“No”

紧急救援模式接下来会尝试查找本机硬盘上是否有装过操作系统,如果有的话它会把找到的根挂载至当前启动的小的紧急救援模式的Linux系统的/mnt/sysimage目录下,稍后用户可以到该目录下找所需要的文件,若要这样选择“continue” 。后续确定图略

wKiom1mpRqCDOElyAAD4ErTacbs464.png

④选择shell,进入系统开始修复阶段

wKiom1mpRw7xRrz4AAAp-D5pJng213.png

wKiom1mpRzWy1lfRAABQ1TMT-70332.png

chroot /mnt/sysimage从救援模式的根切到已损坏操作系统,因为后续要把grub安装到该操作系统。

grub-install /dev/sda重新安装grub,以修复系统。

⑤sync将修改写入磁盘,退出已grub修复的系统进入紧急救援模式下的Linux重启系统。

wKiom1mpSHywEFbGAAAGxYXeKic446.png

重启过程中拆除光盘避免系统以光盘启动,如下图不打勾“启动时连接”即可

wKiom1mpSPyCT1YSAAFBTRC0G50550.png

重启系统成功图略。

修复方法2:如方法1前面步骤至切根操作(chroot /mnt/sysimage),之后键入grub进入grub命令行界面交互操作,


grub> root (hd#,#)

grub> setup (hd#)

quit

“#”视情况而定,例如root(hd0,0)操作系统在第一块硬盘,第一个分区。setup (hd0)代表把grub装到哪块硬盘。

注意:第二种方法要求/boot/grub目录下必须有stage1stage2和各类stage1_5。局限性较大,推荐使用第一种方法进行修复。

2、模拟stage1_5阶段(操作系统所在磁盘分区的512字节约3个扇区)被破坏导致的开机故障

模拟操作:

wKioL1mpTGfxidPjAAH74JC-bLU515.png

故障现象为卡在全黑屏(不用截图了吧)

修复方法:开机按Esc进入救模式界面,之后操作同stage1阶段。


3、模拟stage1_5阶段(操作系统所在磁盘分区的512字节约3个扇区)被破坏导致的开机故障

模拟操作:将/boot/grub/目录下除grub.conf文件其余全部删除。

故障现象:如图所示

wKiom1mpTanD8rISAAAN0Sh-mjc937.png

修复方法:开机按Esc进入救模式界面,之后操作同stage1阶段。

4、将/boot/grub目录删除导致的无法开机。

故障现象:如图

wKioL1mpTjqAGCrVAADI8Vv4Wkc123.png

开机会卡在grub命令行界面。

修复方法:如下图键入root、kernel、initrd三条主要信息(内容以实际故障计算机为准),重启后进入救援模式重复上述操作(切根、生产grub配置信息),

重写配置文件:/boot/grub/grub.conf

简单的写一下:

title jinbus

root (hd0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda3

initrd /initramfs-2.6.32-642.el6.x86_64.img

重启解决问题。

wKioL1mpTgXgi06bAAC86RJXnME309.png

5、删除/boot目录下的所有文件,导致的开机无法启动。

模拟故障:rm �Crf /boot

此时删除了启动时需要的:

内核文件:vmlinuz-2.6.32-642.el6.x86_64

虚拟文件系统:initramfs-2.6.32-642.el6.x86_64.img

grub 的启动文件:stage1.5 stage2

grubstage1.5 :如果之前发生过修复,那么启动时用到的数据存在于MBR之后,stage1.5同样存在于文件夹下,但是不会用到 。

grub的配置文件:grub.conf

修复方法:进入光盘救援模式,恢复内核文件:vmlinuz-2.6.32-642.el6.x86_64 及 虚拟文件系统:initramfs-2.6.32-642.el6.x86_64.img

方案1:安装 kernel进行修复,

chroot /mnt/sysimange

mount /dev/sr0 /mnt/sr0

rmp �Civh /mnt/sr0/Packages/kernel.****.rpm

方案2:分别修复

① chroot /mnt/sysimange

cp/mnt/isolinux/vmlinuz-2.6.32-642.el6.x86_64 /boot

cp/mnt/isolinux/initramfs-2.6.32-642.el6.x86_64.img /boot

② 创建虚拟文件系统文件


mkinitrd /boot/initramfs-`uname -r `.img `uname -r `

③安装 grub 使用命令:

grub-install /dev/sda

④ 重写 grub.config

⑤ sync 同步


二、服务问题引起的开机故障


模拟服务故障环境:在/etc/init.d/下新建故障服务test.sh,

wKioL1mpT7KSXROVAACgndSdU_A854.png

新建该脚本要遵循LSB服务脚本定义的规范进行编写基本格式如上图,能接受4个基本参数即可{start|stop|status|restart}。在start函数中写入sleep 10000模拟开机无法启动的环境。

wKioL1mpUMfAo_07AAI_Qwu_88s022.png

如图设置test.sh服务为开机自启动。

故障现象:卡到某一服务无法开机

修复方法1:一般服务在单用户模式下不会设为自启动,开机至grub菜单界面。

wKioL1mpWYPwYBBqAAAmQo6cdF8773.png

选中要启动的内核,a键编辑内核参数。如图在参数后面添加1(或者s、S、single)进入单用户模式。

wKioL1mpWd-iVT3fAAAb432A5i8981.png

wKioL1mpWpGyYCniAAAF26JM-9Y302.png

chkconfig test.sh off 将故障服务off掉即可。

如果单用户模式都设为了开机启动,就需要使用第二种方法进行修复。

修复方法2:grub菜单a键编辑内核参数,后面添加如下图所示内容

wKiom1mpXBiBIFJ8AAAZwySDe2M325.png

回车,b键启动

wKiom1mpXcSwllZiAADf7DjMuQw461.png

此时bash作为第一个启动的程序,会跳过initrd设定的服务。

wKiom1mpXlnwNeKWAACxpFLt5ag104.png

此时是只读挂载没有修改权限,需重新挂载并进行后续操作。

重启完成修复。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属