http://www-128.ibm.com/developerworks/l ... linuxboot/
The great thing about GRUB is that it includes knowledge of Linux file systems. Instead of using raw sectors on the disk, as LILO does, GRUB can load a Linux kernel from an ext2 or ext3 file system. It does this by making the two-stage boot loader into a three-stage boot loader. Stage 1 (MBR) boots a stage 1.5 boot loader that understands the particular file system containing the Linux kernel image. Examples include reiserfs_stage1_5 (to load from a Reiser journaling file system) or e2fs_stage1_5 (to load from an ext2 or ext3 file system). When the stage 1.5 boot loader is loaded and running, the stage 2 boot loader can be loaded.
GRUB先載入 512byte的 /boot/stage1
(其實這個應該是被安裝到MBR的 MBR也剛好只能裝512byte)
然後載入 1.5 stage的image 這時候就可以讀各種的filesystem
(這image放在MBR之後的30kb內 ,這裡說得http://en.wikipedia.org/wiki/GRUB#GRUB_boot_process)
然後就可以從磁碟上載入stage2,看到GUI控制介面
之後當然也就可以載入各種kernel了
PS. 用 head --byte 1024 |tail --byte 512 /dev/hda 真的可以看到 /boot/grub/e2fs_stage1_5 的前面512 bytes
http://www-128.ibm.com/developerworks/l ... tload.html