GRUB的介绍(二)

本文是gnu grub 手册的翻译,原文请参考:GNU GRUB Manual 2.06

翻译这个文章纯粹是个人兴趣,翻译的的进度按照个人的学习需求进行,因此不会全部翻译完,目前翻译到第六章,会作为连载放出。因个人水平有限,翻译可能不是很准确,如果有误,欢迎拍砖指正~

1.3 跟以前版本不一样的地方

尽管GRUB 2 有着 GRUB 的许多特点,但GRUB 2 是 GRUB 的重写。因此GRUB的用户要有一些指引,才能使用新版。

新版的配置文件命名为grub.cfg,而不是原来的menu.lst 或者 grub.confg,并且还有新的语法和新的命令。在语法上,GRUB用户应该能够很快适应,不过,配置文件就不能直接拷贝了。

grub.cfg是有grub-mkconfig自动生成的,这样会更好的处理内核的升级。

分区的序号是从1开始,而不是从0开始(以前是从0开始的,什么hd0 xxx)

配置文件用的是一个脚本语言,包含了变量、条件判断、循环,更加接近一个完整的脚本语言。

通过save_env、load_env和grub-editenv工具,可以获得一定的存储空间。但在任何的配置中,是无法做到的。(不太明白这里的意思)

GRUB 2有更可靠的办法去找到它自己的文件和目标内核文件,并且可以使用命令,通过文件系统的标识符、UUID来找到设备。

GRUB 2 能够在许多系统中使用,比如 PC EFI, PC coreboot, PowerPC, SPARC, and MIPS Lemote Yeeloong ,当然也包含老版本GRUB所支持的PC BIOS系统。

许多文件系统都可以支持,包含但不局限于ext4、HFS+、NTFS。

GRUB 2能够直接从LVM、RAID设备中读取文件。

能够使用图形化终端和图形化的菜单系统。

GRUB 2 的接口、菜单名称是可以修改的(translated)

组成GRUB的映像文件被重新组了,即stage1 stage1.5和stage2,没有然后了。

GRUB2 把许多工具都是放到动态加载的模块里,从而保证核心文件更小,适应性更好。

1.4 GRUB的特点

GRUB 最核心的需求就是可以跟 MULTIboot 架构兼容。

至于其他要求,则按照重要性列了出来:

  1. 基础的功能,对于终端用户必须是简单明了的。

  1. 对于专家、设计者,能够提供丰富的功能。

  1. 能够向后兼容FreeBSD、NetBSD、OpenBDS和linux。专有系统可以通过chain-loading的功能来支持。

  1. 除了特殊的兼容模式,所有的内核启动阶段都必须是按照Multiboot架构来的。

此外,GRUB还有以下的特点(GRUB实现了Multiboot的架构中没有的功能)。

  1. 可以识别多种不同的可执行文件。

支持许多a.out的变种、ELF和符号表。

  1. 支持非Multiboot的内核。

支持许多不同的免费的缺少Multiboot兼容性的32位的内核:比如FreeBSD、NetBSD2、OpenBSD、Linux以及其他不同的chain-loading的loader。

  1. 可以加载多个模块。

完全支持multiboot加载多模块的特点。

  1. 可以加载配置文件。

配置文件有良好的可读性。你可以动态的加载配置文件和把一个现成的配置文件插入到GRUB映像文件中。这个些命令是命令行命令的超级。在配置中就提供了一个配置文件的样例。

  1. 提供了菜单接口

菜单接口可以列出当前的启动命令、可编辑的过期时间。启动条目没有固定的限制,当前实现的版本所预留的空间足够几百条。

  1. 有一个灵活的命令行接口

命令行接口非常灵活,可以从目录进入,可以编辑任何当前的命令,可以从头写一组启动命令。如果没有配置文件,那么GRUB就会进入命令行模式。

命令列表是配置文件中所支持的命令的子集。写这些命令的时候跟bash很像,支持TAB自动不全,设备,分区以及上下文相关的目录的文件。

  1. 支持多种文件格式

支持多种文件格式、显式的有用快列表符号。当前支持的文件系统有: Amiga Fast FileSystem (AFFS), AtheOS fs, BeFS, BtrFS (including raid0, raid1, raid10, gzip and lzo), cpio (little- and big-endian bin, odc and newc variants), Linux ext2/ext3/ext4, DOS FAT12/FAT16/FAT32, exFAT, F2FS, HFS, HFS+, ISO9660 (including Joliet, Rock-ridge and multi-chunk files), JFS, Minix fs (versions 1, 2 and 3), nilfs2, NTFS (including compression), ReiserFS, ROMFS, Amiga Smart FileSystem (SFS), Squash4, tar, UDF, BSD UFS/UFS2, XFS, and ZFS (including lzjb, gzip, zle, mirror, stripe, raidz1/2/3 and encryption in AES-CCM and AES-GCM).

  1. 支持自动解压

支持有gzip、xz3压缩的文件。这些功能对于用户来说是自动且透明的。这个大大的压缩了文件大小和加载时间,对于floppies.4来说是非常有好处的。

对于一些内核模块来说,在加载时处于压缩的状态时比较好的,因此,可以指定不同的模块加载命令来避免解压这些模块。

  1. 可以访问任何已经安装了的设备的数据

不依赖于根设备的配置,可以从所有被BIOS识别的软盘、硬盘读取数据。

  1. 不依赖于驱动器的几何翻译(应该是只驱动器的物理位置吧?)

和其他的boot loader不一样,GRUB对不同磁盘的翻译是相互独立的。一个已经安装和使用着的驱动器,grub可以会把一个正在使用的翻译转换成另一个,但这种转换在GRUB配置表中不会有任何影响。

  1. 检测所有已安装的RAM

GRUB可以发现所有安装在PC兼容设备上的RAM。它使用了更加先进的BIOS查询技术来寻找所有的内存区域。正如Multiboot架构中所描述的那样,不是所有的内核都会利用这些信息,但GRUB就会提供这些信息给那些能够利用这些的内容。

  1. 支持逻辑块地址的模式

在传统的磁盘调用中,有一个几何翻译的问题,BIOS不能访问超过1024个柱面,所有它能够访问的空间现在到了508MB-8GB之间。GRUB不能解决所有问题,因为没有一个统一的接口。但是,一些新的机器有新的接口,即逻辑块地址(LBA)。GRUB会自动的检测LBA是否可用,如果可用,会自动的使用它。在LBA模式中,GRUB可以访问整个磁盘。

  1. 支持网络启动

GRUB是基于磁盘的boot loader,但也支持网络。你可以通过TFTP协议来加载位于网络的OS映像。

  1. 支持远程终端

为了支持那些没有终端的电脑,GRUB提供了远程终端的支持,因此,你可以从远程主机中控制GRUB。目前来说,只实现了串口的模式。

1.5 boot loader的角色

有一些人在说道他们的电脑时,认为操作系统和内核很重要,所以他们会说在使用GNU/Linux或者GNU/Hurd。有一些人认为最重要的时系统,所以他们会说的他们GNU操作系统为linux系统。

我(作者),个人则认为,这是非常不公平的,因为boot loader时最重要的软件。我更愿意把上面的系统叫做LILO或者GRUB系统。

不过不幸的时,没有人明白我说所的东西,因此我现在只用GNU来代表GRUB。

所以,如果你听到有人讨论他们的所谓的GNU系统,要记住,他们实际上对最好的boot loader 致敬---即GRUB。

对于我们来说,GRUB的维护着,不鼓励Gordon这么狂热的喜欢,但他的做法帮助了认识到boot loader是值得被记住的。我们也希望你能够享受使用GNU GRUB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值