1. 程式人生 > >linux 重啟進入grub

linux 重啟進入grub

我的系統 redhat7.0
事情發生起源:
之前一直沒有更換redhat的源,昨天晚上我成功更換了源。
然後,我使用redhat自帶的軟體更新,進行更新,自動檢測更新,發現需要下載700Mz左右的安裝包

挺長的時間,我離開一段時間,再回來看見提示更新失敗(我懷疑是網路的原因,因為我使用的網路不穩定),接著有提示我,需要重啟(好像是已經有部分安裝了),
剛好不用電腦,就直接重啟,想看看樣子。

結果,呵呵,直接進入grub介面,這個介面的樣子:
Minimal bash-like line editing is ....
...... ......
...... ......

grub>

就是這個樣子,這個是grub2.0的環境。(怎麼確定自己的grub版本 輸入 help 顯示出所有當前grub可用的命令,不同grub版本的命令不太一樣的,額,我不是特別清楚)

該幹嘛呢?

通過grub引導系統

首先,我輸入 ls 命令
顯示出所有的分割槽資訊,如下:
(lvm/rhel-root) (lvm/rhel-home) (lvm/rhel-swap) (hd0) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3)

看到這個,我很好奇 (lvm/rhel-root) (lvm/rhel-home) (lvm/rhel-swap) 這三個分割槽.

再次使用ls 命令檢視分割槽內的資訊
ls (lvm/rhel-root)/
顯示出該分割槽內的所有內容(如下):
./ ../ boot/ etc/ usr/ mnt/ opt/ (這是我根據記憶複述的)
我緊接著又 ls (lvm/rhel-root)/boot/
顯示出這個分割槽裡的boot資料夾下的內容(如下):
./ ../ 
啥都沒有。

之後再網路上看到有人說可以在/ect/fstab 中檢視到分割槽資訊

cat 是用來檢視檔案內容的命令(grub2.0支援這個命令)
於是我輸入命令  cat (lvm/rhrl-root)/etc/fstab
顯示出fstab檔案資訊(如下):
#...
#...
#...
/dev/mapper/rhel-root     /
UUID=5ED3....273          /boot
UUID=01T2...8380          /boot/efi
/dev/maper/rhel-home      /home
/dev/mapper/rhel-swap     Swap



這個檔案提供的資訊非常重要,是我最後解決問題的關鍵。
這個檔案描述資訊就是指出各個分割槽對應的(不知到怎麼講)

反正我這個檔案告訴我 /dev/mapper/rhel-root  就是對應這 根目錄 /


我們繼續:
    四句 grub 命令引導核心
    grub> set root=(hd0,2)
    grub> linuxefi /vmlinuz(這裡用tab鍵補齊,但我發現竟然有3個vmlinuz檔案,我很慌,隨便選了一個)  root =/dev/mapper/rhel-root  (這裡就是關鍵)
    grub> initrdefi /initram....(也是用tab鍵補齊,也是發現有3個initra..檔案,很慌,挑了一個和上面我選的vmlinuz一致的)
    grub> boot

搞定!

分析四句話:
    set root(hd0,2) 把grub指向我們想引導進入的發行版所在的分割槽(關於hd0,2是怎麼填的,我之前用ls (hd0,2)/ 這個命令檢視到(hd0,2)這個分割槽下面有vmlinuz... initr....檔案,其他的分割槽都沒有,所以我確定發行版檔案,核心等檔案都在這個分割槽裡)
    linuxefi(這個命令,網上有看到用linux命令,只是我的grub只支援linuxefi命令,所以就用了這個) /vmlinuz....   root  /dev/mapper/rhelroot 這句話就是告知 grub 核心映象再分割槽中的位置,以及根檔案系統的位置(所謂根檔案系統就是我在 /etc/fstab 中檢視到的根目錄 /  對應的那個分割槽,所以我填寫的是 /dev/mapper/rhel-root)
    initrdefi /initram......這句話就是設定虛擬檔案系統檔案的位置
    輸入boot 這是grub 將會引導進入指定的作業系統



總的來說,就是做填空題,答案自己用grub命令找,
三個填空題  1.  set root=(???)
         2. linuxeft /vmlinuz????
             3. initrdefi /initr???
    或者 
         1. set root=(???)
             2. linux /vmlinuz????
             3. initrd /initr????

成功進入了系統之後,還有最後一件事,很重要,就是再系統內進行修復,額,我還沒解決。

2016-11-06 16:02:06 By JackLu