Linux之grub引导详情与故障排除

 

        GRUBGRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操做系统启动程序。GRUB是多启动规范的实现,它容许用户能够在计算机内同时拥有多个操做系统,并在计算机启动时选择但愿运行的操做系统。GRUB可用于选择操做系统分区上的不一样内核,也可用于向这些内核传递启动参数。linux

 wKioL1aJBUzjl4YSAAAYxQCBQaM711.png

基本功能ubuntu

GNU GRUB GRUBGRand UnifiedBootloader的缩写,它是一个多重操做系统启动管理器。用来引导不一样系统,如windowslinuxwindows

X86架构的机器中,LinuxBSD 或其它Unix类的操做系统GRUBLILO 是你们最为经常使用,应该说是主流。bash

Windows也有相似的工具NTLOADER;好比咱们在机器中安装了Windows 98后,咱们再安装一个Windows XP ,在机器启动的会有一个菜单让咱们选择进入是进入Windows 98 仍是进入Windows XPNTLOADER就是一个多系统启动引导管理器,NTLOADER 一样也能引导Linux,只是极为麻烦罢了。架构

PowerPC 架构的机器中,若是安装了LinuxPowerpc 版本,大可能是用yaboot 多重引导管理器,好比Apple机用的是IBMPowerPC处理器,因此在若是想在Apple机上,安装Macos Linux Powerpc 版本,大可能是用yaboot来引导多个操做系统app

由于X86架构的机器还是主流,因此目前GRUBLILO 仍然是咱们最经常使用的多重操做系统引导管理器。ide

引导过程

由硬盘启动时,BIOS一般是转向第一块硬盘的第一个扇区,即主引导记录(MBR)工具

装载GRUB操做系统的过程,包括如下几个操做步骤:this

装载记录

基本引导装载程序所作的惟一的事情就是装载第二引导装载程序。加密

装载Grub

这第二引导装载程序其实是引出更高级的功能,以容许用户装载一个特定的操做系统

装载系统

linux内核GRUB把机器的控制权移交给操做系统

设备名称

IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘fd开头。命名和linux不大同样。是从0算起。

(hd0,0)。表示C盘。

(hd0,4)。表示D盘。固然这里指的是(第一个逻辑分区,若是D盘也是主分区,应该写成hd0,1)

系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,xy都是从0开始计数的,x表示硬盘号,y表示分区号。

Linux系统中,如ubuntu(hdx,y)中的y是从1开始计数的。第一逻辑分区用(hd0,5),第二逻辑分区用(hd0,6)来表示

 

GRUB环境开始载入第二步引导装载程序时,它寻找本身的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件创建一个要载入的操做系统的菜单列表,而后显示引导菜单接口。若是配置文件没有被找到,或者若是配置文件不能读取,那么GRUB将载入命令行接口。


 Grub的配置文件和功用   

   配置文件/boot/grub/grub.conf,保证grub和内核等在一个目录;此外它建立了一个连接文件/etc/grub.conf指向配置文件来保证用户使用配置文件一致性;

wKiom1b2hoLjFecEAAGnb-53uAg620.jpg

      配置项:

       default=#:设定默认启动的菜单项:菜单项(title)编号从0开始

 timeout=#:指定菜单项等待选项选择的时长;

        splashp_w_picpath=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

        hiddemenu:隐藏菜单

        password[--md5] STRING:菜单编辑认证;

       titleTITLE:定义菜单项“标题”,可出现屡次;

       roothd##):grub查找stage2kernel文件所在设备分区:为grub的“根”

        kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

        initrd/PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件

        password[--md5] STRING:启动选定的内核或者操做系统进行认证;

    注意:password在不一样的位置所起效果不一样

 功用:

    (1)提供菜单、并提供交互式接口

      e:编辑模式,用于编辑菜单

wKiom1aJBsiQS19hAAAjA8JGxGw365.png

      c:命令模式,交互式接口

wKiom1aJBbSwbUkfAAAVdqPJqnM806.png

    2)加载用户选择的内核或操做系统

        容许传递参数给内核;可隐藏此菜单(经过grub.conf中的hiddenmenu)

    3)为菜单提供了保护机制

        为编辑菜单进行认证(title上定义的password)

        为启用内核或者操做系统进行认证(title下的password字段)

[root@www root]# grub-md5-crypt 

 Password:    Retype password:    $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0   # 上面是生成的加密字符串   # 而后将信息加入到 grub.conf 文件中,格式以下:   password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 固然加入 grub.conf 文件的位置不一样,加密效果也不同。   # 加入到 title 以前的话,会加密整个菜单。   # 加入到 title 指内的话,会加密对应的操做系统的入口。


(4)grub-install 

使用格式:

grub-install --root-directory=/PATH/TO/rootDIR DEVICE


~]# grub-install --root-directory=/ /dev/sda3
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.

# this device map was generated by anaconda
(hd0)     /dev/sda


 grub的命令行命令:

 help:获取帮助信息

    help KEYWORD:获取某一具体命令的帮助信息

    find (hd#,#)/PATH/TO/SOMEFFILE:查找文件(内核文件等)

    root (hd#,#):设定那个磁盘是根,执行后,fnd不需指磁盘了;

    kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;

    initrd /PATH/TO/OMOTRAMFS_FILE:设定为选定的initrd文件

    boot:引导启动选定的内核;

示例:手动启动系统 

    按c:命令模式,依次输入如下命令,注意要写上你的 内核版本_架构 And root分区

wKioL1aJCBXRA54bAAAeldU5Cec659.png

 

示例:进入单用户模式 (无需输入root密码)

(1)编辑grub菜单(选定要编辑的title,然后使用e命令)

 wKiom1aJBsiQS19hAAAjA8JGxGw365.png

(2)在选定的kernel后附加 1sSsingle 均可以

wKiom1aJCtSgrnETAAASTXgGu08504.png

(3)ESC退出后在编辑界面,选中kernel所在行,键入"b"命令,启动系统;

示例:当grub出现故障,没法进入系统时,如图所示:

wKiom1b2kL7gZ4ykAABWDbM6V2k845.jpg

若是你不知道你的引导分区所在的位置,那么我们只能输入root (hd0,而后按tab键,会有以下显示,那么我们须要把type 0x83的分区位置都得试一下,由于0x83的分区都有多是/root分区,他们都是主分区,我这只有即0分区.

wKioL1b2kWDQGCNAAABLs4Ms-mc223.jpg

那么我就从root (hd0,0)开始了,而后输入kernel /vm 按tab键补全则说明是正确的,个人系统是 逻辑卷 的 因此我 接着输入 ro root=/dev/mapper/vg0-root,你们的若是是/dev/sda1,可输入 ro root=/dev/sda1 ,注意(hd0,0)=/dev/sda1 (hd0,1)=/dev/sda2 如图:

wKioL1b2kVXS-OPsAAAlxWGSENE024.jpg

接着输入initrd /ini 按tab键补全, 而后 输入boot命令,启动系统

wKiom1b2kNGS2-pxAAAyvoGKk1E254.jpg

大功告成!

wKioL1b2kxuyoH7PAADrpJUKMnA840.jpg

wKiom1b2koSiV_E8AAEqaowBgl8821.jpg

wKioL1b2lZPhsuycAABbaWDBhs8392.jpg

相关文章
相关标签/搜索