Mar 20

以下内容以GNU GRUB 0.97为标准,并且是从U盘引导。

1.     安装grubU盘。

安装grubU盘最方便的方法就是在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也支持直接引导linuxFreeBSD等。

我们要用grub来引导自己的内核,当然我们不希望自己写一个bootloader再让grubchainload,所以我们得支持多重引导规范。

 

  一个简单的内核实例(grub0.97源文件/docs/下面有三个文件multiboot.hloader.skernel.c,下面作了简化):