这表示你希望把grub安装进/dev/sda(把boot.img写进第一块硬盘的MBR),如果由于某些原因你想把grub安装到单独的boot分区,可以使用/dev/sdaX,grub2不建议这样,因为他会减小grub的可靠性,或者其他用户用grub-install把grub装进了错误的分区导致操作系统的危险性。
grub-install –root-directory=/media/grub2 /dev/sda
创建一个大约60M的分区,用文件系统格式化分区,把他挂载到/media/grub2,/dev/sda是指把stage1写入MBR
mke2fs /dev/fd0 mount -t ext2 /dev/fd0 /mnt mkdir /mnt/boot grub-install --boot-directory=/mnt/boot /dev/fd0 umount /dev/fd0创建一个软驱启动盘
注意
grub-install只是一个脚本,内部真正执行工作的是grub-mkimage和grub-setup,因此你也可以直接用着两个命令安装grub,建议还是用grub-install,除非你非常熟悉grub内部
grub2有两中不同的引导方法,一个是直接加载操作系统,一个是连锁(chain-load)到另一个boot load,然后再从另一个boot load加载系统,一般来说第一个更常用,但是假如grub不支持所有的操作系统就需要这种方法
3.2 Grub镜像grub2的镜像文件包括
镜像描述boot.img 在PC BIOS系统中,boot.img在grub启动的第一部分,他被写入MBR或者boot分区,因为PC的boot扇区只有512bytes,所以此文件精确到只有512bytes,他唯一的功能是从本地磁盘读取内核镜像第一个扇区位置然后跳到内核镜像,因为文件大小的限制,boot.img不能识别任何文件系统,所以当安装grub时,grub-setup把内核镜像第一个扇区的位置硬编码进boot.img中
diskboot.img 当从硬盘引导时此镜像作为内核镜像的第一个扇区的内容,他把剩余的内核镜像读入内存中然后启动内核
cdboot.img 原理同上
pxeboot.img 当从网络用PXE引导时用次镜像启动内核镜像
kernel.img 此镜像包含grub运行时包含的基本工具,框架驱动、文件句柄、环境变量、安全模式命令行解析器等,他可以直接使用,但是编译进所有的内核镜像中了
core.img 这是grub的内核镜像,他被grub-mkimage程序从kernel.img和一些模块动态编译而成,一般情况下他已经包含足够的模块去访问/boot/grub,模块机制可以使得内核镜像保持很小
*.mod 其余的一切是可以动态加载的一些模块,当需要他们时,他们是被自动加载编译进内核镜像的,但也可以使用insmod手动加载
grub legacy的镜像文件
镜像描述stage1 他非常像grub2中的boot.img,他们有一样的功能
*_stage1_5 在grub legacy中,stage1_5的作用是包含足够的系统代码从而可以使更大的stage2从普通系统上读入,他有点像grub2中的core.img但是core.img比他功能强多了,grub legacy可以只使用stage1和stage2在一些受限制的情况下工作,但是grub2没有core.img就不能工作
stage2 grub2没有stage2镜像,代替的是他运行时从/boot/grub加载模块
4 配置Grub
在早期的Ubuntu版本中,使用grub1作为默认的启动引导程序,如果想要修改系统启动菜单,直接编辑/boot/grub/menu.lst即可。