Linux下主流的Boot Loader:grub
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。(百度百科)☺☺☺
Boot Loader:
当BIOS读取玩信息后,就会到第一个启动设备内的 MBR 去读取并执行boot loader了,OS必须有Loader才能加载他自己的内核。但是MBR的大小是不能够存储Loader的数据。所以Linux将Boot Loader的程序代码执行与设置值加载要分开执行。下图给出的是grub作为Boot Loader的开机过程。
GRUB的两种引导方式:
直接引导:直接通过默认的grub2 boot loader来引导写在默认配置文件中的操作系统。
链式引导:使用默认grub2 boot loader链式引导另一个boot loader,该boot loader将引导对应的操作系统。
一般只使用第一种方式,只有想引导grub默认不支持的操作系统时才会使用第二种方式。
GRUB的三大接口:
1.菜单接口
当多系统启动时,会被引导进入菜单接口,每个OS或者内核的菜单将一个按名称排列的列表保存在这个接口中。按下方向键就可以选择想要进去的OS。按下e见可以编辑所选菜单对应的grub菜单配置项,按下c键可以进入grub命令行交互模式。
2.菜单项目编辑器接口
这个接口就是在菜单接口中按e键进入的接口。这个界面中全都是用于项目的GRUB命令,在引导OS前,用户可以更改这些命令。但修改之后,可以用b键来执行这些命令,也可以使用Esc键来放弃之前的更改并回到标准的菜单接口。
3.命令行接口
在传统的grub上,可以直接在bash下敲入grub命令进入命令交互模式,但grub2只能在系统启动前进入grub交互命令行。这个命令行类似于shell,所以也可以通过这个来启动OS。
grub>root (hd0,0)
设置根目录为第一硬盘的第一个分区
grub>kernel /vmlinuz
按下Tab补全后,设定本次启动用到的内核文件
grub>initrd /initrd
按下Tab补全后,指定initrd.img
grub>boot (hd0,0)
按下Enter启动OS
GRUB命令:
系统的第一个硬盘驱动器被GRUB称为(hd0),在它上面的第一个分区被称为(hd0,0)。以此类推,第二个硬盘驱动器上的第2个分区被称为(hd1,1)。GRUB给设备的命名是从0开始的而不是1。
在命令行接口可以使用
grub>help
查看帮助列表。查看/boot分区或其他分区在那个位置,可以查看文件/etc/fstab,则只需要在命令行输入:
grub> cat (hd0,6)/etc/fstab
reboot
重启
halt
关机
find
查找文件,可与–set-root,–ignore-floppies,–ignore-cd等配合使用
clear
清空屏幕
color
设置颜色改变菜单的颜色。Normal 用于指定菜单项的未选中时的颜色,HIGHLIGHT 则用于指定菜单项的被选中时的颜色。如果你未指定 HIGHLIGHT 色,那么我们将使用 NORMAL 的反色值。颜色值的格式是 “FG/BG”。FG 和 BG 是颜色的名称。0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
root
设置根分区
boot
引导先前已经被指定并载入的操作系统或链式装载程序
initrd
使用户能够指定一个在引导时可用的初始RAM盘
kernel
当使用直接载入方式引导操作系统时,kernel命令指定内核从GRUB的根文件系统中载入
install p
安装GRUB到系统的主引导记录
quit
退出其他命令可以输入info grub,得到一个所有命令的列表。
GRUB启动时会在 /boot/grub 中寻找一个名字为grub.conf的设置文件,如果找不到此设置文件则不进入菜单模式而直接进入命令行模式。grub.conf是一个纯文字文件,您可以用任何一个文字编辑器来打开它。
GRUB配置文件
配置文件在目录/boot/grub/grub.conf下,用户可以通过修改配置文件来选择自己喜欢的启动方式。比如可以修改timeout=10,设置菜单接口的等待时间为10s;修改default=0来设置默认启动菜单项;splashimage=(hd0,0)/grub/splash.xpm.gz,指明菜单背景图片路径。使用deepin桌面的用户也可以直接在设置—系统信息—启动菜单,然后直接拖拽图片到指示区域来修改菜单接口的背景图片。
grub与grub2的区别
1.配置文件的名称不同:grup下为grub.conf,grub2下为grub.cfg。
2.grub2增添了许多语法,更接近于脚本语言了,例如支持变量、条件判断、循环。
3.grub2中,设备分区名称从1开始,而在grub中是从0开始的。
4.grub2使用img文件(映像文件),不再使用grub中的stage1、stage1.5和stage2。
5.grub2中无法进入交互式界面,而且不能使用查找命令find。