|
发表于 2006-5-15 19:29:56
|
显示全部楼层
唉!又有人中招了。
本来早就想写一篇关于这个问题的文章啦,但一来要说清楚这个问题不容易,需要讨论一些硬盘的结构、分区的底层知识以及与 BIOS 的关系等;二来是我也没能完全解决 NetBSD 下的这个问题。现在既然有人问起,我就告诉你一个解决的方法吧!这个问题的实质其实在 FreeBSD 使用手册中已经被强调过了,就是“FreeBSD 不会参考 BIOS,而且也不知道所谓的 ‘BIOS 逻辑磁盘对应’。”,不过大部分人可能没在意吧,就算注意了一下,也只怕没能完全理解它说的到底是什么,这里具体的原理就不深入了,不是三言两语能说明白的,等有时间并且真的有人需要时再说吧!
一、如何避免出现这样的错误
在 FreeBSD 分区时(注意!不是 Disklabel 而是 FDisk,不要搞错了。)按下“G”,进入“set Drive Geometry”中输入正确的 BIOS 映射参数(C、H、S),这些参数可由 Windows 下的任何一款分区工具查到(除了 Windows 自带的那个 fdisk.exe,^0^),我用的是 DiskGen。
二、中招后怎么办
千万不要重新分区!那可就真玩完啦。也不要乱用磁盘工具修复,那样有可能会修好,也有可能更糟,我的做法是:
用 win98 启动盘(DOS 也行)启动机器,运行一个小分区工具 DiskGen,随便做点什么修改,然后马上恢复(非常重要),比如我是先取消当前 boot 分区的 boot flag,然后立即又设置回去。现在存盘退出,重启,DiskGen 应该已经帮你修复这个小小的分区错误了。当然,你对自己的技术及硬盘知识有信心的话,也可以直接手工编辑主分区表,其实一般也就是错在第二个分区(一般是扩展分区)中几处微小的地方,先申明,这样改崩的话可别来找我啊!不过话说回来,能做这样修改的高手,也不会来看这篇陋文的,对吧!呵呵。
这里说句题外话,二楼说对了一半,这是一个分区表错误,不过并不是 Linux 的分区工具造成的。还有建议二楼不要用 PM 来做分区,PM 会搞坏分区这是人尽皆知的,建议你试试 DiskGen ,直观方便,不过你也还是要小心,DiskGen 也不是百分之百的保险,虽然你可能永远也不会遇上它出错 。其实要说最好的,只怕是 Linux 的 fdisk 了,可处理几乎所有的分区格式、完美识别 BIOS 映射、丰富的可选项、永远不会做你预料之外的多余动作,缺点嘛: 不那么直观、不象 cfdisk 那样可改变分区大小(只有全部重来)。 |
|