要把GRUB作为你的boot loader,你首选要在类UNIX系统中安装GRUB系统和相关工具。这些东西,你可以通过源码安装或者通过软件包来安装。
安装这些工具后,在类UNIX系统中,你需要通过grub-install把boot loader安装到磁盘中。
GRUB自带启动镜像,这东西一般放在/usr/lib/grub/-的目录里(基于BIOS的机器就放在/usr/lib/grub/i386-pc)。GRUB镜像的路径就叫做启动镜像路径,对于boot loader来说,这个就叫做启动路径。
4.1 通过grub-install 安装 grub
如果要找在PC BIOS平台安装GRUB的资料,可以查看BIOS安装这章。 为了要在类UNIX中安装GRUB,你需要以root的权限来使用grub-install 使用方法非常简单。你只要把参数传给这个boot loader这个程序就可以了。这个参数包含了一个设备文件的路径。比如说,在linux下,下面这个命令就是把GRUB安装到第一个IDE磁盘的MBR区: grub-install /dev/sda 同样的,在GNU/Hurd下,下面这个命令也有类似的效果: grub-install /dev/hd0 但是,在上面的例子中,都是假设GRUB把映像(image)放在/boot目录下面(这里应该是只安装的意思)。如果你想把映像放在其他目录,那么你就需要通过--boot-directory参数指定映像的路径。经典的用法是,你创建了一个GRUB的启动软盘,下面就是一个例子: mke2fs /dev/fd0 mount -t ext2 /dev/fd0 /mnt mkdir /mnt/boot grub-install --boot-directory=/mnt/boot /dev/fd0 umount /mnt (这里实际上是吧grub的映像安装到了软盘的boot目录,如果你不指定路径,那么就安装到默认的/boot目录。按照grub-install的说明,要使用哪个grub,应该是通过--directory来指定的)
一些BIOS有个bug,它会把USB的第一个分区当做是软盘,而不是硬盘,因此,他们把这个称作USB-FDD启动。在这种情况下,你要这样来安装: losetup /dev/loop0 /dev/sdb1 mount /dev/loop0 /mnt/usb grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0 只要他们安装在独立的目录,这个安装方法不会跟标准的安装冲突 在EFI系统中固定磁盘的安装,你要挂载EFI系统分区。如果你把它挂载在boot/efi,那么就不需要特别的处理: grub-install 否则,你就要指定EFI的分区: grub-install --efi-directory=/mnt/efi 对于可移动设备的安装,你要用--removable、--boot-directory、--efi-dirctory这三个参数: grub-install --efi-dirctory=/mnt/usb --boot-directory=/mnt/usb/boot --removable
4.2 制作一个GRUB可以启动的CD-ROM
在El Torito 说明6中,GRUB支持不枚举的模式。这就是说,你可以从GRUB中使用整个CD-ROOM,并且你不用制作一个软盘或者硬盘的映像文件,而这个文件又可能导致兼容问题。 如果要从CD-ROOM中启动,GRUB会使用一个特殊的映像叫做cdboot.img,在这之后,还会接着使用core.img。这个core.img至少要用"iso9660"和'biosdis'模块来构建。此外,一个可启动的CD-ROOM还需要包含grub.cfg和其他的GRUB模块。
如果要弄一个通用的GRUB拯救CD,你可以使用grub-mkrescue来弄:
grub-mkrescue -o grub.iso
接着弄一个目录给GRUB:
mkdir -p iso/boot/grub
如果需要,可以在iso/boot/grub目录下放个grub.cfg文件,此外还可以把相关的文件和目录放到iso目录下。
最后,就是制作映像:
grub-mkresuce -grub.iso iso
这样,就会产生一个grub.iso的映像文件,这个文件可以直接烧录到CD、DVD或者USB。 因为根设备(root device)会自动正确的进入grub.cfg,所以,你可以直接在cd中引用相关文件的名字,而不用指定具体的设备名。这是的这个拯救映像既能够在光驱中也能够在USB中正确的工作。