以下内容以GNU GRUB 0.97为标准,并且是从U盘引导。
1. 安装grub到U盘。
安装grub到U盘最方便的方法就是在linux系统下使用grub安装程序。
具体步骤如下:
a) 首先找到U盘所在设备(这里假设为/dev/sdb1),然后挂载:
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
b) 创建相关目录
mkdir /mnt/sdb1/boot
mkdir /mnt/sdb1/boot/grub
c) 找到文件stage1
, stage2
, 和 *_stage1_5
的位置
find /usr/ -name statge
d) 复制以上文件到grub 目录(假设上面的文件在/usr/share/grub/ 目录下):
cp /usr/share/grub /mnt/sdb1/boot/grub
cp /usr/share/grub /mnt/sdb1/boot/grub
如果U盘是用FAT文件格式格式化的则复制fat_stage1_5,这里用的是FAT32:
cp /usr/share/grub /mnt/sdb1/boot/grub
e) 运行grub安装程序:
sudo grub
接着如下操作:(其中设备号要具体确定)
好了现在U盘上已经装好了grub,引导配置写在grub.conf中。
2. 用grub引导 内核
grub有两种不同的引导机制,一种是直接 载入系统内核,另一种是通过chainloader载入另一个bootloader来引导自己的系统。可以被bootloader原生支持的内核一般要符合多重引导规范(Multiboot Specification)。当然为了方便grub也支持直接引导linux,FreeBSD等。
我们要用grub来引导自己的内核,当然我们不希望自己写一个bootloader再让grub来chainload,所以我们得支持多重引导规范。
一个简单的内核实例(grub0.97源文件/docs/下面有三个文件multiboot.h,loader.s,kernel.c,下面作了简化):
!--[if>
!--[if>
![endif]-->
!--[if>
!--[if>
!--[if>
!--[if>
!--[if>
!--[if>