免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1038 | 回复: 0
打印 上一主题 下一主题

DOS 下用 GRUB.EXE 修复启动故障 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-28 20:21 |只看该作者 |倒序浏览

DOS 下用 GRUB.EXE 修复启动故障
GRUB.EXE 完全就是 GRUB,只不过重新包装,使得它能够在 DOS 下运行。所以,GRUB.EXE 具有你先前所熟悉的 GRUB 的所有优良特性。目前,grub_for_dos 的最新稳定版 0.0.8 可以从这里得到:
ftp://ftp.cosoft.org.cn/incoming/grub_for_dos-0.0.8.tar.gz
或者进入目录查看:
ftp://ftp.cosoft.org.cn/incoming/
如果 Linux 安装之后不能启动,可能的原因是 Lilo 的故障。这时候,用一张 grub 引导软盘启动,可保证启动成功。如果你没有 grub 启动软盘,那么用一张 DOS 启动软盘,再加上一个 grub.exe 文件,同样可以很简单地获得 grub 强大的多重启动功能。
顺便说,用“DOS启动盘+GRUB.EXE”的方法所制作的软盘,能够用来启动 DOS 和其它操作系统,是真正的“万能引导软盘”。这张软盘在硬盘不能引导 DOS/Windows 的时候还可以引导 DOS,而用其他方法制作的 GRUB 软盘,不能再重复用作 DOS 启动盘。这里所说的“DOS启动盘”可以是 MS-DOS 的,也可以是 FreeDOS 的(顺便说,FreeDOS build 2029 已经支持 Win98 的 FAT32 大分区格式了)。
另外一种情形:当你重新安装 Windows 的时候,Windows 会重写 MBR,从而把 LILO 或 GRUB 的启动代码抹掉。用 GRUB.EXE,你不需软盘就可以启动其他操作系统(假定你的Windows是9x,或者硬盘上安装有DOS)。
用 loadlin.exe 也能启动 Linux,但是 loadlin 需要一个内核文件(vmlinuz),这个内核文件必须处在 DOS/Windows 的分区,有时候这个内核文件不适合作为你新近安装的 Linux 系统的内核。GRUB.EXE 就没有这样的限制,它可以给你很大的自由,它从 DOS 下启动,而能够从 Linux 分区找到任何文件(包括内核文件),你很容易知道这个内核跟你将要引导的系统是匹配的,从而引导 Linux 系统。
loadlin.exe 也是不用安装就可以使用的 Linux 引导器。grub.exe 的不同在于,它是一个引导管理器,可以引导其它操作系统。
版本 0.0.8 在驱动器映射之下也能够再次(可以任意嵌套多次)安全地运行 GRUB.EXE。采用的方法是,在每次运行 GRUB.EXE 的时候,都自动卸载先前的驱动器映射,恢复旧的 BIOS int13 中断向量。开发版系列(例如版本 0.1.4)当然也有这个功能。
解压后,把 grub.exe 文件拷贝到 DOS 的硬盘分区或者 DOS 软盘即可。用法:
grub --config-file=(hd0,0)/boot/grub/menu.lst
或者不带参数:
grub
默认的配置文件是 (hd0,0)/boot/grub/menu.lst
grub> find /boot/vmlinuz
(hd0,7)
grub> root (hd0,7)
grub> kernel /boot/vmlinuz root=/dev/hda8
grub> boot
简单的几个 grub 命令,就可以启动 Linux 了,很方便吧?顺便说,grub 的 find 命令很好,grub 甚至还有一个 cat 命令可以显示一个文件的内容。在 grub 的提示符下敲入 help 命令,可以获得在线帮助。grub 的分区号 (hd0,N) 一般就是 Linux 的 /dev/hda(N+1), 例如: (hd0,7) 就是 /dev/hda8, 如果你的是 SCSI 硬盘, 则是 /dev/sda8。一个特殊情况是, 当你的系统中没有 IDE 主盘而只有 IDE 0 上的一个从盘时, grub 显示的 (hd0,7) 将是 Linux 的 /dev/hdb8, 也就是说, GRUB 找到的第一个 BIOS 硬盘 (hd0) 是系统中的 /dev/hdb 了。一个复杂一些的例子:
查找系统中的内核文件的位置:
grub> find /boot/vmlinuz
(hd0,7)
如果你采用了单独的 boot 分区, 那么需要用
grub> find /vmlinuz
来查找。假定找到的结果是
(hd0,6)
再查找系统中有哪些根分区:
grub> find /sbin/init
(hd0,7)
启动内核的命令是:
grub> kernel (hd0,6)/vmlinuz root=/dev/hda8
grub> boot
如果你的 (hd0,7) 不是 /dev/hda8 而是 /dev/hdb8, 你就试试它:
grub> kernel (hd0,6)/vmlinuz root=/dev/hdb8
grub> boot

修复grub  启动。安装到第一个硬盘。
grub>root (hd0,0)

grub>setup (hd0)

grub>quit
分区号是准确的, 只有硬盘号可能会有变化. IDE 硬盘只有 4 种变化, hda, hdb, hdc, hdd, 一个一个地试验, 总可以成功. 当然, 如果你的是 SCSI 硬盘, 需要试验的是 sda, sdb, sdc, sdd 等。
当然 GRUB 也支持菜单操作。GRUB.EXE 默认的菜单配置文件是 (hd0,0)/boot/grub/menu.lst ,正如前面所说,这个配置文件的位置可以由 DOS 命令行参数来重新指定。这个文件所处的分区(默认是(hd0,0))的类型可以是 DOS/Windows 的 FAT12,FAT16,FAT32,也可以是 Linux 的 ext2 等类型,还可以是 GRUB 所支持的其他分区类型。顺便说,GRUB 的新版本将要支持 iso9660 光盘格式、NTFS 文件系统,以及用软盘映象 img 文件来引导机器(特别适合于没有软盘又想用软盘来启动机器的用户)。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25308/showart_267001.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP