系統管理至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.www58058.com/46247

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

相關推薦

  • netstat命令和ss命令

    詳解netstat命令和ss命令

    Linux干貨 2018-01-01
  • 2016-08-18博客作業

    case 語句 條件判斷語句 case 用 變量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; … *) 默認分支 ;; esac   case 支持glob 風格的通配符: *       任意長度任意字符 ?    &…

    Linux干貨 2016-09-19
  • 第二周 N28

    作業二

    2017-12-10
  • Linux磁盤和文件系統管理

    Linux磁盤和文件系統管理 linux磁盤管理 一、Linux設備類型     硬盤有機械硬盤(HDD)和固態硬盤(SSD)之分。機械硬盤即是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等     幾個部分組成。  &nbs…

    Linux干貨 2016-04-11
  • wk_02 作業

    Linux 文件管理命令 cp命令 功能 Linux 系統中cp命令是用來復制目錄/文件的。 概要 單源復制 cp [OPTION]… [-T] SOURCE DEST DEST不存在則事先創建此文件,并復制源文件的數據流至DEST中; DEST存在 DEST是非目錄文件:則覆蓋目標文件; DEST是目錄文件:則先…

    Linux干貨 2016-12-11
欧美性久久久久