您现在的位置是:首页 > 文章详情

CentOS开机异常修复汇总

日期:2018-01-26点击:838
  1. 破解root 口令,并为grub 设置保护功能
 开机enter 按a->1或s或S或single进入单用户模式,修改密码
  1. 破坏本机grub stage1 ,而后在救援模式下修复之
 ==注意grub.conf文件会丢失,要提前备份== #备份mbr dd if=/dev/sda of=/root/mbr bs=1 count=466 进入单用户模式 chroot /mnt/sysimage grub-install /dev/sda 从“/dev/sda”中找到GRUB程序并进行修复
  1. 删除vmlinuz 和initramfs 文件后无法启动, 两种方法恢复之
 #initramfs文件 chroot /mnt/sysimage df#可以看到原系统的磁盘设备 cd /boot ls #是initframs内核文件丢失导致,解决方案: #修复initramfs文件 mkinitrd ./initramfs-`uname -r`.img `uname -r` #如果是CenOS5 则执行 mkinitrd ./initrd-`uname -r`.img `uname -r` 若修复失败可重装内核 #查看当前系统使用的内核 uname -r 从光盘安装内核(注意要先切换根) lsblk 可以看到光盘设备是sr0 挂载光盘 mkdir /mnt/cdrom mount /dev/sr0 /mnt/cdrom df rpm -ivh kernel-2.6.e64.......rpm --force 启动后出现grub,则需要修复grub chroot /mnt/sysimage grub-install /dev/sda exit exit reboot #vmlinuz文件 光盘里面/images/preboot/vmlinuz和/isolinux/vmlinuz即为内核文件,可以直接cp过来 # vmlinuz的文件名可参考/boot/grub/grub.conf中的配置,亦可直接改配置中的文件名,两者保持一致即可 cp -av /mnt/cdeom/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
  1. /etc/inittab 设置默认6 恢复之
 开机回车,a->1|s|signal进入单用户模式 或者 开机回车,a->3 然后将/etc/inittab改回来
  1. 某个服务无法启动,系统无法启动,解决之
 cd /etc/init.d/ vim testsrv 输入以下内容 #!/bin/bash #chkconfig:2345 99 00 #description:this service is used for test case $1 in start) echo 'the service is started' touch /root/testsrv ;; stop) echo 'the service is stopped' rm -f /boot/testsrv ;; status) [ -f /boot/testsrv ] && echo 'service testsrv is running...'||echo 'service testrv is stopped' ;; *) echo 'Usage start|stop|status' 注意#chkconfig:2345 99 00这里开机启动的序号不能大于99 #给执行权限 chmod +x testsrv chkconfig --add testsrv chkconfig testsrv --level 1 on 修改启动时间 reboot #!/bin/bash #chkconfig:12345 00 00 #description:this service is used for test case $1 in start) echo 'the service is started' sleep 100000 touch /root/testsrv ;; 由于启动序号设置太小,网络服务还没起来,无法连接xshell,而单用户模式也设置了开机启动,所以需要按照如下方法修复 开机按回车进入内核选则项 按a 在quite后添加 init=/bin/bash(默认为/sbin/init) 此时开机进入bash以后根目录是以只读方式挂载的,需要重新挂载 mount -o remount,rw / chkconfig --level 12345 testsrv off exit reboot
  1. 破坏stage1.5

==grub命令依赖于grub目录里面的文件==

 grub grub> root (hd#,#) grub> setup (hd#) (hd#,#) hd#: 磁盘编号,用数字表示;从0 开始编号 #: 分区编号,用数字表示; 从0 开始编号 (hd0,0) #备份分区表 dd if=/dev/sda of=/root/mbr count=446 bs=1 conv=notrunc # 备份grub.conf cp -av /boot/grub/grub.conf /root/ # 破坏mbr dd if=/dev/zero of=/dev/sda bs=1 count=446 conv=notrunc 启动时会出现operating System not found的提示,说明没有mbr来引导操作系统 reboot chroot /mnt/sysimage df 查看boot和/是否挂载 grub root (hd0,0) # (hd0,0)表示第一块硬盘的第一个分区,也就是sda的sda1 setup (hd0) 1.5阶段前512字节记录的是后面27个扇区具体要读取的内容,如果将后面的内容破坏掉,系统仍无法正常启动 #备份 dd if=/dev/sda of=/root/mbr2 bs=1 count=2048 skip=512 #破坏 dd if=/dev/zero of=/dev/sda bs=1 count=2048 seek=512 conv=notrun c reboot 此时开机界面不会出现倒计时 进入救援模式 用grub或grub-install修复 chroot /mnt/sysimage grub-install /dev/sda sync exit exit reboot 
  1. 破坏stage2
  #备份/boot/grub/grub.conf #清空/boot/grub目录 rm -rf /boot/grub reboot # 进入救援模式 df 确保/boot已挂载 chroot /mnt/sysimage df grub-install /dev/sda sync exit exit reboot 此时由于没有/boot/grub/grub.conf文件,开机会进入grub命令行 输入ker(tab补全) /v(tab)补全 root=/dev/vg0/root selinux=0 回车 ini(tab补全) /initra(tab补全) 回车 boot (也可以在救援模式下手写grub文件) 

8.为grub加口令

 #生成md5口令 grub-md5-crypt #grub-crypt (sha512) [root@lee: /root]# grub-crypt Password: Retype password: $6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn. 添加至配置文件 default=0 timeout=5 #sha512的加密方式需要指定--encrypted password --encrypted $6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn. splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-642.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_lee-lv_root rd_LVM_ LV=vg_lee/lv_root rd_NO_LUKS rd_LVM_LV=vg_lee/lv_swap rd_NO_MD crashkernel=128M LANG =zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-642.el6.x86_64.img # 也可直接用明文 password $1$fYmOJ/$0n6c5b/WPxt0nDOJPsrJq0 
  1. 删除/boot/ 所有内容,然后恢复
 1)/boot/vmlinuz cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname -r` 2)/boot/initramfs.img mkinitrd /boot/initramfs-`uname -r`.img `uname -r` rpm -ivh /mnt/cdrom/Packages/kernel.XXX.rpm 3)grub/* grub-install /dev/sda 4)grub/grub.conf default=0 timeout=3 title 23M kernel /vmlinuz-XXXX root=/dev/sda2 initrd /initramfs-XXXX.img
  1. 在普通分区,删除/boot/ 所有内容及/etc/fstab,恢复
 1)救援模式,先/etc/fastab恢复 df blkid mount /dev/sda1 /mnt/sda1 mount /dev/sda2 /mnt/sda2 mount /dev/sda3 /mnt/sda3 vim /etc/fstab 2)reboot,重新进入救援模式 df 确保挂载成功 3)修复grub grub-install /dev/sda 4)修复kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf
  1. 使用逻辑卷,删除/boot/ 所有内容及/etc/fstab,恢复
 1)救援模式,先/etc/fastab恢复 lsblk(失效) df blkid fdisk -l sda1带*为boot分区 mkdir /mnt/{sda1,sda2} mount /dev/sda1 /mnt/sda1 mount /dev/mapper/vg_lee-lv_root /mnt/sda2 lvdisplay (可以看到NOT available) vgchange -ay 激活卷组 lvdisplay vim /mnt/sda2/fstab(r!blkid) 2)reboot,重新进入救援模式 df 确保挂载成功 3)修复grub grub-install /dev/sda 4)修复kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf default=0 timeout=5 title=CentOs6.8 kernel /vmlinuz-2.6.32-642.el6.x86_6 root=/dev/mapper/vg_lee-lv_root selinux=0 initrd /initramfs-2.6.32-642.el6.x86_64.img
原文链接:https://www.centoschina.cn/troubleshooting/osbug/9611.html
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章