系統無法正常啟動的解決之道

先來看下配置文件的格式:

[root@centos6 ~]# uname -r
2.6.32-642.el6.x86_64
[root@centos6 ~]# cat /boot/grub/grub.conf 
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0  
timeout=5  
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=UUID=a60b5a4a-0be1-44b6-bce3-363d117f52b7 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img

grub最重要的是識別磁盤信息:(hd0,0)

1,硬盤代號以小括號()括起來

2,硬盤以hd表示,后面會跟一組數字,數字之間以逗號隔開

3,是以搜到的順序來作為磁盤的編號,而非根據磁盤的排線編號(多硬盤情況,搜尋的次序是根據bios中設置的啟動順序,而非插槽編號)

4,第一個搜尋到的磁盤編號為0,第二個為1,以此類推

5,每快磁盤上的第一個分區編號為0,第二個分區為1,以此類推

因此,(hd0,0)表示第一塊磁盤上的第一分區

default=0    默認的啟動條目,假如同時裝有多個操作系統,0表示定義的第一個title系統,1表示           定義的第二個title系統,以此類推

timeout=5    表示可供選擇的等待時間,如果超過5秒鐘,則使用默認的啟動條目default定義的

splashimage=(hd0,0)/grub/splash.xpm.gz    定義啟動時的背景圖片信息

hiddenmenu    啟動時是否要宣示菜單,默認情況下是不顯示菜單信息,如果想要顯示菜單,可將該配置信息注釋即可(行首加#);所謂顯示菜單就是下面的信息:

wKiom1fXZzriT_CGAAAUf-xygSc369.png

title   定義各個操作系統的名稱

root  表示內核文件存放的位置,這里所指的是分區位置,而非 / 目錄

kernel  內核的名稱以及一些啟動時的核心參數。由于啟動過程中需要掛載根目錄,因此就需要指定根       目錄所在的分區。rhgb表示彩色顯示,quiet表示靜默模式加載內核

initrd  虛擬文件系統

grub.conf文件的配置方法:

default:  設定默認啟動的內核或操作系統

timeout:  超時時長;單位是秒

splashimage:grub  菜單的背景圖片(可選)

      圖片:xpm格式,壓縮為zip,14bits顏色,640X480

      需安裝gimp圖片編輯工具

hiddenmenu: 隱藏選擇菜單(可選)

title  定義一個操作系統或內核

root: 指明引導當前操作系統或內核文件所在分區

kernel: 內核文件路徑、根文件系統所在設備,以及傳遞給內核的參數

initrd: 指明用于輔助內核完成系統啟動的ramdisk文件路徑再次在內存緩存

實驗:

一,設置密碼保護編輯功能(在title前面

在grub.conf配置文件里的title之上添加password –md5 “加密后的密碼”即可

wKiom1fXqKiBy7IQAAAXcZ3KrjY929.png

生成密碼的方式:在vim末行模式下,輸入該命令,當光標自動跳到行首時,輸入密碼后按回車,再輸入一次密碼后按回車,即生成密碼

wKioL1fXrT7CbjDLAAABzMX7Ygw208.png

以后每次開機想要進入菜單進行編輯時,需要輸入密碼:

wKiom1fXq9PhNOp-AAAU6zcLMvk155.png

二,設置密碼保護內核(在title之內

在grub.conf配置文件里的title之內添加password –md5 “加密后的密碼”即可

wKioL1fXrQegARvMAAAYPSJABOI325.png

生成密碼的方式:在vim末行模式下,輸入該命令,當光標自動跳到行首時,輸入密碼后按回車,再輸入一次密碼后按回車,即生成密碼

wKioL1fXrVryRHhdAAABzMX7Ygw950.png

以后每次開機進入系統時,需要輸入密碼:

wKiom1fXrxrS_KOyAAAHHlGAff8423.png

三,損壞grub.conf文件后的恢復

系統無法正常啟動的解決之道

四,在分區情況下,刪除并恢復 /boot 和 /etc/fstab(友情提示:先做快照備份)

1,先查看下本機的分區情況和相關配置文件/etc/fstab, /boot/grub/grub.conf

系統無法正常啟動的解決之道

2,刪除 /boot 和 /etc/fstab,并重啟系統

wKioL1ffS_GAVk12AAAKMLhHkqA723.png

3,由于刪除了/boot 和 /etc/fstab,系統找不到啟動分區和kernel,就要進入救援模式,提示系統沒

有分區,故要先創建分區

wKiom1ffTPHyO_RoAAAKLT8PSqQ081.png

4,創建/boot 和 /etc/fstab

系統無法正常啟動的解決之道

系統無法正常啟動的解決之道

5,創建grub的配置文件

系統無法正常啟動的解決之道

系統無法正常啟動的解決之道

6,重啟系統,又回到熟悉的界面

五,在邏輯卷情況下,刪除并恢復 /boot 和 /etc/fstab(友情提示:先做快照備份)

1,先查看下本機的分區情況和相關配置文件/etc/fstab, /boot/grub/grub.conf

wKiom1ffS_GQ9g8XAAA0siE9LVs281.png

2,刪除 /boot 和 /etc/fstab,并重啟系統

wKioL1ffS_GAVk12AAAKMLhHkqA723.png

3,由于刪除了/boot 和 /etc/fstab,系統找不到啟動分區和kernel,就要進入救援模式,提示系統沒

有分區,故要先創建分區

wKiom1ffTPHyO_RoAAAKLT8PSqQ081.png

4,創建/boot 和 /etc/fstab

系統無法正常啟動的解決之道

5,創建grub的配置文件

系統無法正常啟動的解決之道

wKioL1ffaiiBskuYAAAKDdkNHKo967.png

6,重啟系統,又回到熟悉的界面

六,在U盤上自制linux

1、給U盤分區并創建文件系統

  # fdisk/dev/sdb

  /dev/sdb1對應 /boot /dev/sdb2對應 /

  # mkfs.ext4 /dev/sdb1

  # mkfs.ext4 /dev/sdb2

2、掛載U盤的 /boot和 /

  # mkdir /mnt/boot

  # mkdir /mnt/sysroot

  # mount /sdb1  /mnt/boot

  # mount /sdb2  /mnt/sysroot

3、安裝grub至U盤

  # grub-install –root-directory=/mnt /dev/sdb

    

4、復制內核和initrd文件至U盤

  # cp /boot/vmlinuz-Version  /mnt/boot/vmlinuz

  # cp /boot/initramfs-Version.img  /mnt/boot/iniyramfs.img

5、創建目標文件的根系統文件至U盤

  # mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}

6、移植bash等至U盤的根文件系統

  # bash copy.sh   

   腳本內容如下:

  #!/bin/bash
ch_root="/mnt/sysroot/"
[ ! -d $ch_root ] && mkdir $ch_root
bincopy() {
   if which $1 &>/dev/null;then
      local cmd_path=`which --skip-alias $1`
      local bin_dir=`dirname $cmd_path`
      [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
      [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}
      return 0
   else
      echo "Command not found"
      return
   fi
}
libcopy() {
   local lib_list=$(ldd `which --skip-alias $1` | grep -Eo '/[^[:space:]]+')
   for loop in $lib_list;do
       local lib_dir=`dirname $loop`
       [ -d ${ch_root}${lib_dir} ] || mkdir -p ${ch_root}${lib_dir}
       [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}
   done
}
read -p "Please input a command:" command
while [ "$command" != "quit" ];do
    if bincopy $command;then
         libcopy $command
    fi
    read -p "Please input a command or quit:" command
done

7、為U盤創建文件系統的配置文件

 # vim /mnt/sysroot/etc/fstab

   /dev/sda1 /boot ext4 defaults 1 1

   /dev/sda2  /    ext4 defaults 1 2

8、為U盤的grub提供配置文件

  # vim /mnt/boot/grub/grub.conf

    default=0

    timeout=5

    title

        root(hd0,0)

     kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash

     initrd /initramfs.img

原創文章,作者:pingsky,如若轉載,請注明出處:http://www.www58058.com/47829

(0)
pingskypingsky
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • 常見RAID磁盤陣列組合簡介

    常見RAID磁盤陣列組合簡介    RAID,是Redundant Arrays of Inexpensive Disks的簡寫,磁盤陣列?,F今的計算機世界,最值錢的是什么?軟件、硬件?都不對,應該是承托在其之上的數據。對于我們來說,數據是無價的,硬件損壞了,可以重新購置。軟件損壞了,也可以重新安裝,但數據一旦丟失,就有可能再也找不回來了…

    Linux干貨 2016-06-01
  • Heartbeat高可用http

    Heartbeat高可用http 實驗圖 heartbeat高可用http 一、實驗圖: 二、heartbeat高可用http(Heartbeat V1 haresource) heartbeat節點ssh互信 heartbeat節點名稱相互解析,uname -n heartbeat節點時間一致性 安裝前準備: ssh多節點互信 [root@node4&nb…

    Linux干貨 2016-07-07
  • 目錄的三權限之——R,W,X之間的愛恨糾葛!

    目錄的三權限之——R,W,X之間的愛恨糾葛! 文件的權限我們一般都很容易了解,但是目錄的權限,我們可能很多人就容易含混不清了,而許多時候目錄的權限也是非常重要的。 因此我專門做了一個關于目錄其他用戶的權限實驗,以此來解開目錄權限的神秘面紗。在此我分別設定了三種情況,看看當某個目錄/testdir對其他用戶user1僅沒有R,W,X權限時,其他用戶對此目錄有什…

    Linux干貨 2016-08-08
  • Linux用戶和組管理(第三周)

    第三周作業 1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可 [root@localhost ~]# who | cut -d" " -f1 | sort | uniq 2.取出最后登錄到當…

    Linux干貨 2016-09-15
  • Linux的發展史

       在早期電氣化發展時代1946年誕生了計算機事物,早期的計算機體積巨大,只能適用于一個人操作,而且運行速度慢。但已經形成計算機的架構體系,為了盡可能的榨干計算機資源在計算機發展的二階段,于是有當時著名實驗室BELL ,GE,MIT共同研發了一款叫MULTCS操作系統,這也是最早的操作系統。   1946年一個沒有完成的夢想,…

    Linux干貨 2016-10-13
  • 命令行歷史和調用命令參數

    history顯示當前終端的歷史記錄 !! 重復執行上一條命令 !-n 重復執行倒數第n條命令 !n 重復執行第n條命令 ctrl+p 等于向上方向鍵,翻出上一條命令。 ctrl+n 等于向下方向鍵,翻出下一條命令。 ctrl+j 等于enter 執行當前命令 !:0 執行前一條命令(去除參數) !string 重復前一個以“string”開頭的命令(只限于…

    2017-07-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-20 10:35

    寫的很好,圖示清晰,原理部分闡述的很詳細。贊一個

欧美性久久久久