如何修复系统问题–实验

实验一: MBR的数据被破坏了,系统无法开机启动,如果有光盘,会自动启动光盘,因为在检查的时候,认为是没有硬盘设备的

dd if=/dev/zero of=/dev/sda bs=1 count=446 
1. 进入光盘的救援模式中
2. 切根  chroot /mnt/sysimage/   再使用 grub-install /dev/sda 
     光盘自动启动的时候会,自动挂载到自己的根上,并不是系统的根,所以要切根
grub-install 这个工具是系统工具,所以还是要切根
grub-install /dev/sda 这个工具不仅仅修复1阶段,还修复1.5  2通通都给你修复(如果没有也会生成)
注:修复的时候,有时候会出现bug,进去重复修复一边
      修复完成之后 sync 同步一下

实验二:第1.5  2阶段的数据破坏了

dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
1. 破坏之后,1.5  2进入系统只有黑屏,是能进去的,前512个字节没有被破坏,所有能够识别该硬盘,能进入,但后续的操作就没有了

安装grub:  #光盘自带 
   (1)grub-install 安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下 
       grub-install –root-directory=DIR /dev/DISK
   (2)grub 
       grub> root (hd#,#) 
       grub> setup (hd#)
          注:在执行grub修复的1.5 2阶段的时候,依赖/dev/grub/* 的文件,不然无法执行
2. chroot /mnt/sysimage/
3. grub
4. grub> root (hd0,0)
5. grub> setup (hd0)
注:在初始化的时候(1.5 2阶段没有被破坏之间)在/boot/grub/* 里的多个文件中 只有/boot/grub/grub.conf文件
      这时系统是正常启动,没有问题
注:在1.5 2阶段破坏了,修复之后。必须要有/boot/grub/* 里的文件不能少,grub下的文件有些依赖的
      其它主要的stage2文件(有/boot/grub/grub.conf  stage2)即可,但一般还是都有比较好

实验三:/boot/grub/grub.conf文件被破坏或不存在

mv /boot/grub/grub.conf /app/
1. 因为系统找不到grub.conf文件,能进入系统。系统会进入grub模式下   grub>
2. grub> root (hd0,0)
3. grub> kernel /vmlinuz-2.6.32-696.el6.x86_64  root=/dev/sda2
    注:root=/dev/sda2  指的是根在哪
4. grub> initrd /initramfs-2.6.32-696.el6.x86_64.img
5. grub> boot  boot启动
    注:这只是在命令中修改并没有写入文件当中,所以启动之后必须写入文件当中去

实验四: /boot/grub/* 里面的文件全都没有了,系统启动时候找不到启动项,会出错,出现:  Error 15  黑屏

mv /boot/grub/*  /app/
1. 进入救援模式
2. chroot  /mnt/sysimage/ 
3. grub-install  /dev/sda  #修复 1  1.5  2阶段
    这时/boot/grub/里的文件除了/boot/grub/grub.conf文件没有都有了
4. vim  /boot/grub/grub.conf
   default=0
   timeout=5
   title xdglinux
   kernel /vmlinuz-2.6.32-696.el6.x86_64  root=/dev/sda2  #/dev/sda2 代表根
   initrd /initramfs-2.6.32-696.el6.x86_64.img
       注:最简的写法了
5.  sync  sync   exit   exit   reboot重启

实验五:/boot/ 里面的文件全部删除了

rm -rf /boot/
1. 进入救援模式
2. chroot /mnt/sysimage/
3. 这时/boot 里面的文件全部都没有了(grub  vmlinuz  initramfs主要的三个文件)
    mount /dev/sr0 /mnt/
     注:在光盘当中有vmlinuz的内核文件(其实在系统安装的时候就是从光盘当中复制过去的)
           在isolinux文件中叫vmlinuz的文件(没有内核信息,后面的2.6.32。。。)
          先 cd   /mnt/isolinux/   –>   再 cp  vmlinuz   /boot/
4. mkinitrd /boot/initramfs.img uname -r  #内核版本没有写了,uname -r是必须要指定的
    生成initramfs文件
5. grub-install /dev/sda  
    生成grub里的文件信息( 1 1.5 2三个阶段的内容信息)
6. vi /boot/grub/grub.conf   #编写grub.conf的配置文件信息
    default=0
    timeout=5
    title xdg_linux
    kernel /vmlinuz root=/dev/sda2
    initrd /initramfs.img
重新启动

实验六:init (/sbin/init 被破坏、损坏)

mv /sbin/init /app/  注:移动过后,系统重新启时候,无法进入系统,停在内核启动过程中
     提示:sh:no job control in this shell

     这时候,sh这个程序无法正常运行,怎么输都没有用

  [root@centos6 xdg]#which init
  /sbin/init
  [root@centos6 xdg]#rpm -qf /sbin/init
  upstart-0.6.5-16.el6.x86_64
1. 进入系统时,选择菜单  –> 进入grub模式的kernel的一行中,在后面添加一行  init=/bin/bash
   注:表示系统启动时,不用init进程来启动,用bash来启动,而bash当中内置了一些内部命令
2. 重新启动系统时,进入的时候会用bash启动,进入后,安装init程序
   注:这时是只读方式的文件系统,需要重新挂载一下   
   mount -o remount,rw  /  这时就可以了
3. mount /dev/sr0 /mnt/  #挂载光盘,安装里的rpm包
4. rpm -ivh /mnt/Packages/upstart-0.6.5-16.el6.x86_64  –force  
   注:因数之前安装过,要强制安装一个,避免出现问题。
   安装后,查看一个是否安装   which init
5. 重启

或者  进入救援模式,直接安装init包
或者  拷贝其它主机上的程序包(必须相同的)

实验七: 删除设备文件和boot

rm -rf /etc/fstab
rm -rf /boot
1. 进入救援模式中,这时光盘找不到根系统,无法挂载到/mnt/sysimage/里
    注:进入bash中  
    df查看挂载情况,无法查看
    fdisk /dev/sda  还可以看
    blkid 还可以看格式化的文件系统
2. 这时,进入bash当中只能自己手动挂载了。
   根据上面的信息,可以看到大概设备的信息,分析出几个有可能是根的分区
   然后每个挂载上去 mount  /dev/sda2  /mnt/  –> 挂载之后 ls /mnt/ 里的内容查看是不是根(相关目录信息)
3. 编辑、创建/etc/fstab文件相关信息
   vi /mnt/etc/fstab
   /dev/sda1  /boot  ext4  defaults 0 0
   /dev/sda2  /      ext4  defaults 0 0
   /dev/sda5  swap   swap  defaults 0 0
重启 
4. 进入救援模式中  chroot
    再修复/boot/

实验八:在用网络安装的系统  #逻辑卷的方式

mv /etc/fstab  /root/xdg
mv /boot  /root/xdg
注: 逻辑卷是不能当作boot来用的

mount /dev/VoIGroup/lv_home  /mnt/
注:这时候无法挂载上去,因为逻辑卷处于非活动状态(pvdisplay  查看)
注:因为在开机的时候脚本 /etc/rc.d/rc.sysinit 中激活了逻辑卷(所以目前是非正常启动)

1. vgchange -ay  #激活
查看  lvscan 是否激活
注:激活之后,逻辑卷就可以使用,也就可以挂载了。
lvscan  扫描查看一下,逻辑卷的状态

2. mount /dev/VoIGroup/lv_root   /mnt/cdrom/
挂载之后,进入根,编辑、创建/etc/fstab文件当中的配置信息
/dev/sda  /boot  ext4  defaults  0 0
/dev/mapper/VoIGroup-lv_root  /  ext4 defaults 0  0
存盘退出


3. 再次进入救援模式  #这时系统就可以识别/etc/fstab里的内容挂载上去了
grub-install /dev/sda   #修复1  1.5  2阶段的内容
挂载光盘 从光盘当中拷贝vmlinuz(内核文件)
cp /mnt/isolinux/vmlinuz   /boot/
mkinitrd  initramfs.img  `uname -r`
生成虚拟文件系统–> initramfs.img


4. 编辑/boot/grub/grub.conf文件
注:
default=0
timeout=5
title xdg
kernle /vmlinuz root=/dev/sda2
initrd /initramfs.img 
保存,退出


5. sync  sync   重启  –> OK

注:在救援模式当中,进入的时候,会有显示是否启用带网络功能的。
可以开启带有网络功能的,配置完成之后。
用scp 把远程的主机上的文件传送过来,也是可以的

原创文章,作者:_xddggg,如若转载,请注明出处:http://www.178linux.com/86174

(0)
_xddggg_xddggg
上一篇 2017-09-03 22:56
下一篇 2017-09-04 08:24

相关推荐

  • rpm包管理

    一、概述 RPM 是RPM Package Manager(RPM软件包管理器)的缩写。由redhat公司的Redhat package manager改名而来,成了RedHat的工业标准 二、rpm的命名格式: rpm包的命名格式:name-version-relase.arch.rpm version: major.minor.release,同源代码 …

    Linux干货 2015-10-07
  • 虚拟化技术介绍、Xen的简单实现

    虚拟化是什么? 虚拟化是一种资源管理技术, 是将计算机的各实体资源, 如服务、网络、内存及存储等, 予以抽象、转换后呈现出来, 打破实体之间的不可切割的障碍, 使用户可以比原本的配置更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式, 地域或物理配置所限制。一般情况下, 虚拟化资源包括计算能力和数据存储 —<转自维基百科&…

    2016-05-31
  • Windows与linux分区的区别:

        对于我们普通人来讲,分区就是我们看到的“我的电脑”下面的C盘、D盘、E盘······,每个分区都有自己的区域,无法使用别的分区的空间,这样可以起到保护分区中文件的作用。其实,这样很容易理解。可是,对于linux初学者来讲,因为使用习惯了windows,到了linux下面,一下子很难转换过来。  &nb…

    2017-07-16
  • 上下文管理练习(为加法函数计时)

    上下文管理(为加法函数计时) 为加法函数计时 使用装饰器显示该函数的执行时长 使用上下文管理显示该函数的执行时长 装饰器实现 import time import datetime from functools import wraps def logger(fn): @wraps(fn) # wraps(fn)(wrapper) def wrapper(*…

    2017-11-18
  • Linux的发展史

    前言: Linux是什么?    我们知道Linux这玩意儿是在计算机上面运作的,所以说Linux就是一组软件。问题是这个软件是操作系统还是应用程序? 且Linux可以在哪些种类的计算机上面运作?而Linux源自哪里?为什么Linux 还不用钱?这些我们都得来谈一谈先!      计算机系…

    Linux干货 2016-10-13
  • Linux发展史

    Linux发展史 本篇文章主要介绍Linux是什么,Linux是怎么来的,Linux能干些什么等 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它之所以如此受到人们的欢迎,是因为它开源,是因为它简洁,更因为它稳定。作为一个普通用户,或许你没接触过电脑的Linux系统,但…

    Linux干货 2016-10-14