GRUB(GRandUnified Bootloader):是非常好用的Bootloader,
目前主流的grub为grub2
grub的引导过程主要分为
stage1
stage1.5
stage2
下面来具体说一下这三个阶段:
stage1:它是直接被写入到MBR中的,这样机器启动检查完硬件后,就将控制权交给了GRUB代码。主要作用就是把0柱面0磁头2扇区的内容(也就是stage2)载入内存。但是stage1是没有识别文件系统的能力的。
stage1.5:它是stage1和stage2的中间桥梁。因为stage1.5具有识别文件系统的能力,此后grub才有能力去方为/boot/grub目录下的stage2文件并将其载入到内存中去。
stage2:当stage2被载入内存执行时,它首先会去解析grub的配置文件/boot/grub/grub.conf,然后加载内核镜像到内存中,并将控制权转交给内核。而内核会立即初始化系统中各设备并做相关的配置工作,其中包括CPU、I/O、存储设备等。
现在来说一下grub的作用:
1、提供菜单、并提供交互式接口
e: 编辑模式,用于编辑菜单;
c: 命令模式,交互式接口;
2、加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
3、为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
grub的配置文件为/boot/grub/grub.conf
我们来看一下grub.conf中各字段的意义:
default=0: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=5:指定菜单项等待选项选择的时长为5秒;
splashimage=(hd0,0)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password [--md5] STRING: 菜单编辑认证;
title TITLE:定义菜单项“标题”, 可出现多次;
root(hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd/PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;
password[--md5] STRING: 启动选定的内核或操作系统时进行认证;
除了让系统自动启动外,我们还可以手动在grub命令行中启动系统:
在菜单下按c键进入命令行模式;
在命令行模式键入以上信息:
grub>root:设置GRUB的根设备
grub>kernel:设定本次启动时用到的内核文件路径;额外还可以添加许多内核支持使用的cmdline参数;例如 init=/sbin/bash 即系统启动的第一个程序为bash;
initrd:设定为选定的内核提供额外文件的 ramdisk;
boot:引导启动选定的内核;
作为一个系统管理员可能会把root用户的密码给忘记了,这可是很悲催的事。现在来介绍一下在GRUB引导下进入Linux单用户模式来修改root密码的具体操作:
1、 编辑grub菜单(选定要编辑的内核,而后按e键)
2、 在选定的kernel后附加 1、s、S、single中任意一个都可以:
3、在kernel所在行使用b命令即可进入系统,然后直接可修改root密码;
在使用系统过程中通常会有一次让你铭记于心的误操作,比如把grub的配置文件grub.conf误删了;或者grub程序损坏,这对系统启动来说是非常头疼的事情:
1、 grub.conf文件丢失:
如果没有重启的话可直接通过命令#grub-install--root-directory=ROOT /dev/DISK 将grub重装一次即可;
如果已经重启那只能进入关盘的紧急救援模式进入根目录,如果有grub.conf文件备份则恢复备份即可修复;
如果没有备份文件也可以自己用vim 写一个和grub.conf文件内容一样的文件。
2、 如果是MBR扇区中的grub程序损坏:
重启进入光盘的紧急救援模式,或启动后按ESC键 键入 linux rescue;
这一步如果需要网络的话可以选yes
这一步会把根目录挂载到/mnt/sysimage/目录下,选Continue ;
到此如图所示会出现一个shell选项,选择并确定则可进入bash;
进入bash后我们可以直接切换到系统根目录所在的位置
在根目录下可以直接重装grub;安装完成后记得退回到紧急救援模式的bash下执行重启。
这样就可以完全修复。