13.2grub引导程序介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.2grub引导程序介绍相关的知识,希望对你有一定的参考价值。
1、linux系统启动流程:post--->根据主板上ROM固件中的系统设置、判断从哪个设备启动--->读取设备的第一扇区的前512字节(MBR),判断用什么bootloader引导系统到内存中--->启动内核程序,有可能会借助于ramdisk--->将内核装载在内存中,建立临时根文件系统(rootfs),完成根系统切换--->启动第一个用户进程init(pid1:/sbin/init、/etc/inittab:设定默认运行级别、etc/init/*.conf:init的配置文件、初始化脚本参数及启动对应级别下的服务)--->启动终端
2、GRUB(bootloader):grand unified bootloader
grub0.x:grub legacy(centos5/6)
grub1.x:grub2
3、grub legacy:此版本的grub分为三个阶段
stage1:引导安装在MBR中的引导程序(bootloader)
stage1_5:MBR之后的扇区,让stage1中的bootloader能识别stage2所在分区上的文件系统
stage2:存放在磁盘上的grub(存放位置:/boot/grub),grub的配置文件:/boot/grub/grub.conf,在etc目录下有此文件的连接文件:/etc/grub.conf,如下:
[[email protected] ~]# ll /etc/grub.conf
lrwxrwxrwx. 1 root root 22 Dec 31 20:14 /etc/grub.conf -> ../boot/grub/grub.conf
[[email protected] ~]#
注意:stage2阶段及内核通常放置于同一个磁盘分区。
grub.conf的配置示例: [[email protected] boot]# cat grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-358.el6.x86_64.img [[email protected] boot]# |
4、stage2 grub的作用:
①、提供菜单,并提供交互命令接口
e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
②、加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
③、为grub菜单提供了保护机制
为编辑菜单进行认证
为启动内核或操作系统进行认证
5、grub根介绍:
grub一般放在的目录下/boot/grub,那么/boot这个目录是否单独分区就直接决定了grub所在根(/)的位置,
如果一块磁盘上分了两个区a和b,分区a单独给boot用(即存在grub、vmlinuz),分区b单独给根(/)用,那么/boot/grub的根就是磁盘分区a,此时grub的根即为分区a;
如果一块磁盘上就分了一块区,并将grub、vmlinuz放置于/boot下,那么此时grub的根为/boot,
boot被做成单独的简单分区,而根(/)被放在逻辑卷中,即boot可以不使用逻辑卷,可以是单独分区,centos5/6默认是将根(/)放在逻辑分区上的。
注意:grub不能访问软raid、逻辑卷等复杂操作。
6、grub识别设备的方法实现:
(hd#,N)
hd:hardware disk,硬盘
#:第#块磁盘,用数字表示,从0开始编号
N:硬盘的第N个分区,用数字表示,从0开始编号
如:(hd0,0):表示第一块磁盘的第一个分区,注意“()”括号必须写,固定格式。
7、grub的命令行接口
help:获取命令列表
help KEYWORD:获取特定命令的使用帮助
find:搜索磁盘上的文件;格式:find(hd#,N)/PATH/TOSOMEFILE
如:find(hd0,0)/vmlinuz-2.6.32-504.el6.x86_64
root (hd#,N):设定(hd#,N)为grub的根,即设置哪块磁盘哪个分区为根,此时可以用find直接去查找文件,如:find /vmlinuz-2.6.32-504.el6.x86_64
kernel /PATH/TO/SOMEFILE:设定本次启动时用到的内核文件在哪里,内核文件通常命名为linuz,z表示压缩;
kernel除了指定内核文件位置之外,还可以添加许多内核支持使用的命令参数,如:init=/bin/init,selinux=0等等
initrd /PATH/TO/SOMEFILE:用来指ramdisk文件在哪里,即设定为选定的内核提供额外文件的ramdisk,需要注意的是:ramdisk的版本号与内核的版本号必须完全匹配
boot:引导启动选定的内核
grub.conf的配置示例: [[email protected] boot]# cat grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 //启动的默认菜单项,即title的编号,默认从0开始编号,0、1、2、3.... timeout=5 //菜单项默认显示时间 splashimage=(hd0,0)/grub/splash.xpm.gz //grub菜单的背景图片,640*480的14位图 hiddenmenu //隐藏菜单 password [--md5] 12345678 //定义编辑菜单的密码认证,--MD5可选 title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64) //定义菜单项,即开机显示的菜单选项 root (hd0,0) //设定grub根所在位置 kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet ///vmlinuz-2.6.32-358.el6.x86_64设定启动的内核文件,root=/dev/mapper/VolGroup-lv_root设定真正的根文件系统位置 initrd /initramfs-2.6.32-358.el6.x86_64.img //设定与内核匹配的ramdisk文件 password [--md5] 12345678 //启动选定内核或操作系统是的密码认证 [[email protected] boot]# 注意:可以用grub-md5-crypt命令生成密码密码 |
8、进入单用户模式:
①、编辑grub菜单(选定要编辑的title,然后使用“e”命令)
②、在选定的kernel后附加:数字1或s或S或single,这几个参数都可以实现进入单用户模式。
③、在kernel所在行键入“b”键,进入单用户
grub配置文件丢了,会显示grub提示符,此时只需要启动系统,然后编辑一个grub
如果grub文件坏了,如grub stage1坏了,只要bootloader坏了,磁盘上所有系统都将无法引导,此时只能修复bootloader(如:重新安装grub)
重新安装grub的命令:grub-install
9、
以上是关于13.2grub引导程序介绍的主要内容,如果未能解决你的问题,请参考以下文章
为 GRUB 引导加载程序的多重引导指定的全局变量的含义是啥