系统管理至grub故障排错及自建linux

第二章    系统启动故障排除

    1、grub配置文件写错,无法进入系统

    步骤:(修复完成后记得修改配置文件为正确的文件)

    方法一:进入启动菜单项后,修改菜单项为正确的内容,然后启动

    1.png

    2.png

    3.png

    4.png

    5.png

    6.png

    方法二:进入启动菜单后,进入grub交互式界面,手动引导启动

    7.png

    

    2、grub的stage1故障修复

    步骤:

    <1>破坏grub的stage1,如果未重启,则直接利用grub-install命令进行修复,如果重启,则继续

    1.1.png

    <2>重启后发现无法进入系统,此时可以利用光盘进入紧急救援模式,然后进行grub-install安装修复

    1.2.png

    1.3.png

    1.4.png

    1.5.png

    1.6.png

    1.7.png

    1.8.png

    1.9.png

    1.10.png

    1.11.png

    1.13.png

    3、grub的stage1.5故障修复

    步骤:

    <1>破坏grub的1.5阶段,重启系统(如果没重启,可直接用grub-install进行安装)

    1.png

    2.png

    <2>进入紧急救援模式(进入救援模式的步骤省略),进行grub-install安装修复grub

    3.png

    4、grub的stage2故障修复(删除/boot/grub目录和内核文件,ramdisk文件)

    步骤:

    <1>删除/boot/grub目录和内核文件vmlinuz,ramdisk文件initramfs,然后重启

    (如果没重启,可以直接拷贝系统光盘上的vmlinuz文件,然后运行mkinitrd命令生成initramfs文件,然后运行grub-install命令生成修复grub文件,最后编辑grub配置文件即可)

    1.png

    2.png

    <2>进入紧急救援模式(进入过程省略)进行修复

    3.png

    4.png

    7.png

    8.png

    5、破坏grub的stage1、stage1.5、删除boot目录的故障恢复

    步骤:

    <1>破坏stage1、stage1.5,删除boot目录,然后重启

        如果没重启,rpm安装kernel包(注意加上–replacepkgs或–force选项,因为kernel安装的文件不仅仅有boot目录下的相关文件,如果不用选项,会报错),然后grub-install安装修复grub,然后编辑生成一个grub.conf配置文件即可

    1.png

    <2>进入紧急救援模式(进入紧急救援模式的过程省略),修复

    2.png

    111.png

    6.png

    6、破坏grub的stage1、stage1.5、删除boot目录,删除/etc/fstab文件的故障恢复

    步骤:

    <1>破坏grub的stage1、stage1.5、删除boot目录,删除/etc/fstab文件,重启系统

        如果破坏后,尚未重启系统,只需重新编辑/etc/fstab文件,然后与上个实验一样,安装kernel包(注意加–replacepkgs或–force选项),grub-install安装grub,然后提供grub的配置文件即可

    1.png

    

    <2>进入紧急救援模式,进行修复

    2.png

    3.png

    4.png

    5.png

    6.png

    8.png

    9.png

    10.png

    11.png

    15.png

    16.png

    7、当系统安装在lvm逻辑卷上时, 破坏grub的stage1、stage1.5、删除boot目录,删除/etc/fstab文件的故障恢复

    步骤:

    <1>破坏stage1、stage1.5,删除boot目录、删除/etc/fstab文件,并重启

    1.png

    

    <2>进入紧急救援模式修复

    2.png

    3.png

    4.png

    5.png

    6.png

    8.png

    9.png

    10.png

    11.png

    14.png

    15.png

    8、系统上init文件、inittab文件破坏后的恢复方案

    步骤: 思路为查询文件是由哪个程序生成,然后在救援模式下进行安装对应的包,进行修复

    1.png

    2.png

    3.png

第三章    自建Linux系统

    实验环境:

        CentOS6.8的64位系统

        思路为:在现有虚拟机上添加一个新磁盘,然后对磁盘做出相关操作,然后新建一个虚拟机,新建的虚拟机利用该块磁盘完成系统启动

    步骤:

    1、在原有虚拟机上添加一块磁盘

    2.png

    3.png

    4.png

    5.png

    6.png

    7.png

    8.png

    9.png

    2、对添加的磁盘进行分区,格式化

    10.png

    11.png

    12.png

    3、挂载新建的磁盘分区

    13.png

    4、拷贝内核文件、ramdisk文件到新磁盘的boot目录,为新磁盘创建grub,提供grub配置文件

    14.png

    15.png

    5、为新磁盘的根添加相关的目录结构,并拷贝相关程序及程序依赖的库文件到新磁盘上

    18.png

    19.png     

      QQ截图20160917210321.png

        卸载磁盘,否则磁盘无法引用

    6、新建虚拟机,并将虚拟机的磁盘指向到我们做好的磁盘

    21.png

    22.png

    23.png

    24.png

    25.png

    26.png

    27.png

    28.png

    29.png

    30.png

    31.png

    32.png

    33.png

    7、启动虚拟机,验证功能

    34.png

    35.png

    8、复制命令用到的脚本为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[root@localhost ~]# cat scripts/course/copycmd.sh 
#!/bin/bash
# Autor: nwc
# Version: 2.0
# CreateTime: 
 
function CMDCP() {
    DIR=`dirname $CmdPath`
    if [ -d ${LuJing}${DIR} ] ;then
        cp $CmdPath ${LuJing}${DIR} && echo "cp $CMD success" || echo "cp $CMD fail"
    else
        mkdir -p ${LuJing}${DIR}
        cp $CmdPath ${LuJing}${DIR} && echo "cp $CMD success" || echo "cp $CMD fail"
    fi 
}
 
 
function CMDLIBCP() {
    for in ${LibCmd} ; do
        LIBDIR=`dirname $i`
        if [ -d ${LuJing}${LIBDIR} ];then
            cp $i ${LuJing}${LIBDIR} && echo "cp $i success" || echo "cp $i fail" 
        else
            mkdir -p ${LuJing}${LIBDIR}
            cp $i ${LuJing}${LIBDIR} && echo "cp $i success" || echo "cp $i fail" 
        fi
    done
}
 
 
 
 
while true;do
     read -p "Input a exec program name like ls/cat... q for quit  " CMD
    case $CMD in 
    q)
        echo "exit..."
        exit
    ;;
    *)
        if which --skip-alias $CMD &>/dev/null  && [[ $CMD != "q" ]]; then
                 CmdPath=`which --skip-alias $CMD`
            LibCmd=`ldd $CmdPath|grep -o -E "/[^[:space:]]+"`
            LuJing=/mnt/sys
            CMDCP
            CMDLIBCP
        else
                  echo "you input is not a right command"
                continue
        fi
    ;;
    esac
done

转载请注明:linux

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

(0)
上一篇 2016-09-13 20:43
下一篇 2016-09-13 20:50

相关推荐

  • 简述硬盘参数和ext2文件系统

    硬盘类型: HDD机械硬盘和SSD固态硬盘: HDD是现在最普通的硬盘,容量大,稳定,是存储数据的首选。SSD是现在新兴的硬盘,相比HDD,它的并发i/o高,传输速度可达HDD的几倍以上,无噪音低功耗,而且轻便防震,随着各大厂商发力,性价比也越来越高,要求性能高或者数据轻度使用者可以优先考虑SSD。   容量:存储数据的空间大小,一般来说HDD每G…

    Linux干货 2016-04-19
  • 逻辑卷管理器(LVM)-介绍

    逻辑卷管理器(LVM) §·逻辑卷管理器LVM介绍 2 ※·LVM逻辑卷的简单描述 2 ※·LVM逻辑卷的好坏 2 ※·LVM结构组成部分 2 §·LVM的举例分析 3 ※·LVM设备名称 3 ※·LVM分区类型: 3 ※·LVM  PV相关命令 3 ※·LVM  VG相关命令 3 ※·LVM  LV 相关命令 3 ※·LVM …

    Linux干货 2016-08-29
  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05
  • 第一周博客作业

    前言:这几周的课程大部分开班前就掌握了的,这次学的细一点,顺便学一下markdown写博客、排版。内容有部分是前几期学员写的,觉得写得不错,就斗胆截取了,还有部分是自己写的,也有一些是百度到的内容。 目录 一、描述计算机的组成及其功能 二、linux发行版 三、linux哲学思想 四、常用命令 五、如何获取命令的帮助信息 六、linux发行版的基础目录名称命…

    Linux干货 2017-01-09
  • Linux源程序包相关概念整理

    一、      Linux源程序包介绍 1)    linux源程序包基础 1.         遵循常用开源协议:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系统运维 2015-09-22
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp /etc/skel /home/tuser1 [root@localhost ~]# chmod -R&nb…

    Linux干货 2017-01-18