FreeBSD引导扇区被Windows覆盖的解决方案

2009-05-13 06:04:49来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

FreeBSD引导扇区被Windows覆盖的解决方案
(陈云川
ybc2084@163.com
UESTC,CD)
1、引言
对于在一个硬盘上安装多操作系统而言,经常面临的一个问题就是当重新安装了Windows后,引导分区将会被Windows覆盖掉。无论是安装Linux还是FreeBSD,当重新安装Windows时,都会遇到这个问题。作者就在自己的机器上安装了双系统:Windows XP和FreeBSD 6.1。最近由于Windows出现被病毒感染的症状,因此作者一怒之下将Windows重装了,这下,世界彻底清净了。但同时,也就无法启动FreeBSD了。作者通过阅读网络上的相关文章,采用一种与通常的方式稍微不同的办法来解决了这个问题。
2、通常采用的方法
作者在网上查找了相关的资料,发现大多数都是通过修改Windows的C:\boot.ini来实现NTLDR(Windows的引导程序)的多系统引导。这种解决方式的做法如下:

1、  首先用FreeBSD的引导光盘(或软盘)启动FreeBSD,进入Fixit控制台;
2、  通过mount_msdosfs命令挂载Windows系统所在的分区,通常是C:\,其在FreeBSD下的设备通常对应的是/dev/ad0s1。因此挂载(mount)命令如下:
mount_msdosfs /dev/ad0s1 /mnt
3、  通过dd命令将FreeBSD的引导扇区的内容转储到一个文件中,通常FreeBSD的根文件系统位于/dev/ad0s3a上——至少在作者的机器上是这样的。这里将转储的输出文件命名为bootsect.bsd,同时这个文件应该位于Windows的C:\下,故具体的命令如下:
dd bs=512 count=1 if=/dev/ad0s3 of=/mnt/bootsect.bsd
4、  然后取出FreeBSD的引导光盘,启动Windows,修改C:\bootsect.bsd文件,在其末尾添加下面一行:
c:\bootsect.bsd=”FreeBSD 6.1”
实际上,等号后面的字符串是NTLDR显示操作系统列表的时候的字符串,因此可以写成任何你喜欢的值——你甚至可以用你的宠物的名字来命名,比如RedDaemon(假设这是你养的一只猫的名字)。
5、  然后,再次启动Windows的时候,就会出现一个让用户选择启动哪个操作系统的提示,就好像Windows安全模式下那样。

以上就是作者在网上找到的被说明得最多的方法。然后作者试过之后,发现这种方法不能在作者的机器上工作。具体的原因并不清楚,于是作者试图寻找另外一种做法。
3、作者采用的方法
实际上,在FreeBSD中有这样一个工具:boot0cfg,其man手册说这是一个boot managerinstallation/configuration utility,通过这个工具可以修改硬盘的MBR(也就是引导扇区)。这不就是我们所需要的么?作者仔细阅读了boot0cfg的man手册,详细了解了其各项参数的意义。最后给出了本文将要说明的这种修复MBR的方案:

1、  通过FreeBSD引导光盘启动FreeBSD的Fixit控制台,在这个控制台下可以使用各种系统工具——这些系统工具都位于引导光盘上,而引导光盘则被自动挂载到了/mnt2上,使用者也不需要修改PATH环境变量,因为PATH环境变量也被自动地做了修改,使得不用给出绝对路径就可以使用各种系统工具,这其中自然也包括boot0cfg。
2、  通过下列命令修复MBR(也即硬盘的引导扇区),关于boot0cfg的这几个命令行选项,这里仅做简要说明,感兴趣的读者请参考[1]。以下命令需要root权限(这句是废话,通过Fixit控制台进入系统自然就是root用户):
boot0cfg -B -v -o noupdate -t 185 ad0
简要的说明一下:
-B选项:指明要在硬盘上安装引导程序
-v选项:给出详细信息
-o noupdate选项:避免在某些平台上出现问题(这些平台带有反病毒硬件,不允许修改MBR)
-t 185选项:启动时暂停10秒(近似值),以允许用户选择要启动的系统

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD终极安装参考手册(图)

下一篇:奇趣发布升级版本Qtopia 4.2.0,为开源开发另辟蹊径