Grub4dos tutorialbrGNU GRUB及GRUB4DOS参考资料汇总(不断完善中...) 整理日期:2009.01.07 这里引用的很多资料都来自于互联网,我只是进行了适当的翻译和整理,版权归原网站或者原作者所有。 基本上,看完这里汇总的资料,你已经对GRUB及GRUB4DOS有了基本的了解(包括使用),至于高级的用法要靠你自己去努力和创造了。 1. GNU GRUB 资源来源于GNU GRUB官方网站:http://www.gnu.org/software/grub 1.1 Introduction(GNU GRUB简介) GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn. GNU GRUB是一个遵从Multiboot(多重启动)规范的启动管理程序。 GRUB是“ GRand Unified Bootloader(强大标准的启动管理程序)”的缩写,最早由Erich Stefan Boleyn设计并实现。 Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU). 一般来说,启动管理程序是计算机启动时第一个运行的软件,它的主要作用是加载操作系统的内核并将控制权交给它,然后操作系统的内核再对操作系统的其它部分进行初始化操作。 1.2 GRUB 2 and GRUB Legacy Currently under development, GRUB 2, has replaced what was formerly known as GRUB (i.e. version 0.9x), which has, in turn, become GRUB Legacy. GRUB 2是GRUB的当前开发版本,它取代了原来的GRUB(例如0.9x版),这样,原来的版本就叫作GRUB Legacy。 GRUB 2 aims at merging sources from PUPA in order to create the next generation of GNU GRUB. GRUB 2的主要目标是融合PUPA(译者注:PUPA是什么东东,我也不甚了了,应该是新一代启动管理器的研究项目)的源代码以产生下一代的GNU GRUB。 GRUB Legacy is no longer being developed. For the differences between GRUB Legacy and GRUB 2, please visit their respective pages. 2. GRUB for DOS - Bridging DOS/Windows to Unix/Linux(GRUB for DOS,连接DOS/Windows和Unix/Linux的桥梁) 资料来源于GRUB4DOS的官方Wiki:http://grub4dos.jot.com/WikiHome GRUB for DOS is a build of the GNU GRUB boot manager for DOS, and can be run under real mode DOS. It also has many new features. For example, it can be booted through BOOT.INI of Windows (grldr) and kexec of Linux (grub.exe). The disk emulation feature is another enhancement over GNU GRUB, GRUB for DOS(注:一般简写为GRUB4DOS)是GNU GRUB的DOS编译版本(译者注:准确的说,GRUB4DOS是一个基于GNU GRUB Legacy的二次开发版本),它可以运行于实模式的DOS环境下,而且它还具有很多新功能,例如:它可以通过Windows(NT)的boot.ini((使用grldr文件)或者Linux的kexec(使用grub.exe文件)来启动。 GRUB for DOS is free and open-source software, released under the GNU General Public License. GRUB4DOS是免费的并且开放源代码的软件,遵从GNU General Public License协议。 2.1 You can boot the GRUB4DOS boot-loader/boot-manager in different manners: (1) Run GRUB.EXE at the DOS prompt or in AUTOEXEC.BAT 在DOS命令行或者AUTOEXEC.BAT中直接运行GRUB.EXE文件。 (2) In CONFIG.SYS of DOS/Windows9x, use DEVICE=GRUB.EXE or INSTALL=GRUB.EXE or SHELL=GRUB.EXE 在DOS/Windows9x的CONFIG.SYS中使用下列任一方式: (3) In BOOT.INI of Windows NT/2K/XP, use C:\GRLDR="GRUB" (there should be a backslash between C: and GRLDR) 在Windows NT系列操作系统(NT/2K/XP/2003)的boot.ini中增加形如下面的一项: (注:前提是将grldr放到C:盘根目录下。) (4) Under Linux, use "kexec -l grub.exe" and then "kexec -e" 在Linux下: (5) In syslinux.cfg, use "kernel grub.exe" 使用syslinux,在syslinux.cfg中使用: (6) Under GNU GRUB, use "kernel (DEVICE)/PATH/grub.exe" 在GNU GRUB中使用: 例如: (7) In lilo.conf, use "image=/boot/grub.exe" 使用lilo,在lilo.conf中使用类似下面的形式: All above methods won't touch the MBR nor the boot area of any partition. (8) Boot from MBR(or floppy) by installing boot sectors onto it with the DOS/LINUX utility bootlace.com. 通过bootlace.com(可以运行于DOS/Linux)将GRUB4DOS的引导扇区安装到硬盘的MBR(或者软盘引导区)启动。 译者注:现在可以使用Bean编写的grubinst.exe在Windows下将GRUB4DOS的引导扇区安装到MBR或者软盘上(包括映像文件)。 2.2 When GRUB4DOS gets running, you can boot other OSes: (1) Boot Linux kernel with "kernel (DEVICE)/PATH/vmlinuz" 启动Linux的内核,方式:kernel (DEVICE)/PATH/vmlinuz。 (2) Boot MS-DOS7+ kernel with "chainloader (DEVICE)/io.sys" 启动 MS-DOS7+的内核,方式:chainloader (DEVICE)/io.sys (3) Boot FreeDOS kernel with "chainloader (DEVICE)/kernel.sys" 启动FreeDOS的内核,方式:chainloader (DEVICE)/kernel.sys (4) Boot NTLDR of Windows NT/2K/XP with "chainloader (DEVICE)/ntldr" 启动Windows NT的NTLDR,方式:chainloader (DEVICE)/ntldr (5) Boot CMLDR of Windows NT/2K/XP with "chainloader (DEVICE)/cmldr" 启动Windows NT的恢复控制台的CMLDR,方式:chainloader (DEVICE)/cmldr 注:使用类似的方式可以启动NT的setupldr.bin。 (6) Boot other OSes with "chainloader (DEVICE)+1" 使用chainloader (DEVICE)+1的方式启动其它操作系统。 注:主要用来引导对应设备的引导扇区(MBR),例如硬盘MBR、光盘、软盘、主分区引导扇区等。 (7) Boot DOS/Windows9x disk image files with the memdrive feature. 通过磁盘仿真(内存盘)从磁盘映像文件中启动DOS/Windows9x。 (8) Boot Smart Boot Manager with the memdrive feature(SBM can boot CD-ROMs). 启动“Smart Boot Manager(SBM)”进而通过它从光盘启动。 注:GRUB4DOS 0.4.2中已经内置了从光盘启动的功能。 README.txt has more details.(更详细的介绍请参考readme.txt)。 2.3 Useful Links (有用的链接) Here are some useful resources about GRUB for DOS and WINGRUB. GNU GRUB: The homepage of the original GRUB.GNU GRUB的官方网站。 2.4 Other Download Sites [url]]http://sarovar.org/projects/grub4dos/[/url] http://grub4dos.sourceforge.net/ http://grub4dos.freespaces.com/ GRUB for DOS scratchpad(in Chinese) 2.5 Other Resources(其它资源) Ralf Brown's Interrupt List: It's cool.http://www.ctyme.com/rbrown.htm 2.6 Screen shot showing the new features (GRUB4DOS新功能展示屏幕截图)
对应的menu.lst文件(注:取自grub4dos 0.4.2下载包): color black/cyan yellow/cyan title find and load NTLDR of Windows NT/2K/XP title find and load CMLDR of Windows NT/2K/XP title find and load IO.SYS of Windows 9x/Me title find and boot Mandriva with menu.lst already installed title find and boot Linux with menu.lst already installed title commandline title floppy (fd0) title back to dos title reboot title halt title memdrive duplicated from floppy image file (hd0,0)/sbm.bin title memdrive based on win98 partition (hd0,6) 由论坛网友写的GRUB for DOS简介 相信许多liunxer初次听到“GRUB FOR DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别急,再问一句:您是否用过grldr呢?是否用过MaxDos、一键ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB FOR DOS了。 是它的名字给人们造成了误解,这也是历史遗留问题。一开始确实仅仅是“for dos”,后来开发面越来越广,功能越来越强,“for dos”已不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,直到最近才对它逐步了解,相见恨晚 。正是我个人的历程促使我写下这篇文字,希望更多人能尽快地了解并使用GRUB4DOS这一优秀作品,享受它带来的可靠与便捷。 很多新手都误以为GRUB4DOS是GNU GRUB的一部分或一个组件,其实不然。应该说它是对GNU GRUB的二次开发,最早由“不点”在2003年发起,目前主要由他和另外几位中国人维护,很多人贡献了代码,还有广大网友热心地帮助测试,使得GRUB4DOS发展到今天取得了长足进步。目前最新版本是0.4.2,基于GNU GRUB 0.97,并做了相当多的改进,简单归纳如下: 1、A20代码 和 bug修正 GNU GRUB 0.97中的A20代码很明确是有问题的,这在GNU GRUB邮件列表档案中就有提到。很多用户报告在使用gnu grub 0.97时键盘失去响应。grub开发组在grub2中对A20代码打了补丁,以解决这些问题,但是这个补丁并没有打到我们目前广泛使用的0.97版上。为此GRUB4DOS用取自Linux内核的A20代码替换了原代码,并参考其他一些开源代码做了很多改进,基本上解决了这一问题。 A20只是改造的一个方面,在GRUB4DOS的开发过程中修复的GNU GRUB 0.97的bug还有很多,有些在Changelog中并没有提到。到目前为止,已经把那些严重的BUG排解殆尽了,应该可以比较平滑地使用GRUB4DOS了。 2、磁盘仿真(虚拟磁盘) 3、多种方式进入grub环境 2)通过Windows启动菜单 3)通过MBR引导代码(开机直接进入) 而GRUB4DOS采取了新的策略:其MBR引导代码并非固定地指向某个分区,而是搜索所有分区,查找并加载grldr,只要某分区上存有一份grldr,就能启动。而且安装时可以将原微软的MBR备份,启动时如果找不到grldr,便自动加载备份的MBR。显然这种方式更加灵活、稳健,所以GRUB4DOS虽然保留了GNU GRUB的全部命令和功能,包括setup命令,但不推荐使用传统的安装方式。 当然GRUB4DOS的方式也并非十全十美,它的引导代码虽然可以搜索硬盘,但识别文件系统的能力有限,目前仅限于FAT12/FAT16/FAT32/EXT2/EXT3这几种(以后将支持更多的格式),所以可能需要专门设一个分区来存放grldr。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。 目前已有多种方法给硬盘安装GRUB4DOS引导代码:2000/xp/2003下用grubinst(请参考 http://bbs.znpc.net/viewthread.php?tid=2170&extra=page%3D1),DOS和linux下用bootlace.com(参见readme)。 4、图片背景支持 5、中文支持 6、光驱支持 以上仅是大致介绍,更详尽的信息和使用方法请参阅readme。 现在我用的每块硬盘包括u盘都安装了GRUB4DOS,既可启动windows,又能启动linux,还可通过磁盘仿真来启动dos,放上自己喜欢的图片做背景,全中文界面,HOHO,感觉很不错,您不想试试吗? 本文参考资料来自互联网,如有错漏敬请指正。更新日期:2007-01-27 4. GRUB 2使用简介 by bean@sysoft 由论坛的网友所写的GRUB 2中文简介 Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能: 1、模块化设计 不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。 2、支持多体系结构 Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。 3、国际化的支持 Grub 2 可以支持非英语的语言。 4、内存管理 Grub 2 有真正的内存管理系统。 5、脚本语言 Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。 当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。 安装和使用 Grub 2的内核是符合multiboot标准的,因此可以在Grub中引导。 1、下载 2、修改 /boot/grub/grub.cfg set timeout=20 menuentry "Chainload First Part" { menuentry "Load Linux at Second Part" { 如果你熟悉Grub,应该可以看明白里面的内容。要注意的是: 3、在Grub中使用以下的命令进入Grub2 4、进入Grub 2后,在菜单界面下输入 c 便可进入控制界面。 基本命令: lsmod insmod mod_name rmmod mod_name help [command] ls [options] [dir] 还有很多其它的命令,全部命令的列表在/boot/grub/command.lst里: 可以用help来看具体的用法 注意: a、很大一部分命令都在模块里,如果输入时显示找不到命令,只需要用insmod b、你可以定制内核,使所需的命令包在其中。 从代码中编译: 1、用cvs取得源代码 2、当前的Grub2代码中有一个bug,使得启动后不会显示grub.cfg中的菜单,有一个补丁,在: 3、./configure 4、定制内核 ./grub-mkimage -d . -v -o core.img fat pc core.img是内核的名字,fat和pc是加入内核的模块。常用模块有: fat: 支持 fat 文件系统 除了当前分区的文件系统的模块外,其它的都可以用insmod在进入grub2后才转载 5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst 5. GRUB 三步通 by 不知名网友 网友所写的GRUB使用说明--“GRUB三步通”,推荐新手阅读。 原始链接:http://www.cc.ac.cn/~peace/articles/grub.txt 另外,请新手注意: GRUB4DOS实际上只是GNU GRUB 0.97的功能增强版,除了某些命令的使用方法稍有不同之外,基本的用法跟GNU GRUB是完全一样的,因此,你可以直接访问GNU GRUB的官方网站并查看网站上提供的GNU GRUB在线使用手册(Online manual)来学习GRUB最基本的用法。 GRUB 的优点 GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。 GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单。 更令人惊讶的是,这是一个自由软件!!! GRUB 菜单 先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。 timeout 10 # --> Debian linux <-- # --> Windows 菜单选项 <-- # --> RedHat linux 菜单选项 <-- # --> Mandrake linux 菜单选项 <-- # --> Mandrake linux 结束 <-- timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。 默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。 接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root与linux的root分区极其不同,此root非彼root也! 在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。 到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。 知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。 是不是感觉很简单啊!再来看一看windows的定义段吧。 我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。 GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧! GRUB的交互性 GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。 只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬! GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下: [ Minimal BASH-like line editing is supported. For the first word, TAB grub> grub> root 现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下: grub> root (hd0, 现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表: grub> root (hd0,8) 现在已安装了 root 文件系统,到装入内核的时候了 ##################### 将一张空盘插入 1.44MB 软驱,输入: # mke2fs /dev/fd0 # mount /dev/fd0 /mnt/floppy # mkdir /mnt/floppy/boot 在linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。 grub> root (fd0) 现在,引导盘完成了。 grub> setup (hd0) 如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入: grub> setup (hd0,4) 现在,已安装 GRUB。然后,应该为GRUB创建引导菜单,这样就不必在每次引导系统时都输入那些命令。 Climbing注:上面介绍的都是GNU GRUB的传统安装方式(安装到MBR或者引导扇区),而对于GRUB4DOS来说,它又比GNU GRUB多出了更多更好的而且更灵活的启动方式和安装方式,详细信息请参考本文相关内容。 小结:在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档。 GRUB的下载:ftp://alpha.gnu.org/gnu/grub/ 再补充:三种硬盘安装Linux方法的 grub 命令集(采用任何一种都可以的,随便你喜欢哪个方法): 1.用 hd.img 安装,这需要用到 grub for dos 的软盘仿真功能: grub> map (hd0,0)/hd.img (fd0) 2.用 vmlinuz 和 hd.rdz 两个文件来安装(无需使用 grub for dos,用 GNU 原来的 grub> kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 3.首先下载grub for dos(http://grub.linuxeden.com),其最新版本支持ntfs分区,而且可以利用ntloader调用,比如winxp的引导菜单. title Magci linux1.2-setup (hd0,6)为我的放置iso和mbvmlinuz,mbinitrd-hd.gz的分区,修改成你的,注意kernel后有个空格。 ################## ################## ################## ################## ################## ################## 其次,这种方法利用iso安装的原理基本上就是利用grub引导安装映象,那么我介绍我所知的三种方法: A,已经拥有了grub引导,比如原有的linux仍存在,而且是由grub引导系统的。(这种情况比较简单)。 就可以看到引导安装开始了,方法A 结束。 B,如果没有grub,但是有装好的windows(以winxp为例),也可以利用windows的c:盘下的boot.ini 结合 grub for dos引导安装。这里根据直接用winxp 引导 grub for dos,或者进入实dos再用grub for dos,可以分为一下两种情况。 B1, winxp 的boot.ini + grub_for_dos中的grldr; B2, winxp的boot.ini + vfloppy + grub_for_dos 对于方法A和B,当引导安装开始后,只要指定系统安装所需的iso文件所需的位置就可以了。 以上方法所需要的软件,可以在这里下载,http://lsec.cc.ac.cn/~peace/service/software/win4linux.rar ,当然也可以在网上下载更新 再补充 不用grub,直接用u盘引导从硬盘安装linux的方法。
[2008.11.13]GRUB4DOS Guide(使用指南英文版) ------ Recommended steps to build LiveXP: Method 11) Download ZIP archive from here;2) Extract ZIP and then run WinBuilder.exe; 3) Update through the Download Center by clicking the 'Download' button; and 4) Then build LiveXP by pressing the 'Play' button. Method 21) Download WinBuilder.exe 075b5K from here and run it;2) Update through the Download Center by clicking the 'Download' button; and 3) Then build LiveXP by pressing the 'Play' button. |