码迷,mamicode.com
首页 > 其他好文 > 详细

13.2、grub引导程序介绍

时间:2018-01-03 22:35:19      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:字节   wap   流程   切换   kernel   默认   机制   扇区   命令模式   

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,如下:

            [root@localhost ~]# ll /etc/grub.conf 

            lrwxrwxrwx. 1 root root 22 Dec 31 20:14 /etc/grub.conf -> ../boot/grub/grub.conf

            [root@localhost ~]# 

    注意:stage2阶段及内核通常放置于同一个磁盘分区。

grub.conf的配置示例:

[root@localhost 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

[root@localhost 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的配置示例:

[root@localhost 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     //启动选定内核或操作系统是的密码认证

[root@localhost 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.2、grub引导程序介绍

标签:字节   wap   流程   切换   kernel   默认   机制   扇区   命令模式   

原文地址:http://blog.51cto.com/10631377/2057170

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!