對/boot/grub/grub.conf的理解

   linux的啓動配置文件grub啓動時會在 /boot/grub 中尋找一個名字爲grub.conf的配置文件,如果找不到此配置文件則不進入菜單模式而直接進入命令行模式。


    grub.conf是一個純文字文件,您可以用任何一個文字編輯器來打開它。在SuSE LINUX 下沒有/boot/grub/grub.conf這個文件,但是在/boot/grub/目錄下有一個menu.lst文件,它的內容與grub.conf一樣,而在CentOS6.5中有/etc/grub.conf ->/boot/grub/ grub.conf。grub.conf中每一行代表一個設置命令,如果一行的第一個字符爲井號#,則這一行爲註釋,您可以簡單地用增加或減少註釋行來改變設置。 


        編輯grub.conf時,一般會有以下幾行: 


timeout X     # 設置爲在X秒之後自動引導默認的操作系統。


CentOS6.5中默認是timeout 5,也就是說5秒之內如果沒有其他命令就啓動系統。如果設成 -1,則 GRUB 會一直等待直到用戶選擇一個選項爲止。 


 default X      # 默認啓動第 X +1行選項,也就說default=0,則默認啓動菜單第1行的操作系統,default=1,則啓動第2行的系統,如此類推。 


 splash pathname/filename    # 指出開機畫面的文件所存放的路徑和文件名,如 splash /boot/logo/800x600x8.img 是指用在/boot/logo路徑下的800×600像素的文件作爲開機畫面。 


title OSname title      # 後面的字符就是在菜單項上所看見的選項,可以寫上操作系統的名字和描述,如用title BluePoint Linux, Single Mode 代表這一選項的話,是引導Thiz Linux的單用戶模式。 


 


 下面結合兩個系統引導描述來解釋幾個引導選項的意義: 


title Thiz Server, Default Mode 


root (hd0,1) 


kernel /boot/vmlinuz vga=auto root=/dev/hda2 


hd0是指第一個硬盤(主硬盤),(hd0,1)是指第一個硬盤的第二個分區。kernel /boot/vmlinuz是指出Linux內核的路徑在/boot/vmlinuz中;vga=auto是設置顯示模式;root=/dev/hda2 是指把第一個硬盤的第二個分區作爲根掛載點。 


title Microsoft Windows 


root (hd1,0) 


chainloader (hd1,0)+1 


root (hd1,0)是指第二個硬盤(從硬盤)上的第一個分區。chainloader (hd1,0)+1 是指裝入一個分區的數據然後把引導權交給它。


至於initrd文件是幹什麼用的呢?
大家只要做一個簡單的實驗就可以明白了:在開機的GRUB命令行上去掉initrd這一行,然後按CTRL+x啓動,過會你會發現屏幕出現“kernel panic”的提示。
爲什麼會這樣呢?這是因爲爲了減小kernle文件(vmlinuz)的大小和增強靈活性,現在的發行版如ubuntu默認將硬盤接口卡如IDE,STAT,SCSI的驅動程序以模塊(modules)的形式
放在initrd文件中,GRUB中去掉initrd這一行意味着initrd中的modules沒有被加載kernel就不能識別該硬盤更別提掛載上面的根文件系統了。
initrd文件的功能主要有兩個:
1、提供開機必需的但kernel文件(即vmlinuz)沒有提供的驅動模塊(modules)
2、負責加載硬盤上的根文件系統並執行其中的/sbin/init程序進而將開機過程持續下去

GRUB將kernle加載到內存並執行,kernel在運行的後期會讀取並執行initrd文件中的init腳本文件並按照其中命令逐行執行,所以要掌 握initrd的作用和硬盤上的根文件系統加載過程,全面解析init文件是很重要的。在本文的第二部分,我會將/boot/initrd文件打開,逐行 解讀init文件.





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章