File System GRUB 自由軟體 UNIX 檔案系統 開源碼

深入指揮作業系統啟動 詳解GRUB開機管理程式

2015-06-16
在Linux系統技巧前一篇介紹MBR、GPT與UEFI的文章中,有稍微提到GRUB開機管理程式,本文將特別針對GRUB這個開機管理程式,做一詳細介紹。
·30_os-prober:此檔案是負責到其他磁碟找尋Windows、Linux、Mac OS/X、Minix或是Hurd等相關作業系統,並把這些位於其他磁碟機的作業系統加入開機選項中,這個檔案主要是讓grub-mkconfig呼叫使用,是系統寫好的偵測指令稿程式(Shell Script),因此沒有修改必要。

·40_custom:看到custom檔名就知道這個檔案是讓使用者能夠修改加入自己所想設定的項目。因此,在「/etc/grub.d/」目錄下,唯一可以直接讓使用者修改的就是這個檔案,不過使用者必須熟悉Shell程式設計與GRUB相關設定。

修復GRUB的安裝

當Linux系統開機發生問題時,如果開機能夠進到GRUB命令提示列,那麼使用者可以使用前面所提到的GRUB指令,找到Linux核心相關檔案所在的磁碟機分割區與路徑,然後使用GRUB指令設定好環境,啟動進入Linux系統後再修改相關設定檔進行修復。

但是,如果GRUB沒安裝好,導致看不到開機畫面或只是看到GRUB這四個字系統就停住,那就需要另外的Linux開機救援光碟進入系統重新修復GRUB的安裝。

一般Linux發行版都會有救援光碟或是救援模式,待使用救援光碟或救援模式開機進入系統後,一樣先找出「/boot」和「/」這兩個系統所在的磁碟機與分割區,然後在救援系統內將「/boot」與「/」掛載起來,假設「/boot」與「/」分別位於「/dev/sda1」與「/dev/sda2」,則使用者可以執行如下指令將這兩個部分掛載到「/mnt」目錄下:


之後使用「chroot /mnt」指令,由救援系統中切換到「/mnt」所在等待修復的系統內,然後執行「grub-install /dev/sda」指令將GRUB重新安裝「/dev/sda」內。最後使用「grub-mkconfig -o /boot/grub/grub.cfg」指令,重新產生grub.cfg設定檔,便可完成GRUB的修復。

修復後,使用「exit」指令退出chroot環境,執行「umount /mnt/boot」以及「/mnt」後,便可重新由修復的GRUB開機管理系統中進入Linux系統。

另外,若是在重新設定安裝GRUB的過程中,出現像是找不到proc、dev、sys等檔案系統的訊息,這經常發生在使用Debian救援光碟開機去修復CentOS的GRUB安裝的情況下,也就是救援系統與要修復的系統是不同的發行版本,在這種情況之下,可以在掛載「/boo」與「/」分割後執行以下的指令:


這個指令是為了掛載proc、dev及sys三個Linux系統的虛擬檔案系統以供grub-install使用,之後便可依照同樣的步驟chroot進入系統內修復GRUB的安裝。

結語

以上是針對GRUB這個廣泛使用於Linux各式發行版的開機管理程式的介紹,在熟悉GRUB相關運作原理與指令後,往後處理Linux系統相關開機問題時,就能夠更加得心應手,下一期Linux系統技巧將接著介紹另一個開機管理程式Syslinux,敬請拭目以待!

<本文作者:黃明華,目前主要擔任雲端及儲存技術顧問,負責協助開發相關應用產品。擅長研究各式系統及程式技術,並提供相關技術支援、諮詢、導入及評估服務,特別是自由軟體/開放原始碼相關系統與技術。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!