請問 GRUB 為何能夠懂硬碟檔案系統?



贊助商連結


b90220208
2009-06-01, 11:17 PM
如題,GRUB 在進入 stage2 後,是有何特異功能得以讀取硬碟檔案資料的?

還有為何開機一定得需要 initrd 呢?
鳥哥文章提到若為 ide 硬碟且 filesystem 非 lvm,raid (例如ext2/3)可以不需要 initrd
http://linux.vbird.org/linux_basic/0510osloader.php
但我在虛擬機器試過,若將之註解掉,則:
kernel panic - not syncing: VFS: Unable to mount root filesystem on unknown-block(0,0)

贊助商連結


wangcm
2009-06-02, 06:47 AM
您的問題其實在您貼出來的link中都有提到,不過鵝還是多嘴一下好了:sleep:....grub讀得懂特定filesystem就在於grub帶了一些相關module(就是通常在/boot/grub/中的那些*_stage1_5),如果要更詳細的資料建議您去找grub的source code回來看一下,至於initrd的問題主要還是看kernel mount root時所須的東東(i.e. filesystem/storage等等)有沒有static link進kernel中,如果沒有的話就得包在initrd中給kernel,不然kernel缺了那些東東又要如何讀到放在filesystem中的module呢:sleep:....不過因為kernel要包哪些東東/不包哪些東東每個人的習慣不見得一樣,所以很難一概而論(i.e. filesystem/storage通常都可以config成module,也可以static link進kernel中),只能說如果root是放在LVM中的話就非動到initrd不可(i.e. LVM相關的pvscan/lvscan/vgchange都是user space的東東,沒辦法直接讓kernel去做這些事,再說pvscan/lvscan要花一點時間,如果kernel沒有停下來等pvscan/lvscan/vgchange就直接mount root的話只會得到panic:unable to mount root而已:p:p)....

b90220208
2009-07-26, 11:36 AM
您的問題其實在您貼出來的link中都有提到,不過鵝還是多嘴一下好了:sleep:....grub讀得懂特定filesystem就在於grub帶了一些相關module(就是通常在/boot/grub/中的那些*_stage1_5),
感謝,
但這就是我的疑問,grub在讀取*_stage1_5前又是如何驅動與認識硬碟的檔案系統的呢?

bx2aa
2009-07-29, 12:20 PM
感謝,
但這就是我的疑問,grub在讀取*_stage1_5前又是如何驅動與認識硬碟的檔案系統的呢?
讀取前還不認識.
讀取後才認識, 直接讀取 stage2 *_stage1_5 檔案儲存的硬碟位置.