GRUB介绍 及 自建简单Linux
grub 介绍
grub 含义
GRUB(GRand Unified Bootloader,简称“GRUB”)是一个多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
在 x86 架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。
grub 版本
grub 现有两个版本,如下:
- grub 0.x: grub legacy
- grub 1.x: grub2
grub legacy 介绍
grub legacy 在引导安装系统的时候,一共分为如下阶段,如下:
- stage 1:自检硬件没有问题后,BIOS将会直接去找硬盘的第一个扇区,找到前446字节,将mbr加载到内存中。
- stage 1.5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统。
- stage 2:读入/boot/grub/目录下相关的配置文件,开机启动的Grub选项、信息,还有修改GRUB背景等功能都是在相关的配置文件中进行体现的。配置文件路径:/boot/grub/grub.conf ← /etc/grub.conf,注意箭头,前面是真实的路径,后面是链接文件。
stage 2 阶段的功能
stage 2 及内核等通常放置于一个基本磁盘分区(注意是基本磁盘分区,mbr 无法驱动高级软设备LVM或软raid)。
- 提供菜单、并提供交互式接口(即系统启动时的界面及交互接口)
选择相应编辑键,进入相应的配置模式:
e: 编辑模式,用于编辑菜单
c: 命令模式,交互式接口
- 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
- 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
识别硬件设备
在 stage 2 阶段读取相关配置文件的时候,需要指定相应的硬盘和分区去加载内核和ramdisk 文件,格式如下:
格式:(hd#,#)
字段含义:
hd# :磁盘编号,用数字表示,从0开始编号
# :分区编号,用数字表示,从0开始编号
示例:
(hd0,0) 代表 第一块硬盘的第一个分区
grub 命令行接口
以 CentOS 6 为例,在系统启动时,按 c 键进行交互接口,可进行如下命令配置。
help:获取帮助列表
help KEYWORD:带关键字,可以获取详细帮助信息
find (hd#,#) /PATH/TO/SOMEFILE:进行查找文件时,要指定硬盘才能生效
root (hd#,#):配置根文件所在位置
kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件
# 额外还可以添加许多内核支持使用的cmdline参数,例如:
# init=/path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk
# ramdisk版本必须要与内核版本完全一致
boot:引导启动选定的内核
也