关于装双系统中遇到的grub4dos引导的知识

本文详细介绍了如何使用GRUB4DOS修复引导记录,以及GRUB4DOS的安装过程,包括如何配置GRUB引导菜单以启动不同操作系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  GRUB4DOS是一个优秀的双(多)系统引导软件,使用GRUB4DOS可以很方便的引导各种操作系统,比如DOS、Windows、 Linux等。是一个可以把U盘制作成光盘似的来进行装系统的启动引导工具。

命令索引

  blocklist 输出文件的块清单表达法。

  boot 引导已加载的操作系统或扇区链式加载器。

  bootp 通过BOOTP初始化网络设备。

  cat 显示指定文件的内容。

  cdrom 初始化或者停止所有的 ATAPI CDROM 设备。

  chainloader 加载扇区链式加载器。

  cmp 比较两个文件, 并且报告两者之间的差异。

  color 改变菜单的颜色。

  configfile 将指定文件作为配置文件予以加载。

  debug 打开/关闭调试模式。

  default 把 NUM 项菜单设为缺省值。

  device 声明BIOS驱动器对应的实际物理设备。

  dhcp 通过DHCP初试化网络设备。

  splashimage 图形模式下载入背景图片文件。

  foreground 设置图形模式下的前景色。

  background 设置图形模式下的背景色。

  clear 清屏。

  displayapm 显示 APM BIOS 的相关信息。

  displaymem 显示 GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。

  displaymem 显示诸多文件的内容。

  embed 如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。

  fallback 如果调用当前的菜单项时出现错误,则跳转到 NUM 项后重试。

  commandline 进入命令行方式。

  find 在所有分区上查找文件名, 并显示包含该文件的设备。

  fstest 切换文件系统的试验模式。

  geometry 输出驱动器的相关信息。

  halt 关闭系统(计算机)。

  help 显示内部命令的帮助信息。

  hiddenmenu 隐藏菜单。

  hide 通过在分区类型上置隐藏标志,隐藏指定分区。

  ifconfig 指定 IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。

  impsprobe 探测 Intel 多处理器规范 1.1/1.4 配置表并使所找到的各处理器启动进入闭循环。

  initrd 加载Linux格式的初始化虚拟盘, 并设置必要的参数。

  install 安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。

  ioprobe 侦测指定设备的 I/O 端口号。

  kernel 尝试载入主引导影像文件(Linux内核格式)。

  lock 如果用户未被认证,则终止命令的执行。

  makeactive 将 root 设备置为活动分区。

  map 对设备进行映射。

  md5crypt 产生一个 MD5 格式的密码。

  module 对多重启动影像, 加载启动模块文件 (不处理该文件的内容, 用户必须自己确定核心的要求)。

  modulenounzip 与 'module' 类似, 但是禁用了自动解压缩。

  pager 没有参数时,切换页模式。

  partnew 创建一个新的主分区。

  parttype 改变指定分区(PARTITION)的分区类型(TYPE)。

  password 设置密码。

  pause 终止命令的运行,并给出一段信息。任意键按下后,将继续。

  quit 从 GRUB 命令行中退出。

  rarp 用 RARP 初始化网络设备。

  read 从内存的指定位置读取一个 32-bit 的值,并以十六进制形式显示出来。

  write 写一个 32 位的值 VAL 到内存地址 ADDR。

  reboot 重启系统(计算机)。

  fontfile 指定中文字体文件,并切换到中文显示方式。

  root 设置根分区。

  rootnoverify 类似`root'指令, 但不测试安装该分区。

  savedefault 将当前项设置为默认的引导项。

  serial 初始化一个串口设备。

  setkey 改变键盘映射关系。

  setup 自动安装GRUB.

  terminal 选择一个终端。

  terminfo 指定终端的功能。

  testload 以多种不同的方式读取文件(由FILE指定)的整个内容,并予以比较,以测试文件系统的代码。

  testvbe 测试所指定(MODE)的 VBE 模式。

  setvbe 为后续的每个kernel命令行设置VBE模式。

  tftpserver 指定 TFTP 服务器的 IP 地址。

  timeout 设置在自动启动缺省菜单前所等待的秒数。

  title 命名菜单项。

  unhide 通过清除隐藏标志,解除指定分区(PARTITION)的隐藏。

  uppermem 强制指定仅有(KBYTES) KB 的上位内存。

  vbeprobe 侦测 VBE 的信息。


使用说明

  解压GRUB4DOS后,将其中的grub.exe文件放在你的一个FAT32分区中。

  具体修复过程如下:

  1.使用DOS启动盘或Windows 98的启动盘启动到DOS模式下,然后键入:d:\tmp\grub.exe 这里的d:\tmp是笔者解压缩GRUB4DOS的目录。这样就进入了GRUB环境,可以看到一个 grub>提示符。

  2.恢复GRUB引导记录。在 grub> 提示符下键入:

  root (hdx,y)

  kernel (hdx,y)/boot/yourkernelname ro root=/dev/hdxx

  setup (hd0)

  上面第一条命令是指定你的/boot分区位置,如果/boot没有单独分区,那么就是你的/分区。

  第二条命令指定内核位置,具体位置根据自己的实际情况确定。

  第三条命令是将GRUB引导记录写入MBR。

  如果对Linux分区位置不十分清楚,可以使用Tab键补全功能来查看确定。执行完setup命令后会看到“succeed!”字样,此时重启即可。

  3.如果只是想启动Linux,而不是修复GRUB,那么可以在进入DOS后键入下面命令启动你的Linux系统。

  d:\tmp\grub.exe --config-file=(hdx,y)/boot/grub/grub.conf

  其中参数同上。

  wingrub(GRUB4DOS)的安装:

  在上面的网址中,有下载页面,里面说的就是wingrub;

  1)、安装:

  1]安装grub软件到机器中,点鼠标应该会吧,就直接按它默认的安装,下一步、下一步就安装好了;

  2]安装grub;

  打开 wingrub程序,选择 tools菜单,然后点击 install grub ,出来一个对话框;

  这里面有两个方法供我们选择;(个人建议选B)

  A) 我们直接点一下Boot From Grub Partion 就行,然后点击,右边的下接框;选择要安装在哪个分区中,然后按最下边的[install];

  您可能在下拉的菜单的对话框中,看到的是 (hd0,0)或者 (hd0,1)等,那就选(hd0,0);如果您只看到(hd0,1),说明您的第一个分区是NTFS的,这也没有什么,很正常;如果您看不到什么下拉框,您就看下面的办法;

  B)您可以点 Systerm Device ,然后在右边的选择框中,选C ; 然后再点BOOT FROM BOOT.INI 就好,如果不行就换;在Title 中写入mygrub ; 然后在 Time OUT 写上 10;

  这样grub就安装好了;他的配置文件在 c:\grub\中 ,配置文件是c:\grub\menu.lst ,这个配置文件起到决定性作用;所以我们一定要写好;语法和Linux中的没有区别;是一样的;

  A和B还是有点小小的区别,A的方法是开机就能看到所有的在menu.lst中系统;而 B,则必须按一下刚才我们所填写的mygrub ,然后才能看到在menu.lst所提到的系统;

  3、配置 grub ;

  其实最简单的配置方法不是来自于图形的点鼠标,初学Linux的弟兄可能会说,我不点鼠标,我能做什么?呵。。。。没错,但在配置 grub的过程中,最没有效率的就是点鼠标;其实我们点了十几分钟的鼠标,也是达到一个目的,就是把grub配置起来。而他的配置文件就是c:\grub \menu.lst ,我们挥汗如雨的点鼠标,无非是配置这个文件;如果不用点鼠标的办法来配置,

  一分钟都不到就OK ;只要掌握一点小小的技巧;有何难呢??

  在配置 c:\grub\menu.lst的过程中,我们只是再用一下 wingrub的查看分区的界面,其它的只是用记事本就能写好;c:\grub是隐藏起来的,我们要在游览器中加入c:\grub 就

  可以看得到;

  0]打开wingrub,点tools =》partioinlist (分区列表),这里能了解到机器的分区,比如我们可能看到的 FAT32的分区是 (hd0,1)等等,事实上,我们的确需要fat32分来来存放下载的Linux光盘映象;我们通过这个能知道我们把光盘ISO存放到(hdX,Y)了,也能知道(hdX,Y)所对应的Windows分区的是哪个,是C,还是D ,还是E ,明白了吧;

  1]首先我们找一个FAT 32的分区,把下载下来的ISO直接放到分区的根目录下面,不要放在任何目录中;

  2]还是在这个分区,建一个目录,比如是linux,从下来下来的第一张ISO中isolinux中抽取 vmlinuz 和 initrd.img 两个文件,放到linux目录中; 注意只放这两个文件,不要放其它的内容,如果放了其它的,可能出现安装到中途退出的情况;

  注意:目录是名是小写的;在书写menu.lst 时,我们要用半角英文,标点之类的全是半角的;title root kernel initrd 全是小写的英文;切注意大小写;

  3]书写menu.lst ,怎么书写,对我来说难吗?不难!

  我们打开menu.lst 后,可能里面已经有内容了,比如有个 timeout 10 ,如果没有这行可以自己写上;没有什么难的;

  timeout 10 #这是开机等待进入系统的时间,是10秒

  title WindowsXP # 我们的机器 中都有 windows ,这个就是用来启动windows的;总共有四行,不要弄错了,可以照抄到你的配置文件中;

  root (hd0,0)

  makeactive

  chainloader +1

  简单的 menu.lst 配置 linux 引导说明;通过menu.lst ,我们可以配置 Linux的启动和引导;不只是安装的引导,也可以引导已经安装好的Linux系统;语法结构有下的四条,举例如下:总共

  有两个书写格式,任选其一;

  格式一:最简单:

  代码:

  title redflag5

  root (hd0,1)

  kernel (hd0,1)/linux/vmlinuz

  initrd (hd0,1)/linux/initrd.img

  title 这行就是我们在开机时,所看到的菜单 ,显示的就是 redflag5 ,要加在 title 的后面,title是必须保留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可

  以定义的,比如 title redflag5也是可以的;

  root (hd0,1) 这行能用 以root开头,然后加一个空格,至于您把vmlinuz和initrd.img 放在哪个分区了,用打开 wingrub,点tools =》partioinlist (分区列表) 中查到

  kernel 这行,以kernel 开头,然后加一个空格,主要说的是vmlinuz文件放在哪个分区,哪个目录了;除了kernel 后面有一个空格外,在这行中,其它地方没有空格;这行说的是我们用放在(hd0,1)分区下的linux目录中的kernel 来内核来启动;

  initrd 这行, 和 kernel 那行类似;没有什么难的,自己的文件放在哪个分区,哪个目录了,自己最知道吧;

  格式二:比较麻烦一点:理解着看吧;

  代码:

  title redflag5

  root (hd0,1)

  kernel /linux/vmlinuz ro root=/dev/hda6

  initrd /linux/initrd.img

  title 这行就是我们在开机时,所看到的菜单 ,显示的就是 redflag5 ,要加在 title 的后面,title是必须保留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可以定义的,比如 title fc4setup也是可以的;

  root 这行,在本例中是 root (hd0,1),这行就是我们打开 wingrub,点tools =》partioinlist (分区列表) 中查到的;我们通过这个知道我们把解压出来的 vmlinuz和initrd.img 所处的分区和路径;

相信许多liunxer初次听到“GRUB4DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别急,再问一句:您是否用过grldr呢?是否用过MaxDos、一键 ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB4DOS了。 是它的名字给人们造成了误解,这也是历史遗留问题——一开始仅仅是“for dos”,而后来开发越来越深入,“FOR DOS”已远不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,很久之后才重新发现它,所以写下这篇文字,希望更多人能够了解并使用这一优秀作品,享受它带来的可靠与便捷。 首先搞清楚与 GNU GRUB 的关系。 GNU GRUB 分为 GNU GRUB Lagecy 和 GNU GRUB2 两代。GNU GRUB Lagecy 其实就是原来的 GNU GRUB 0.xx ,最新版是 2005 年发布的 GNU GRUB 0.97 。目前已停止开发,并改名为 GNU GRUB Lagecy 。GNU GRUB2 是第二代 GRUB,它将取代原来的 GNU GRUB (例如0.9x版),但目前还处于开发阶段,尚未发布正式版。 而 GRUB4DOS 则是对 GNU GRUB Lagecy 的二次开发。该项目最早由 不点 在2003年发起,目前主要由他、bean 和另外几位中国人维护,很多人贡献了代码,再加上广大网友热心帮助,使得 GRUB4DOS 不断完善。在当前 新的 GRUB2 没有到位、老的 GNU GRUB Lagecy 又有许多不完善 的情况下,GRUB4DOS 受到越来越多人的欢迎。 GRUB4DOS 在保留 GNU GRUB 0.97 原有功能的基础上,做了很多改进,简单归纳如下: 1、A20代码 和 bug修正 对A20的处理历来就是一个棘手问题。当初IBM引入这一设计,本意是为了让以往那些BUGGY软件能够运行,结果造成后世无穷无尽的隐患。当然不能全怪 IBM,真正应当责怪的是那些不遵守IBM标准的硬件厂商,它们生产的系统无法用常规的几种方法来控制A20,使得软件开发者可能在很多意想不到的地方碰上A20这个妖魔,除了造成死机之外,还导致执行效率的极度降低。在微软的XMS规范中就明确写着,A20的控制在有些机器上是非常耗时的一个操作。 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、磁盘仿真(虚拟磁盘) 这是GRUB4DOS的一大特色功能,开发者下了不少功夫。这一功能是将 软盘镜像或硬盘镜像甚至某个硬盘分区 虚拟成 软驱或硬盘,进而运行其中的操作系统(DOS、win98),类似于以前流行的“虚拟软驱”(vfloppy),但功能要强得多。 用SYSLINUX中的memdisk也可实现虚拟磁盘。比较而言,GRUB4DOS功能更强,限制更少,用法更灵活,同时对bios的要求也要高那么一点点,在一些BIOS有缺陷的机子上可能会出问题(不过不用太担心,实践表明这种情况极其罕见)。 3、多种方式进入grub环境 1)通过dosdos下运行grub.exe即可进入纯粹的grub环境,并部分地支持退回到DOS。也可把grub.exe作为 CONFIG.SYS 里的设备驱动文件而运行。 2)通过Windows启动菜单 这是被广泛使用的一种用法。MaxDos、一键ghost硬盘版、矮人DOS工具盘之类的软件就是以这种方式启动grldr,再通过磁盘仿真虚拟出一个软驱,进而启动DOS的。 3)将GRUB4DOS引导代码写入硬盘MBR,开机直接进入grub环境 乍一看这不算什么改进——GNU GRUB本来就可以这样引导,但实际上在这里 GRUB4DOS 有相当大的革新。 GNU GRUB 的安方法是: root (xxx,x) setup (xxx) 第一句是指定一个分区,该分区须存放有/boot/stage1和/boot/stage2文件,第二句是将引导代码写入硬盘MBR。这样安GRUB,其MBR引导代码被设置为从固定的分区加载stage2。假如我们某一天因为某些原因,需要删除或格式化该分区,或者做一些会引起该分区序号变化的操作(比如用 pqmagic 在该分区前添加或删除分区),就需要预先重一次grub,重新指定存放stage2文件的分区,否则将无法引导。这一点上 GNU GRUB 显得不够灵活。 而 GRUB4DOS 采取了新的策略:其MBR引导代码并非固定地指向某个分区,而是搜索所有分区,查找并加载 grldr,只要某分区上存有一份 grldr,就能启动。而且安时可以将原微软的MBR备份,启动时如果找不到grldr,便自动加载备份的MBR。显然这种方式更加灵活、稳健,所以 GRUB4DOS 虽然保留了 GNU GRUB 的全部命令和功能(包括 setup 命令),但不推荐使用传统的安方式。 当然 GRUB4DOS 方式也不是十全十美,因为其引导代码还不能识别所有的文件系统,目前支持仅 NTFS/FAT12/FAT16/FAT32/EXT2/EXT3(也不少了 ,以后将支持更多的格式),所以可能需要专门设一个分区来存放 grldr 。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。 4、图片背景支持 可用 640x480@14位色 的图片做背景。图片制作请参考这里: http://bbs.znpc.net/viewthread.php?tid= ... a=page%3D4 5、中文支持 GRUB4DOS 发布有中文版,大大方便了中文用户。 6、光驱支持 该功能使得用户可以再GRUB环境下访问光驱,并可由光驱启动,很实用。Os:GNU/Debian Linux 5.0 Lenny -AMD Athlon(tm) 64 Processor 3000+ -NVIDIA GeForce 7300 GT -512M*2 DDR Memory -ST SATA 250G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值