Linux之grub引导详情与故障排除
2016-03-26 21:57
381 查看
GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
基本功能GNU GRUB 和GRUB是GRand UnifiedBootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。在PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBMPowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统。因为X86架构的机器仍是主流,所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表,然后显示引导菜单接口。如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。
配置项: default=#:设定默认启动的菜单项:菜单项(title)编号从0开始 timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddemenu:隐藏菜单 password[--md5] STRING:菜单编辑认证; titleTITLE:定义菜单项“标题”,可出现多次; root(hd#,#):grub查找stage2及kernel文件所在设备分区:为grub的“根” kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd/PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件 password[--md5] STRING:启动选定的内核或者操作系统进行认证; 注意:password在不同的位置所起效果不同 功用: (1)提供菜单、并提供交互式接口 e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
(2)加载用户选择的内核或操作系统 允许传递参数给内核;可隐藏此菜单(通过grub.conf中的hiddenmenu) (3)为菜单提供了保护机制 为编辑菜单进行认证(title上定义的password) 为启用内核或者操作系统进行认证(title下的password字段)[root@www root]# grub-md5-crypt
(4)grub-install 使用格式:grub-install --root-directory=/PATH/TO/rootDIR DEVICE
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分区
示例:进入单用户模式 (无需输入root密码)
(1)编辑grub菜单(选定要编辑的title,而后使用e命令)
(2)在选定的kernel后附加 1,s,S或single 都可以
(3)ESC退出后在编辑界面,选中kernel所在行,键入"b"命令,启动系统;
示例:当grub出现故障,无法进入系统时,如图所示:
如果你不知道你的引导分区所在的位置,那么咱们只能输入root (hd0,然后按tab键,会有如下显示,那么咱们需要把type 0x83的分区位置都得试一下,因为0x83的分区都有可能是/root分区,他们都是主分区,我这只有即0分区.
那么我就从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 如图:
接着输入initrd /ini 按tab键补全, [b]然后 输入boot命令,启动系统[/b]
大功告成!
基本功能GNU GRUB 和GRUB是GRand UnifiedBootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。在PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBMPowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统。因为X86架构的机器仍是主流,所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
引导过程
由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。装载GRUB和操作系统的过程,包括以下几个操作步骤:装载记录
基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。装载Grub
这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。装载系统
如linux内核。GRUB把机器的控制权移交给操作系统。设备名称
IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。(hd0,0)。表示C盘。(hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从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指向配置文件来保证用户使用配置文件一致性;配置项: default=#:设定默认启动的菜单项:菜单项(title)编号从0开始 timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddemenu:隐藏菜单 password[--md5] STRING:菜单编辑认证; titleTITLE:定义菜单项“标题”,可出现多次; root(hd#,#):grub查找stage2及kernel文件所在设备分区:为grub的“根” kernel/PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd/PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件 password[--md5] STRING:启动选定的内核或者操作系统进行认证; 注意:password在不同的位置所起效果不同 功用: (1)提供菜单、并提供交互式接口 e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
(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分区
示例:进入单用户模式 (无需输入root密码)
(1)编辑grub菜单(选定要编辑的title,而后使用e命令)
(2)在选定的kernel后附加 1,s,S或single 都可以
(3)ESC退出后在编辑界面,选中kernel所在行,键入"b"命令,启动系统;
示例:当grub出现故障,无法进入系统时,如图所示:
如果你不知道你的引导分区所在的位置,那么咱们只能输入root (hd0,然后按tab键,会有如下显示,那么咱们需要把type 0x83的分区位置都得试一下,因为0x83的分区都有可能是/root分区,他们都是主分区,我这只有即0分区.
那么我就从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 如图:
接着输入initrd /ini 按tab键补全, [b]然后 输入boot命令,启动系统[/b]
大功告成!
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍