#GRUB详解
grub基础概念
前面的开机过程我们知道:按照BIOS定义的硬件设备启动顺序,第一启动设备中的MBR去读取boot loader。boot loader功能很强大,要重新自检硬件设备,开始有一个菜单供用户选择系统或者内核版本,还要加载内核将内核解压到RAM中并执行,最后将控制权移交给内核。屈屈446个字节怎么让它完成那么多功能。所以Linux将boot loader的程序代码执行分成两个阶段。
stage1: mbr stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统; stage2:磁盘分区(/boot/grub/)
看看/boot/grub上都有什么
centos7上面的:
centos6上面的:
grub主程序最重要的任务之一是:识别磁盘,加载内核文件。怎么识别:
(hd0,0) ()括起来,硬盘以hd表示,后面接数字,后面的表示硬盘分区。 第一块磁盘的第一个分区的boot sector代号就是(hd0,0) 第一块磁盘的第一个逻辑分区的boot sector代号就是(hd0,4)
grub的配置文件
vim /boot/grub/menu.lst
这里面的root代表的是内核文件放置哪一个分区,而不是根目录。
kernel后面接的是内核的文件名,文件名后面接的是文件名的参数
启动时要挂载根目录,所以root=/dev后面指的是Linux根目录挂载到哪个分区
配置项: default=#: 设定默认启动的菜单项;落单项(title)编号从0开始; timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/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
如果你的Linux主机原来使用的并非grub,那么就需要来安装。
grub-install --root-directory=ROOT /dev/DISK 将grub安装至当前系统的MBR下面 grub-install /dev/sda 我的/home为独立的/dev/sda3,如何安装grub到/dev/sda3 grub-install --root-directory=/home /dev/sda3 ll /home/boot/grub/
实例:预计启动时要直接显示菜单,且菜单倒数位30秒。另外,在原本的menu。lst当中新增三个启动菜单,分别说明如下:
1、假设/dev/sda1内含有boot loader,此loader如何取得控制权? 2、如何重新读取MBR内的loader? 3、利用你原本的系统内核文件,新建一个可强制进入单用户维护模式的菜单。
配置完成后,我们并不知道/dev/hda1到底有没有包含grub的主程序,因此我们想要将grub主程序再次安装到/dev/hda1的boot sector,重新将grub安装到MBR上面去。
#grub #root (hd0,0) #find /grub/stage1 #find /vmlinuz-2.6.28-92.e15 #setup (hd0,0) (覆盖原来的boot sector)
这要重启后就是这样
原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/60767
评论列表(1条)
可以写写grub的修复的过程