从《计算机是如何启动的?》一文知道,按下开机键后,程序员能控制的第一个程序并不是内核,而是引导器程序。 GNU GRUB是的最灵活的、功能最强大的、加载速度最快的、最精炼的引导器。除了GRUB,还有NT loader, OS/2 loader, DOS MBR loader, PQ BOOT, System Commander, Lilo等引导器
当BIOS设置完成,硬件驱动成功及硬件检测都没问题之后,其将加载操作系统的主控权转交给硬盘的主引导扇区(Master Boot Record,MBR),也就是硬盘第零轨.让MBR中的开机管理程序可以将指针带到系统核心的地方。
但请注意,可存在Bootloader中的管理程序可以是任意程序,甚至可以是“简单的跳转到其他程序”的程序。但在Linux中,一般是Grub套件。
Bootloader开机时的功能主要是“加载扇区”和“加载kernel”
MBR将硬盘分为好几个分区,如何分区记录在Partition Table中。分区分由扇区组成,第一个扇区便被称为引导扇区(boot sector).
也可以把Bootloader管理程序放在 boot sector中。
因为因为实际中可能一台计算机装有多个操作系统,引导程序(GRUB)可以直接通config信息,找到某一个分区中指定的kernel文件进行加载。
GRUB是一个强悍的开机管理程序,支持多重开机管理。/boot/gurb目录可看到几个系统文件,主要是stage1,stage1_5,stage2三个文件,这3个文件同时表示GRUB开机时的三个阶段。
stage1就是写入Bootloader中的开机管理程序。可以使用“grub-install”命令安装到MRB中。
如果stage1坏了,使用 rescue Mode 进入grub-shell
root (hd0,0) 指定boot分区在hd(0,0)即在第一个硬盘的第一个分区
setup ( hd0 ) 指定安装地点(hd0),因为MBR不属于任何的分区,所以安装在第一个硬盘上,即(hd0)
stage1.5可以识别不同类型的文件系统。比如加载e2fs_stage1_5以后,就可以识别ext2格式。当stage1.5加载后,就赋予GRUB访问文件系统目录的权力,也就是说在开始找不到stage2,可以从文件系统中找到stage2的位置。stage1.5的程序,会被“grub-install”加载到MRB后的32K(即MBR后的27个扇区中),因此stage1步骤中,可直接加载stage1.5。
如果stage1.5坏了,使用 rescue Mode 进入grub-shell
dd if=/dev/zero of=/dev/sda bs=1 count=13824 skip=512 seek=512 跳过MBR的512个字节破坏grub1.5阶段的13824个字节
后面步骤同stage1一样
stage2是GRUB最核心程序,操作系统的加载,新增参数,修改选项。由于stage1.5被加载,stage1可直接找到并加载stage2,放在各个分区的Boot Sector中。
如果stage2坏了,补全文件
GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时也就不需要像 GRUB那样分为stage1,stage1_5,stage2这样三个阶段了。GRUB2主要镜像文件:
在GRUB2安装时,GRUB2把内核镜像在磁盘中到位置(--boot-directory)写入到 boot.img 中这就使得 boot.img 能够在不能识别文件系统的情况下加载内核镜像。
安装grub2的过程大体分两步:
在/boot/grub2/i386-pc目录下只有: boot.img,core.img, *.mod(被加载) 的文件
grub2的默认配置文件为/boot/grub2/grub.cfg,该配置文件的写法弹性非常大,但绝大多数需要修改该配置文件时,都只需修改其中一小部分内容就可以达成目标。
grub2-mkconfig程序可用来生成符合绝大多数情况的grub.cfg文件,默认它会自动尝试探测有效的操作系统内核,并生成对应的操作系统菜单项。使用方法非常简单,只需一个选项"-o"指定输出文件即可。
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig是根据/etc/default/grub文件来创建配置文件的。该文件中定义的是grub的全局宏,修改内置的宏可以快速生成grub配置文件。
另外附上救援模式:https://www.cnblogs.com/pengdonglin137/articles/16874607.html
《带你到Linux最开始的地方》
《计算机是如何启动的?》
《grub2详解(翻译和整理官方手册)》
《LINUX操作系统之奥秘》