GRUB
grub是一个引导程序,功能强大。目前的机械式硬盘都有一个特殊的扇区,称之为MBR(master boot record),大小为512byte。在这512byte中,有64byte是给gpt(guid patition table),boot loader也只能占446byte。由于受限于boot loaderr 的大小,所以grub采用了非常精巧的设计,将引导分为stage1和stage2两个阶段进行。stage1位于MBR(446byte)中,主要功能是加载stage2;stage2位于/boot/grub/目录中,这样就可以利用stage2去引导加载系统,摆脱了MBR(446byte)的限制。
Stage 1:运行 boot loader 主程序:
这个主程序必须要被安装在启动区(MBR 或者是 boot sector) ,通常仅安装 boot loader 的最小主程序, 并没有安装 loader 的相关配置文件;
Stage 1:运行 boot loader 主程序:
这个主程序必须要被安装在启动区(MBR 或者是 boot sector) ,通常仅安装 boot loader 的最小主程序, 并没有安装 loader 的相关配置文件;
Stage 2:主程序加载配置文件:
透过 boot loader 加载所有配置档与相关的环境参数文件 (包括文件系统定义与主要配置文件 menu.lst), 一般来说,配置文件都在 /boot 底下。
透过 boot loader 加载所有配置档与相关的环境参数文件 (包括文件系统定义与主要配置文件 menu.lst), 一般来说,配置文件都在 /boot 底下。
硬盘与分区在 grub 中的代号
eg: (hd0,0)
1. 硬盘代号以小括号 ( ) 包起来;
2. 硬盘以 hd 表示,后面会接一组数字;
3. 以[搜寻顺序]做为硬盘的编号,而不是依照硬盘排线的排序;
4. 第一个搜寻到的硬盘为 0 号,第二个为 1 号,以此类推;
5. 每颗硬盘的第一个 partition 代号为 0 ,依次类推。
eg: (hd0,0)
1. 硬盘代号以小括号 ( ) 包起来;
2. 硬盘以 hd 表示,后面会接一组数字;
3. 以[搜寻顺序]做为硬盘的编号,而不是依照硬盘排线的排序;
4. 第一个搜寻到的硬盘为 0 号,第二个为 1 号,以此类推;
5. 每颗硬盘的第一个 partition 代号为 0 ,依次类推。
grub的配置文件:/boot/grub/grub.conf
grub的配置文件(grub.conf)是在安装系统的时候生成的,并不是安装完grub后生成的。其具体内容如下:
grub的配置文件(grub.conf)是在安装系统的时候生成的,并不是安装完grub后生成的。其具体内容如下:
还可以直接指定 partition 与档名,不需要额外指定核心文件所在装置代号
kernel (hd0,0)/vmlinuz-2.6.18-92.el5 ro root=/dev/vol0/root rhgb quiet
initrd (hd0,0)/initrd-2.6.18-92.el5.img
安装grub的两种方法:
1.在grub的命令模式下安装
这种方式只会安装stage1中的文件,而不会建立配置文件,即:只安装MBR中446字节的内容。当然对于stage2的内容,可以通过复制/usr/share/grub/目录中的文件得到,即:将/usr/share/grub/目录中的文件复制到/boot/grub/下即可。具体安装步骤如下:
这种方式只会安装stage1中的文件,而不会建立配置文件,即:只安装MBR中446字节的内容。当然对于stage2的内容,可以通过复制/usr/share/grub/目录中的文件得到,即:将/usr/share/grub/目录中的文件复制到/boot/grub/下即可。具体安装步骤如下:
2. grub-install
拷贝grub镜象文件到DIR/boot目录中(可以通过参数--root-directory指定目录),并用grub shell安装grub到MBR中
拷贝grub镜象文件到DIR/boot目录中(可以通过参数--root-directory指定目录),并用grub shell安装grub到MBR中
# grub-install [--root-directory=DIR] install_DEVICE
--root-directory=DIR :那个 DIR 为实际的目录,使用 grub-install 默认会将grub 所有的文件都复制到 /boot/grub/* 下,如果想 要复制到其他目录与装置去,就得要用这个参数。
install_DEVICE :安装的设备代号
--root-directory=DIR :那个 DIR 为实际的目录,使用 grub-install 默认会将grub 所有的文件都复制到 /boot/grub/* 下,如果想 要复制到其他目录与装置去,就得要用这个参数。
install_DEVICE :安装的设备代号
# grub-install --root-directory=/ /dev/sda
为另一块硬盘(/dev/sdb)安装grub:
1.将硬盘分区、格式化
2.将内核所在的分区挂载到某目录下: /mnt/boot
3.grub-install --root-directory=/mnt /dev/sdb
1.将硬盘分区、格式化
2.将内核所在的分区挂载到某目录下: /mnt/boot
3.grub-install --root-directory=/mnt /dev/sdb
转载于:https://blog.51cto.com/xyuex/905960