IBM的LPI复习资料之LPI101-Topic102:Linux安装和包管理(2)启动管理器GRUB,GRUB2,LILO

文章并没有完全一对一翻译,主要是意译,有时会省略原文内容,有时会增加自己理解。

摘要

学习如何为你的Linux系统选择和配置一个种启动管理器。(Lilo不再是LPI的要求,但是本文还是包含了LILO)。

概述

在本文,你将学会如何为Linux系统选择和配置启动管理器,具体是:
  • 配置多位置启动和备份启动选项
  • 安装和配置一种启动管理器,如GRUB,GRUB2,或者是LILO
  • 在启动时增加内核启动参数或者运行加载器命令
  • 从常见的启动问题中恢复
  • 使用GRUB启动GRUB2

本文讨论了PC的启动流程和用于Linux系统的三种主要的启动加载器(GRUB,GRUB2,LILO),以此来帮助读者为LPI101的目标102.2做准备。这个要求的权重是2。


启动流程概述

在我们详解一个具体的启动加载器之前,先来看看PC是怎样开始启动的。一种被称为BIOS的代码存储在向ROM,EEPROM,或者flash这样的非易失内存中。当PC开机或者重启时,这段代码被执行。通常他执行加电自检。最后,它加载启动硬盘的MBR中的可执行代码。

关于MBR的知识,文章IBM的LPI复习资料之LPI101-Topic102:Linux安装和包管理(1)硬盘分区已经进行详细说明,MBR不仅有可执行代码还有分区表。不仅仅是硬盘,就算是软盘的MBR里也都存放着一段可执行代码,即使这段代码的功能仅仅是打印像“Non-bootable disk in drive A"这样的消息。这段代码通常被叫做"first stage boot loader"或者"stage 1 boot loader"。


MS DOS,PC DOS,以及Windows系统使用的MBR的功能是:检查MBR中的分区表,找到带有启动标志的分区,然后加载这个分区的第一个扇区(称为分区启动记录),并把控制权交给这个扇区的代码。由于空间还是局限于一个扇区(512字节),所以这段代码的功能还是很有限,但是能加载本分区里的更多内容(这些内容就是stage 2 boot loader)。对于MS-DOS,PC-DOS来说,这个stage 2 boot loader的作用就是直接加载操作系统内核。就这样,操作系统就启动了。

这对于只有一个系统的机器来说没有什么问题。但是如果需要同时安装多个操作系统,比如既有OS/2,WindowsXP,又有多个Linux发行版,该怎么办?你可以使用一些像fdisk之类的工具修改MBR分区表中的活动分区标记,把要启动的OS所在的分区设置为可启动。但这并不能完全解决问题。比如标准的MBR最多只能由4个主分区,并且只能有一个活动分区,并且不能从逻辑分区启动。而我们一共有5个操作系统需要共存,这就不能通过修改MBR中的分区表来解决了。

解决上述问题的办法是使用一段特殊的代码,这段代码的功能是可以让用户选择启动哪个分区。这样的程序已经存在,如:

Loadin--这个程序运行在DOS中,所以必须先进入DOS才能运行

OS/2 Boot Loader--这个程序需要安装到一个单独的分区中,这个分区设置为活动分区,这样MBR就会加载这个程序。

更聪明的启动加载器--这个程序不需要单独占用一个分区,可以和操作系统共存同一个分区中,并且既可以通过MBR直接加载,也可以被分区引导记录加载。这样的程序有:

BootMagic, LILO, GRUB, GRUB2。

显然,只要你能够把系统的控制权交给一个体积大于512字节的程序,这个程序就不难去完成像启动逻辑分区,或者启动其他硬盘上的分区的任务。上面提到的程序都有这些功能。

链式加载

当一个启动加载器取得控制权后,它能做很多事,其中一件事就是加载其他的启动加载器。一个启动加载器加载另一个启动加载器的过程就叫做链式加载。最常见的就是MBR里的加载器加载分区启动记录里的加载器,另外Linux的启动加载器也常用来加载Windows所在分区的Windows启动加载器来启动Windows。当然,不同分区的GRUB也可以相互加载,只是这并不怎么有必要。

Linux的启动加载器

三种Linux启动加载器将在本文讨论,他们是GRUB,GRUB2,LILO。
译注:原文介绍了三种,考虑到LILO不是LPI的内容,没有对LILO进行翻译。

GRUB

关于GRUB的配置文件,命令,之前的文章 http://blog.csdn.net/smstong/article/details/8574719有说明,不再累述。这里说一下如何制作GRUB启动盘。

grub的安装位置

(1)安装在硬盘MBR
此时stage1文件安装到MBR,stage2文件安装到某个分区的文件系统中,由于stage1不认识文件系统,所以需要把stage1.5安装到MBR后面的某些特定扇区内。
(2)安装在硬盘分区
此时stage1文件安装到该分区的第一个扇区,也就是分区启动记录。stage2还是安装到分区的文件系统,stage1.5则安装到分区启动记录后面的某些特定的扇区内。
(3)安装在光盘
此时不再有stage1,stage1.5,stage2之分,GRUB提供了一个专门供CD/DVD启动的镜像,文件名为: stage2_eltorito,使用IOS制作工具写入光盘既可。

注意:stage1.5需要识别文件系统,所以针对不同的文件系统类型,提供了不同的stage1.5。而stage1和stage2则是与文件系统无关的。

GURB启动盘的制作

(0)新建一个目录grubcd
(1)拷贝/usr/share/grub/stage/stage2_eltorito文件到grubcd。(按照个人需要可以把其他任意数据文件拷贝到目录下)
(2)genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grubcd.iso grubcd
(3)把生成的grubcd.iso镜像文件刻录成光盘既可。

GRUB2

GRUB目前已经不再继续开发,只是修正存在的错误。官方的说法是GRUB的编码实在太烂,以至于没法进行维护升级了,所以重新从零开发了新的GRUB2,从此以后原来的GRUB就叫做GRUB legacy了。GRUB2采用了清晰的架构和模块化的布局,与GRUB legacy相比有很大不同:
  1. 配置文件改名为grub.cfg,而且配置文件不能手动修改了,只能通过grub-mkconfig命令生成。
  2. 分区编号不再从0开始,而是从1开始,硬盘编号还是从0开始。
  3. Grub2除了支持传统的PC BIOS启动方式,还支持PC EFI,PC corboot, PowerPC, SPARC,MIPS lemote Yeeloogn。
  4. GRUB2能直接从LVM和RAID中读取文件。
  5. 镜像文件改变了,GRUB中的stage1,stage1.5,stage2不再存在。
Grub和GRUB2的对应:
  1. 'stage1', 对应GRUB2中的boot.img,作用完全相同
  2. _stage_1_5',Grub中的stage1.5的功能是识别文件系统,以加载存储在文件系统中的stage2。某种意义上,这与GRUB2中的core.img类似,但是core.img得功能更多更强大。
  3. 'stage2',GRUB2没有单独的stage2镜像文件,对应的是core.img会动态加载/boot/grub里的模块文件。
  4. ‘stage2_eltorito',在GRUB2中,为了能从CD启动,会把cdboot.img和core.img两个文件合并成一个。最好是使用grub-mkrescue命令来合并这两个文件。
  5. 'nbgrub',没有对应的。
  6. 'pxegrub',在GRUB2中,从PXE网络启动的镜像是通过合并pxeboot.img和core.img完成的。
GRUB2在MBR格式硬盘中安装:
也就是两个镜像文件的位置,一个是boot.img,一个是组合的core.img。
  1. 对于boot.img,只能安装到MBR上,这与GRUB legacy不同。
  2. core.img有两个安装位置:
  • 一个是MBR和第一个分区之间的空闲部分,这部分通常叫做boot track,MBR gap,或者embedding area。这部分通常至少会有31KB大小。这种方式的问题是,把代码存放到这里不安全,一些软件可能会修改这里的信息,另外也不能保证MBR和第一扇区之间一定有足够的空间。
  • 一个是安装到一个分区的文件系统里,然后把它所占用的块表编号存储在这个分区的第一个扇区内。这种方式的问题是,core.img所占用的块可能会被文件系统移动(系统优化时这种情况经常发生)
GRUB开发小组通常建议把core.img安装到MBR和第一扇区之间的空闲区域,在现代硬盘上,这块区域通常会大于1M,空间一般不是问题。


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值