我们在第一小节启动流程的地方曾经讲过,在 BIOS 读完资讯后,接下来就是会到第一个启动装置的 MBR 去读取 boot loader 了。这个 boot loader 可以具有菜单功能、直接加载核心文件以及控制权移交的功能等,系统必须要有 loader 才有办法加载该操作系统的核心就是了。但是我们都知道, MBR 是整个硬盘的第一个 sector 内的一个区块,充其量整个大小也才 446 bytes 而已。我们的 loader 功能这么强,光是程序码与配置数据不可能只占不到 446 bytes 的容量吧?那如何安装?
为了解决这个问题,所以 Linux 将 boot loader 的程序码运行与配置值加载分成两个阶段 (stage) 来运行:
- Stage 1:运行 boot loader 主程序:
第一阶段为运行 boot loader 的主程序,这个主程序必须要被安装在启动区,亦即是 MBR 或者是 boot sector。但如前所述,因为 MBR 实在太小了,所以,MBR 或 boot sector 通常仅安装 boot loader 的最小主程序,并没有安装 loader 的相关配置档;
- Stage 2:主程序加载配置档:
第二阶段为透过 boot loader 加载所有配置档与相关的环境参数文件 (包括文件系统定义与主要配置档 menu.lst),一般来说,配置档都在 /boot 底下。
那么这些配置档是放在哪里啊?这些与 grub 有关的文件都放置到 /boot/grub 中,那我们就来看看有哪些文件吧!
[root@www ~]# ls -l /boot/grub -rw-r--r-- device.map <==grub 的装置对应档(底下会谈到) -rw-r--r-- e2fs_stage1_5 <==ext2/ext3 文件系统之定义档 -rw-r--r-- fat_stage1_5 <==FAT 文件系统之定义档 -rw-r--r-- ffs_stage1_5 <==FFS 文件系统之定义档 -rw------- grub.conf <==grub 在 Red Hat 的配置档 -rw-r--r-- iso9660_stage1_5 <==光驱文件系统定义档 -rw-r--r-- jfs_stage1_5 <==jfs 文件系统定义档 lrwxrwxrwx menu.lst -> ./grub.conf <==其实 menu.lst 才是配置档! -rw-r--r-- minix_stage1_5 <==minix 文件系统定义档 -rw-r--r-- reiserfs_stage1_5 <==reiserfs 文件系统定义档 -rw-r--r-- splash.xpm.gz <==启动时在 grub 底下的背景图示 -rw-r--r-- stage1 <==stage 1 的相关说明 -rw-r--r-- stage2 <==stage 2 的相关说明 -rw-r--r-- ufs2_stage1_5 <==UFS 的文件系统定义档 -rw-r--r-- vstafs_stage1_5 <==vstafs 文件系统定义档 -rw-r--r-- xfs_stage1_5 <==xfs 文件系统定义档
至於 grub 的配置档档名,其实应该是 menu.lst 的,只是在 Red Hat 里面被定义成为 /boot/grub.conf 而已。鸟哥建议您还是记忆 menu.lst 比较好喔!所以从上面的文件来看, grub 认识的文件系统真的非常多喔!正因为如此,所以 grub才会取代 Lilo 这个老牌的 boot loader 嘛!