欢迎访问个人网站,阅读此文http://www.yandong.org
Grub(Grand Unified Bootloader)是
一个来自GNU项目的多操作系统启动程序。
最新的grub版本是grub2,但是本文没有涉及grub2的内容,通常说的grub代指0.9X等版本,即grub Legacy。
apt-get --purge remove grub-pc rm -r /boot/grub/ mkdir /boot/grub apt-get install grub update-grub grub-install /dev/sda
什么是引导加载程序?
最简单地讲,引导加载程序(boot loader) 会引导操作系统。当机器引导它的操作系统时,BIOS 会读取引导介质上最前面的 512 字节(即人们所知的 主引导记录(master boot record,MBR))。在单一的 MBR 中只能存储一个操作系统的引导记录,所以当需要多个操作系统时就会出现问题。所以需要更灵活的引导加载程序。
主引导记录本身要包含两类内容 —— 部分(或全部)引导加载程序以及分区表(其中包含有关于介质其余部分如何划分为分区的信息)。当 BIOS 引导时,它会寻找硬盘驱动器第一个扇区(MBR)中存储的数据;BIOS 使用存储在 MBR 中的数据激活引导加载程序。
由于 BIOS 只能访问很少量的数据,所以大部分引导加载程序分两个阶段进行引导。在引导的第一个阶段中,BIOS 引导一部分引导加载程序,即 初始程序加载程序(initial program loader,IPL)。IPL 查询分区表,从而能够加载位于不同介质上任意位置的数据。首先通过这步操作 来定位第二阶段引导加载程序(其中包含加载程序的其余部分)。
第二阶段引导加载程序是引导加载程序的主体;很多人认为这才是引导加载程序的真正部分。它包含有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。从简单的命令行到绘声绘色的 GUI,这些用户界面的范围很广泛。
引导加载程序通常配置为两种方式的其中之一:要么是作为主引导加载程序(primary boot loader),要么是作为二级引导加载程序(secondary boot loader)。主引导程序 是安装在 MBR 上的第一阶段引导加载程序(见先前的描述)。 二级引导加载程序 是安装在可引导分区的第一阶段引导加载程序。必须在 MBR 上安装单独的引导加载程序,并配置它将 控制权转交给二级引导加载程序。
装载方式:直接装载,链式装载
直接装载:没有用到任何用到在引导装载程序和操作系统主文件(如内核)之间的中间代码。比如机器上只有一个操作系统,那么由os的bootloader就可以完成安装。
链式装载:主引导记录仅仅是简单的指向操作系统所在分区的第一个扇区。大致意思见下图
grub装载大致过程:
1.装载基本的引导程序,其一般在第一扇区(<前512字节),为装载第二引导程序做准备
2.装载第二引导程序,显示菜单式命令
3.装载一个特定分区上的操作系统,如linux内核
grub的两个阶段:
要制作引导软盘,需要做两件事 — 将文件复制到软盘的 ext2 文件系统的 /boot/grub 目录中,运行 GRUB 的安装程序。运行 GRUB 安装程序时,GRUB 将 “stage 1″ 装入器安装到软盘的引导记录中。它还将 stage 1 装入器配置成从 ext2 文件系统直接装入 stage2。通常,GRUB 通过在包含 stage2 数据的软盘上创建一列块来完成此操作,这样 stage1 装入 stage2 时不必知道 ext2 文件系统的任何情况。
但是,大多数情况下,GRUB 在安装完 stage1 之后,会立即将 stage1.5 装入器安装到引导记录中。这个特殊的 stage1.5 允许无需使用原始块列表就能从 ext2 文件系统装入 stage2,却要更灵活的标准基于路径的方法。GRUB 理解文件系统结构的这一能力使 GRUB 比 LILO 更强壮。例如,如果正好在整理引导盘文件系统的碎片,stage1 就可以找到 stage2(归功于 ext2 stage1.5)。而 LILO 就不能完成此项操作。因为 LILO 只能依赖于映射文件,每次更新内核或在磁盘上物理移动数据时,即使不更改路径,也需要重新运行它。
您也许会想知道:如果使用 FAT 而不是 ext2 文件系统创建引导盘,GRUB 是否可以工作。是的,它可以工作,因为在输入 “setup (fd0)” 时,GRUB 会安装与 root 文件系统类型匹配的 stage1.5。即使没有没有空间可以安装 stage1.5,GRUB 仍可以通过追溯到更原始的块列表,来装入 stage2。
2.系统使用IDE硬盘或者SCSI硬盘,都没有关系,硬盘以hd开头,软盘以fd开头
3.grub的根文件系统和linux的根文件系统不同,装linux分区时,一般/boot 和 / 分别是两个分区的挂载点。
4.GRUB 最好的优点之一就是其强健的设计 — 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。
(一)引导l4ka
其详细内容见这篇文章
(二)引导ubuntu
(待续。。。相关内容很多,自己搜一搜吧)