设为首页 收藏本站
查看: 1405|回复: 0

[经验分享] Linux 系统修复

[复制链接]

尚未签到

发表于 2018-5-18 12:47:50 | 显示全部楼层 |阅读模式
1.  二、修复linux系统
  思路:恢复fstab文件找到分区à修复引导里的内核文件à修复grub–>还原init相关文件
·        1.进入修复模式
  通过RHEL5光盘引导进入安装会话,输入linux rescue或按F5键进入rescue修复模式。
DSC0000.jpg

  进入修复模式之后,系统会提示选择语言Language和键盘类型Keyboard,直接回车就行了。
  系统会再次询问是否配置网络,选择No,因为修复系统不需要用到网络。。然后会提示如下:
DSC0001.jpg

  Rescue程序将查找当前硬盘上是否有已安装的linux系统,如果找到了的话,就自动挂载到/mnt/sysimage下。选择”Continue”继续,rescue程序会搜索硬盘是否存在已安装过的linux和硬盘分区,最终结果如下图:
DSC0002.jpg

  搜索结果显示,找不到Linux分区,因为/etc/fstab文件被删除了,所以导致系统无法读取Linux分区,但是如果找到了,就将它挂到/mnt/sysimage里面,可以读写。选择”OK”确定之后,系统会进入到修复模式的shell下。
DSC0003.jpg

·        2.还原fstab文件
  根据上面步骤得知,rescue程序无法找到硬盘分区,所以现在要做的事情就是恢复linux分区——也就是fstab文件(这个fstab文件在删除之前,有做过备份/etc/fstab.bak)。
  #fdisk -l        查看磁盘分区
DSC0004.jpg

  根据fdisk –l输出,得到系统分区有两个/dev/sda1和/dev/sda2。可使用e2label命令查看这两个分区的卷标,
DSC0005.jpg

  由上图可得知/dev/sda1是/boot分区,而/dev/sda2无法查看,因为sda2是LVM分区。
  使用命令激活LVM分区#lvm vgchange-ay  这个命令的作用就是告诉系统建立相关的device-mapper,这样就可以看到/dev下建立了/dev/mapper/VGname-LVname和/dev/VGname/LVname的设备文件和链接文件.
DSC0006.jpg

  使用ls /dev/mapper命令可以看到VolGroup00-LogVol00(就是/根分区)和VolGroup00-LogVol01(就是swap分区)
  接下来,要挂载/根分区,并恢复fstab文件。
  #mkdir test                 ---建立一个空目录用于挂载分区
  #mount -t ext3 /dev/VolGroup00/LogVol00 /test     ---挂载包含根分区的LVM分区到test目录下
DSC0007.jpg

  将系统原来的/根分区挂载到/test目录之后,就可以还原fstab.bak到fstab了!
DSC0008.jpg

  #cp /test/etc/fstab.bak/test/etc/fstab     ----还原fstab文件
  #reboot       ----重启系统
·        3.修复内核和grub
  重启之后,按ESC键选择CDROM引导,输入linux rescue再次进入到修复模式。
  此时再次进入到修复模式时,rescue程序将会找到fstab文件,也就是会找到linux分区!并且把损坏的原linux系统挂载到/mnt/sysimage下。并且rescue程序会提示你,可以使用#chroot(changeroot修改根目录)修改根目录,进入到原系统中。如下图所示:
DSC0009.jpg

  选择OK之后,系统已经全部挂载到了/mnt/sysimage,如果想进去,敲入#chroot/mnt/sysimage,修改根目录为/mnt/sysimage,使用ls命令可以查看原系统里的文件和目录。使用exit可以退回rescue程序下,再次使用ls命令可以比较一下区别。
DSC00010.jpg

  一般把处于resuce模式的系统称为伪系统,把#chroot/mnt/sysimage后看到的称为真正的系统。
  接下来要修复内核文件:
  #exit         ---退回到resecu模式下
  #mount /dev/hdc /mnt/source     ---挂载光驱cdrom到/mnt/source目录
  #rpm -ivh/mnt/source/Server/kernel-2.6.18-164.e15.i686.rpm--root=/mnt/sysimage/ --force
  (需要修复的三个内核文件在系统盘server目录下kernel-2.6.18.rpm软件包里,所以要挂载光盘之后并安装kernel软件包)
DSC00011.jpg

  此时,内核已修复完成!再继续修复grub程序。。。
  #chroot /mnt/sysimage  进入到已损坏的linux系统中
  #grub-install /dev/sda   安装grub程序到/dev/sda
  #ls /boot/grub          查看grub目录下是否存在grub.conf文件。如果没有就手动编辑一个。
  #vim /boot/grub/grub.conf
DSC00012.jpg

  手动编辑grub.conf配置文件内容如下:
DSC00013.jpg

  保存退出。。。grub修复完成!
  4、修复/etc/inittab等文件
  #rpm -qf/etc/inittab         查询包含inittab文件的软件包
  #rpm -qf /etc/rc.d/rc.sysinit   查询包含rc.sysinit文件的软件包
  #rpm -qf /etc/rc.d/rc.local   查询包含rc.local文件的软件包
DSC00014.jpg

  经过rpm –qf查询命令可得知,要修复的文件都包含在initscripts-8.45.rpm这个软件包里面。
  下一步,要把文件从这个RPM里面分离出来,并还原到/etc目录下.
  #exit
  #cp/mnt/source/Server/initscripts-8.45.30-2.el5.i386.rpm  /mnt/sysimage/tmp
  #chroot /mnt/sysimage
  #cd tmp/
  #ls
  #rpm2cpio initscripts-8.45.30-2.el5.i386.rpm  |cpio-imd    解压软件包到当前目录
  #ls                            两个ls命令注意比较区别
  #cd etc/
  #ls
  #cp inittab /etc/
  #cp rc.sysinit /etc/rc.d/
  #cp rc.local /etc/rc.d/
DSC00015.jpg

  最后只需要reboot就可以正常进入到linux系统了!!!!   OVER!
  

  总结:
  linux grub恢复步骤:
    1、先确认MBR分区正常:如果启动系统后能出现"grub>"说明MBR 分区正常。及grub第一阶段正常
    2、在grub提示符下操作:
        grub> root (hd0,0)    ##指定内核所在的分区是那一个,一般为(hd0,0)
        grub> kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/volGroup-lv_root
             ## 指定系统的内核文件vmlinuz-2.3.654.x86_64,以及主机的根分区root=/dev/sda3,一般按TAB键可以补全,这里特别注意的是主机的根分区。一般系统在分区的时候一定是先分boot分区、home等 最后再分一个 /  分区,因此这里一定要注意此分区的写法,如果无法无法确定此分区,可以通过放入系统光盘,进入拯救模式下:
                 bash-4.1# fdisk -l
                 bash-4.1# e2label /dev/sda1 查看卷标,如果分区为lvm则如下
                 bash-4.1# lvs /vgchange -ay   加载lvm
                 bash-4.1# ls /dev/mepper/    得到系统的根分区
                 bash-4.1# blkid /dev/sda1    查看sda1分区的uuid,因为6以后的系统都是通过UUID来挂载分区的
        grub> initrd /initramfs--2.6.32-642.el6.x86_64.img  指定ramdis文件
        grub> boot启动
            正常清况下就可以启来。但是大部份是不正常情况因此主要操作如下

重点:
    3、进入光盘的拯救模式:
        bash-4.1# fdisk  -l
        bash-4.1# e2label /dev/sda1--3
        bash-4.1# ls /dev/mepper
        bash-4.1# lvs /vgchage -ay
        bash-4.1# blkid /dev/sda1
            ##以上几个操作主机是获取分区信息,UUID信息

    4、修复 /etc/fstab文件;通过上面几步获取到的根分区信息将其挂载
        bash-4.1# mount -t ext4 /dev/mapper/VolGroup-lv_root /mnt/test
        bash-4.1# cd /mnt/test ##这个test目录就是你问题主机的根分区,所有内容尽收眼底。此时你就有了两个操作系统目录。一个为当前光盘系统的目录,一个为真实系统的目录。操作理念为缺什么就从光盘里copy一份,但要注意位置要对应

        bash-4.1# vi /mnt/test/etc/fstab  ##同样要根据上面步骤获取信息
                    /dev/mapper/VolGroup-lv_root     /     ext4  defaults 1 1
                    UUID=74rsd-654e-782b-euff    /boot    ext4  defaults 1 2
                    /dev/mapper/VolGroup-lv_home    /home ext4    defaults 1 2
                    /dev/mapper/VolGroup-lv_swap    swap  swap  defaults 0 0

    5、修复/boot/grub/grub.conf
        bash-4.1# vi /mnt/test/boot/grub.conf
                   default=0
                   timeout=15
                   title CentOS 6 release
                           root hd0,0
                          kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/volGroup-lv_root
                          initrd /initramfs-2.6.32.642.el6.x86_64

    6、copy内核文件以及ramdisk文件
        bash-4.1# \cp -rfP /boot/grub/mlinuz-2.6.32-642.el6.x86_64 initramfs-2.6.32.642.el6.x86_64 /mnt/test/boot/
        或者:
        bash-4.1# grub-install --root-directory=/mnt/sysimages /dev/sda3

    6、使用chroot来测试以上操作是否正确
        bash-4.1# umount /mnt/test
        bash-4.1# chroot /mnt/sysimage
            #如果不成功,先重启系统,并再一次进入光盘拯救模式,执行chroot /mnt/sysimage 还不行,则根据提示缺少什么文件就将光盘中的对应的文件copy到持载目录 “mount /dev/mapper/VolGroup-lv_root /mnt/test”下对应的目录中。例如“no file /bin/sh"这样的提示时可以通过:ldd /bin/sh 这个命令查看这个文件所依赖的库文件在什么地方,将光盘中的库文件copy到对应的/mnt/test/下对应的目录即可。

    7、修复/etc/inittab等文件

        #rpm -qf /etc/inittab   查询包含inittab文件的软件包

        #rpm -qf /etc/rc.d/rc.sysinit   查询包含rc.sysinit文件的软件包

        #rpm -qf /etc/rc.d/rc.local   查询包含rc.local文件的软件包

                经过rpm –qf查询命令可得知,要修复的文件都包含在initscripts-8.45.rpm这个软件包里面。

                下一步,要把文件从这个RPM里面分离出来,并还原到/etc目录下.

        #exit

        #cp /mnt/source/Server/initscripts-8.45.30-2.el5.i386.rpm   /mnt/sysimage/tmp

        #chroot /mnt/sysimage

        #rpm2cpio initscripts-8.45.30-2.el5.i386.rpm  |cpio -imd    解压软件包到当前目录
        
        #cd etc/

        #ls

        #cp inittab /etc/

        #cp rc.sysinit /etc/rc.d/

        #cp rc.local /etc/rc.d/

        这样90%就可以恢复问题主机系统了。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461728-1-1.html 上篇帖子: linux命令: inittab chkconfig 下篇帖子: linux下开放端口
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表