close

話說最近Ubuntu 9.10釋出正式版…樓主因為有一台桌機本來就採用Ubuntu Desktop當作平日使用…
於是就下載安裝光碟進行全新安裝…從原來的9.04換成9.10(不是升級)~安裝一樣沒有什麼問題…也可以正常使用…
但要利用GRUB進行多重開機(開M$ Windows系統)設定的時後…發現…發現什麼吶?發現原有的GRUB設定檔內容差很大…稍微研究了一下…底下做說明…
如果也有使用情境像樓主一樣的…一台電腦…安裝多種系統的人…可以稍作參考~希望對你們有幫助…

先說明GRUB http://www.gnu.org/software/grub/

GNU GRUB is a Multiboot boot loader. It was derived from GRUB, the GRand Unified Bootloader.
Briefly, boot loader is the first software program that runs when a computer starts.
It is responsible for loading and transferring control to the operating system kernel software.
The kernel, in turn, initializes the rest of the operating system.

GRUB是一種多重開機的開機載入程式…可在電腦第一時間進行開機時…讀取相關開機裝置內的開機引導區時運作~
進行引導到不同裝置(不同硬碟、或不同分割區)進行作業系統核心載入…再由核心進行剩下的開機程序~

發展至今…GRUB釋出了第二版…比起第一版來說…多了些功能…但也有壞處(稍後再說)…
官方也說明了…舊式GRUB之後再也不發展了…這意味熟悉很久的設定方式就要改變了

Ubuntu 9.10就是採用這種開機引導程式…而且在這版中直接採用GRUB2當成預設
相對於其它Linux版本…算是較早使用這種BootLoader的Linux版本

好了…來說明差別吧…
GRUB2多了什麼發展目標吶…取自官網的說明

GRUB 2 targets at the following goals:

  • Scripting support, such as conditionals, loops, variables and functions. //支援Scripting,可以有條件描敘、迴圈、設定變數還有函式的支援
  • Graphical interface.//圖形介面
  • Dynamic loading of modules in order to extend itself at the run time rather than at the build time. //由GRUB2進行動態載入模組
  • Portability for various architectures. //具有可攜性適用於多種架構
  • Internationalization. This includes support for non-ASCII character code, message catalogs like gettext, fonts, graphics console, and so on. //支援國際化,選單文字用可以使用non-ASCII的方式
  • Real memory management, to make GNU GRUB more extensible.
  • Modular, hierarchical, object-oriented framework for file systems, files, devices, drives, terminals, commands, partition tables and OS loaders. //模組、階層、物件導向設計架構
  • Cross-platform installation which allows for installing GRUB from a different architecture. //多種平台皆可安裝GRUB2
  • Rescue mode saves unbootable cases. Stage 1.5 was eliminated.  //救援模式的使用,且舊式GRUB Stage1.5開機階段不再使用
  • Fix design mistakes in GRUB Legacy, which could not be solved for backward-compatibility, such as the way of numbering partitions. //變更舊式GRUB的設計失誤,像分割區編號


以上有些內容可以在之後的設定範例中看到…有些功能各位會認為早就有了…但是發展的方式更加容易了…
GRUB2官網說wiki可以看這兒…http://grub.enbug.org/


底下是有關於Ubuntu 9.10上的GRUB細部說明
Ubuntu上面的help對於GRUB2的說明…
有些功能是Ubuntu特別設計的…像grub.cfg的產生
有些說明內容是GRUB2的…有些則是舊式GRUB的
https://help.ubuntu.com/community/Grub2
https://wiki.ubuntu.com/Grub2

設定目錄在/boot/grub/
底下的檔案多了很多個…別嚇到…多半都是*.mod檔

主設定檔改為grub.cfg

跟舊的menu.lst格式很接近

預設值內容在/etc/default/grub檔案中

相關目錄/etc/grub.d/

底下分類了一些內容…需要修改的地方就到合適的分類檔裡面去改


#vi /boot/grub/grub.cfg
前面的註解告知別手動修改…但是看得懂的…一樣可以改…這兒我不建議手動改…
真正的改法…應該是改/etc/default/grub 設定…改相關目錄/etc/grub.d/下的小檔案內容…
再執行update-grub指令…然後/boot/grub/grub.cfg就會變更了…
//這兒看來…官網上的GRUB2並未提及…可見這是Ubuntu自行設計發展的
更正:這兒提到…
http://grub.enbug.org/Manual GRUB2的好像就是這樣
說方便使用者…也不對…對於熟悉menu.lst的格式…直接看完說明直接改可能還比較簡單


先看如何加入M$ Windows的開機選項吧…
#vi /etc/grub.d/40_custom
menuentry "Windows Lucky Seven Ultimate 64Bits" {
set root=(hd0,1)
chainloader +1
}

注意:在set root=(hd0,1)中的第二個數字1,指的是分割區編號(舊的從0開始編,GRUB2則從1開始編,表示第一個分割區)
注意:hd0為硬碟編號…可參考/boot/grub/device.map檔案內容(這兒硬碟編號依舊從0開始編號…與舊式GRUB相同)
注意:這兒的menuentry " XXXXXXXXXXXX" {   YYYYYYYYYYYY   } 為一筆可選擇的開機選單選項,用{ }號將內容括住(舊式GRUB是用title)

#vi /etc/default/grub

GRUB_DEFAULT=4
#預設開第五筆menuentry,與舊式GRUB編號方式一樣…從0開始編,預設開那筆要自己改
GRUB_HIDDEN_TIMEOUT=20
#隱藏選單並倒數20秒
#如果註解掉上面那行…則選單不會
隱藏
GRUB_HIDDEN_TIMEOUT_QUIET=false
#會看到20秒倒數,按shift或esc鍵可以看到選單內容
GRUB_TIMEOUT=20
#選單內選擇開機選項倒數20秒


#update-grub
指令進行後…會發現/boot/grub/grub.cfg的內容己改變

#grub-install /dev/sda
這兒我將GRUB裝在/dev/sda這顆硬碟的MBR,/dev/sda是我開機時…第一個開的硬碟…

重開系統試試看吧…

心得:
GRUB2載入的時間花的比較多…至少在我的系統上是這樣
支援/boot on ext4、RAID、LVM

(未完…後續有資料會繼續補充)

arrow
arrow
    全站熱搜

    creative1223 發表在 痞客邦 留言(0) 人氣()