`

GRUB2高级教程(转)

阅读更多

GRUB2高级教程

转自http://hi.baidu.com/czvo/blog/item/04e94efb28982e61024f5605.html

这个教程介绍GRUB2中的一些高级功能。

1、编译和安装

首先,使用cvs下载代码:

cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub co grub2

下载完成后进入工作目录grub2。

然后,可以有选择地打上补丁。比如说,要加上ntfs支持的话,可以运行: GRUB2高级教程

by bean 这个教程介绍GRUB2中的一些高级功能。

1、编译和安装

首先,使用cvs下载代码:

cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub co grub2

下载完成后进入工作目录grub2。

然后,可以有选择地打上补丁。比如说,要加上ntfs支持的话,可以运行:

patch -p0 < grub2-ntfs-u2.diff

补丁后运行以下的命令进行编译:

./configurev

make

然后,利用grub-mkimage定制内核,例如:

./grub-mkimage -d . -o core.img pc fat ntfs

如果要转换为grldr.mbr可引导的形式,运行:

cat g2ldr.bin core.img > g2ldr

注意;grub-mkimage有一个参数--prefix,用来指定启动时grub.cfg和模块文件所在的目录,比如:

./grub-mkimage --prefix=/grub2 -d . -o core.img pc fat ntfs

这样在启动时会到/grub2目录里寻找grub.cfg和模块文件。缺省目录是/boot/grub/。

在安装时,把core.img或g2ldr拷贝到某一分区FAT/NTFS的根目录,把moddep.lst, commands.lst, fs.lst和*.mod文件拷贝到分区的/boot/grub/目录里。

g2ldr可以在NT的启动管理器里引导。首先,利用grubinst生成g2ldr.mbr。

grubinst -2 > C:g2ldr.mbr

然后,在boot.ini里增加一项:

C:g2ldr.mbr="Start GRUB2"

也可以安装到MBR里:

grub -2 (hd0)

这样,下次启动时会引导g2ldr而不是grldr.

你也可以在grub4dos里引导grub2,这时使用的是core.img:

kernel (hd0,0)/core.img

boot

2、预编译版本

如果觉得自己编译麻烦,可以使用预编译版本,网址是:

http://grub4dos.sourceforge.net/grub2/

里面的grub2-*.zip文件就是了。

该版本打上了所有的补丁(*.diff文件),并且使用了以下的参数配置内核。

./grub-mkimage -d . -o core.img pc fat ntfs

补丁说明:

grub2-ntfs-u2.diff

NTFS文件系统代码的补丁

grub2-parser-u2.diff

修正了脚本代码的很多bug,建议使用

grub2-parser-u2-1.diff

在grub2-parser-u2.diff基础上的递增补丁,修正了转义字符的一个小bug

3. 配置文件

grub2中的配置文件是grub.cfg,它的语法与GRUB Legacy中不太一样。以下是一个例子:

set timeout=10

set default=0

menuentry "Boot First Partition" {

set root=(hd0,1)

chainloader +1

}

menuentry "Boot Memdisk" {

linux (hd0,1)/memdisk

initrd (hd0,1)/aa.img

}

注意:grub2中的分区是从(hd0,1)开始的。

3. 变量

grub2中引入了变量的概念,使用set可以设置变量的值,例如:

set AA=1

需要调用变量的值时,使用$AA或${AA}。

例如:

set BB=$AA

BB的值被设为1。要注意的是,原来版本的变量赋值有问题,需要使用grub2-parser-u2.diff补丁。

grub2的一些功能是利用变量来实现的,例如:

timeout

缺省的等待时间,相当于grub中的timeout命令。

default

缺省的菜单项,相当于grub中的timeout命令。

pager

pager为1时,输出满一个屏幕时会暂停一下,相当于grub中的pager命令。

root

设置根设备。相当于grub中的root命令。

?

这个变量的值是对上一条命令的执行结果。

prefix

模块文件和grub.cfg所在的目录。

debug

这个变量用于调试。部分grub2的代码使用了调试输出,它们在一般情况下是不会显示的,但如果把debug设置为相应的值后,调试信息就会显示。比如说,脚本部分使用了scripting关键字。当debug中包含scripting时,脚本调试信息就会显现。

set debug=scripting

4. 命令介绍

这里主要介绍一些grub2中高级命令,简单的可以使用help来查看用法。

4.1、ls命令

grub2中的ls命令可以显示设备和文件列表。

ls

列出当前的所有设备。

ls -l

详细列出当前的所有设备。对于分区,会显示其label。

ls (hd0,1)/

列出分区(hd0,1)根目录的文件。

ls -l (hd0,1)/

详细列出分区(hd0,1)根目录的文件,会显示文件的大小和是否为目录。

4.2、search命令

search相当于grub4dos中的find --root,它可以在所有分区里寻找某一文件。

search /grub.exe

列出所有根目录里包含grub.exe文件的分区。

search可以根据分区的label来搜索:

search -l WinXP

搜索label是WinXP的分区。

search可以把搜索的结果保存到某一个变量中。

search --set=AA /grub.exe

另外,不指定变量的名字时,缺省变量是root

search --set /grub.exe

另外要注意一点,在匹配项多于一个时,搜索结果不会保存到变量中。

4.3 loopback命令

loopback命令可用于建立回放设备:例子:

loopback lo0 (hd0,1)/aa.iso

然后可以使用lo0设备来访问aa.iso里的内容,比如说,可以从aa.iso里的软盘映像中启动:

loopback lo0 (hd0,1)/aa.iso

linux (lo0)/memdisk

initrd (lo0)/aa.img

当使用硬盘映像时,要加上-p参数。

loopback -p lo0 (hd0,1)/aa.dsk

这时,映像中的第一个分区就可以使用(lo0,1)来访问。

loopback命令可以嵌套使用。比如说,列表第一个分区里的硬盘映像aa.dsk里的光盘映像aa.iso里的软盘映像aa.img里的根目录的文件:

loopback -p lo0 (hd0,1)/aa.dsk

loopback lo1 (lo0,1)/aa.iso

loopback lo2 (lo1)/aa.img

ls -l (lo2)/

回放设备的名字可以随意设置,比如说,可以使用loop作为名字,访问时使用(loop)就可以了。

要删除某一回放设备,可以使用-d参数:

loopback -d lo0

5. 图形终端和中文显示

可以使用以下的命令启动图形终端:

insmod vbe

font (hd0,1)/unifont.pff

insmod gfxterm

terminal gfxterm

unifont.pff是字体文件,在sf上有一个可以直接使用的版本,它是使用以下的方法制作的。

首先,下载unifont字体文件:

http://czyborra.com/unifont/unifont.hex.gz

解压后得到unifont.hex文件。

grub2的util目录中有一个工具,可以把unifont.hex转换为grub2可以使用的格式:

ruby util/unifont2pff.rb unifont.hex > unifont.pff

另外,在转换时可以选择某一个子区域。

ruby util/unifont2pff.rb 0-127 unifont.hex > unifont.pff

这样,生成的字体文件就只包含ASCII的字符了。sf上的unifont_ascii.pff就是这样生成的。

进入了图形终端后,就可以显示中文了。可以使用ls命令,列表一下分区中的文件,可以看到中文目录和文件的名字了。如果目录是以英文开始,可以输入开始字符,然后按TAB自动完成。利用这个办法,即使没有输入法,也可以进入中文的目录里。

磁盘的label也可以是中文的,使用ls -l就可以显示出来,但是FAT文件系统中有bug,中文label不能正确显示,NTFS则没有问题。

当然,也可以在grub.cfg使用中文,包括菜单的标题和文件名参数。但是,要记得使用UTF-8编码。另外,如果你是使用Windows的写字板来把ANSI转换为UTF-8的话,在文件的一开始会多出三个字符 EF BB BF, 需要使用UltraEdit等二进制编辑工具把它们去掉。

分享到:
评论

相关推荐

    GRUB2的高级教程

    GRUB2(GRand Unified ...通过深入学习GRUB2高级教程,你可以更好地理解和掌握这些特性,解决复杂的引导问题,优化系统启动流程,甚至实现高级的系统部署策略。这个资源将帮助你成为GRUB2的专家,应对各种挑战。

    Grub2基础教程Grub2基础教程

    5. **更强大的命令行**:Grub2的命令行提供了更多的操作选项,便于高级用户进行故障排除和系统恢复。 ### 二、Grub2安装与启动 1. **自动安装**:在安装Linux系统时,通常会自动配置和安装Grub2。 2. **手动安装**...

    最新Grub2全面教程

    以上就是对Grub2全面教程的内容总结,其中包含了Grub2的基础知识、新特性、安装与启动步骤、配置文件详解、命令行工具使用、常见错误修复方法以及脚本的修改等知识点。掌握这些内容对于系统管理员和高级用户来说是...

    grub2基础教程-修订版

    ### GRUB2基础教程知识点详解 #### 一、GRUB2新特性 1. **图形接口**:GRUB2引入了图形化的用户界面,相比于早期版本的文本模式,提供了更直观的操作体验。用户可以在引导菜单中看到清晰的操作系统图标和其他可视...

    grub 2基本教程

    3. **脚本语言支持**:GRUB 2 引入了更高级的脚本语言支持,包括条件判断、循环结构、变量以及函数等,这使得用户能够编写复杂的引导脚本来满足特定需求。 4. **Rescue 模式**:当系统无法正常启动时,GRUB 2 提供了...

    Grub2基础教程(新特性、安装与启动、配置文件详解等)

    ### Grub2基础教程知识点详述 #### 一、Grub2新特性 Grub2作为新一代的引导加载程序,相较于其前身Grub1.x,引入了许多重要的改进和新特性,使得它更加灵活且功能强大。 1. **图形接口**:Grub2支持图形界面,...

    GRUB4DOS教程

    本教程将深入浅出地介绍GRUB4DOS的基本概念、安装与配置,以及如何创建和编辑菜单。 一、GRUB4DOS简介 GRUB4DOS是一个开源的启动加载器,可以引导多种操作系统,包括Windows、Linux、FreeBSD等。它不仅支持传统的...

    grub2基础教程

    ### GRUB2基础教程知识点详述 #### 一、GRUB2的新特性 1. **图形接口**:GRUB2引入了一个更为现代化的图形界面,这使得用户可以在启动时直观地选择操作系统,甚至进行简单的配置调整。 2. **模块化机制**:GRUB2...

    Grub4dos使用教程

    以上内容仅是Grub4dos使用教程的一部分,详细的操作步骤和更多高级特性可以在提供的"Grub4dos使用教程.doc"文档中找到,该文档深入探讨了Grub4dos的各项功能和应用实例,是学习和掌握Grub4dos的宝贵资源。

    grub2基础教程 by smallapple

    ### GRUB2基础教程知识点详述 #### 一、GRUB2的新特性 GRUB2作为GRUB(Grand Unified Bootloader)的继任者,带来了众多显著改进和新功能: 1. **图形接口**:提供了更为直观的图形界面,使用户在启动过程中能够...

    grub4dos初级教程-入门篇

    本教程将引导你入门GRUB4DOS的世界,了解其基本概念、安装方法以及如何使用它来管理多系统启动。 ### 一、GRUB4DOS简介 GRUB4DOS是一个非常灵活的启动加载器,可以在不修改MBR(主引导记录)的情况下,从软盘、...

    Grub4dos初级教程图文版CHM

    **Grub4dos初级教程图文版** Grub4dos是一款强大的引导加载器,它扩展了GRUB的功能,专为在Windows环境下安装和管理多操作系统提供便利。本教程针对初学者,旨在帮助那些想要安装Linux系统或者对多系统引导感兴趣的...

    grub2全程讲解

    3. **脚本语言支持**:GRUB2支持条件判断、循环、变量和函数等高级编程概念,使得编写复杂的启动脚本变得更加容易。 4. **救援模式**:在系统无法正常引导的情况下,GRUB2提供了一种救援模式,帮助用户进行故障排除...

    Grub for dos 入门教程

    **Grub for DOS 入门教程** Grub for DOS 是一个经典的引导加载程序,它允许用户在多操作系统环境中选择启动哪一个系统。这个教程将帮助初学者理解Grub for DOS的基本概念、安装方法以及如何配置它来管理不同操作...

    Grub4dos教程

    《Grub4dos教程》是针对计算机用户,尤其是系统管理员和高级用户的一份详细指南,旨在教授如何使用Grub4dos这一强大的启动加载器。Grub4dos是GRUB(Grand Unified Bootloader)的一个增强版本,它允许用户在没有操作...

    GRUB2 Windows 启动项修改

    本教程将深入探讨如何使用GRUB2来修改Windows和Linux的启动项,以及如何定制启动界面。 首先,了解GRUB2的基本结构。GRUB2的配置文件通常位于`/boot/grub2/grub.cfg`,但具体位置可能因不同的Linux发行版而异。这个...

    grub4dos初级教程_CHM图文版_090411

    7. **高级应用**:探索grub4dos的进阶功能,如内存测试、挂载设备、运行DOS命令等,以及如何利用grub4dos进行系统备份和恢复。 通过这个CHM图文版教程,你可以逐步学习并实践grub4dos的各项功能,从而提升你的系统...

    grub4dos初级教程_CHM图文版

    1.1 GRUB基础:GRUB是多操作系统启动的首选工具,支持多种文件系统,如ext2、vfat等。 1.2 grub4dos优势:grub4dos不仅继承了GRUB的优点,还增加了对DOS、Windows PE的支持,以及更灵活的命令行操作。 二、安装与...

    grub4dos初级教程_(免费版).

    **GRUB4DOS初级教程** GRUB4DOS是一款基于GRUB(Grand Unified Bootloader)的引导加载器,主要用于在多系统环境下管理启动过程。它具有强大的功能,包括加载不同的操作系统、支持从多种存储设备启动,以及进行系统...

Global site tag (gtag.js) - Google Analytics