cee1 发表于 2004-7-3 19:06:11

http://lwn.net/Articles/86835/中提到过,全文如下:
Making Fedora Core 2 and Windows play well together


From:   Jack Aboutboul <jaboutboul-AT-speakeasy.net>
To:   fedora-devel-list-AT-redhat.com
Subject:   Prevention and Recovery of XP Dual Boot Problems
Date:   Tue, 25 May 2004 17:25:06 -0400


This is the whole document for those who didnt get it.


<---BEGIN--->

Dual Booting Issues With Fedora Core 2 and Windows: Prevention & Recovery

NOTICE: Please read this document in its entirety.

This guide was inspired by the solution developed by Radu Cornea and
Alexandre Oliva in this thread:
http://www.redhat.com/archives/fedora-test-list/2004-May/msg02114.html .
This guide aims to integrate the original solution with the refinements
evolved in that thread.This guide offers an explanation of why the
refinements are beneficial and some workarounds to problems that may prevent
the uninitiated from using the solution. It also provides a means of
preventing the problem entirely.

Primer:

      There is a bug in Fedora Core 2 that causes the hard disk geometry as
reported in the partition table to be altered during installation.This
change may cause Windows boot failure.Although this bug is severe, it is
recoverable and no data should be lost.It is important not to panic if and
when this happens so you do not cause further problems or cause actual loss
of data in the process of recovering from the error.

Prevention:

      This bug can be avoided entirely by using some preventative steps while
installing Fedora Core 2.Thanks go out to Cero ([email protected]) for
discovery and testing of this solution.

      To avoid the hard disk geometry to be altered you may enter it manually
during installation by using the hdN=<drive geometry> parameter (where N is
the letter representing the drive with the MBR you will use).To discover
the current geometry before installing Fedora Core 2 you should use a
utility that can read the drive geometry as reported in the partition table.
It is important to understand that some tools may not be reporting the
actual data from this location, but, rather, some derived value, so your
surest way is to use the fdisk utility.You can get this information by
following these steps.

Note: This example will assume you are looking at /dev/hda, which is the
master on the primary IDE interface. If your MBR is located on another
device you should use its name (eg: /dev/hde )

Download and burn the Fedora Core 2 Rescue CD.

Boot from the Rescue CD (there is no need to start networking or mount
drives)

Issue the command: fdisk -l /dev/hda   to print the current partition table
to screen in non-interactive mode.

Write down the drive geometry as reported at the beginning of the output
from fdisk. This is reported as number of Cylinders, Heads, and Sectors
(hence the name CHS).

You can now reboot the computer by simultaneously holding down the keys
Ctrl-Alt-Delete.

You can now boot the Fedora Core 2 installation CD. At the first menu prompt
you should now choose to run the installer with the known geometry.

Example: linux hda=14593,255,63

      The installer should now run normally and not alter your partition table
geometry entry.If, for any reason, this geometry should be changed
regardless of this preventative step, please use the recovery steps to
correct the geometry of the drive as reported by the partition table.


Recovery:

      You have installed Fedora Core 2 and find that you cannot boot Windows.
Typically the boot process will terminate with the words

      Rootnoverify(hd0,0)
      Chainloader +1

      These are the boot parameters from your Grub configuration.The parameters
are likely to be correct, but Windows fails to boot because Fedora Core 2
altered the hard disk geometry as reported by the drives partition table.

IMPORTANT: Do not panic and do not begin using multiple tools in an attempt
to correct this error. Automated tools can be very dangerous. The actual
changes that need to be made are minor and benign.By running 3rd party
applications to recover a bootable Windows installation may cause you to
lose your data.You have been warned.

      For those who are technically inclined I include here a brief explanation
of what is going on.The drive has not been damaged and your partition
table is fine.The problem is that Windows demands a "sane" CHS table.
This table has been altered by Fedora Cores installer and Windows hangs.
Luckily, the actual table, in LBA format, is notcorrupted.For those
seeing a strange partition table, take note that you are probably looking at
the table in CHS values and these values are derived from the geometry.The
GNU/Linux operating system does not use these values and operates purely
with LBA values.Windows should not be using CHS either, but for some
reason it at least checks this geometry and can be prevented from booting by
them being bad.Changing the drive geometry changes the CHS partition table
because this is a virtualization of the true state of affairs on the drive
which are best described as being mystical.Think of CHS geometry as a
compass.If you change the geometry you have recalibrated where the
needles reference point is and you are no longer looking at true north.

      The solution to this problem is very simple, but it may confuse people
because most people will question why they are seeing strange values
reported from their partition table in CHS format.If you do not trust this
solution or your ability to follow these steps then you should stop and seek
hard disk recovery consulting services.The Fedora Project is in no way
liable for any data loss and this guide is offered without guarantees.You
are taking responsibility for what happens.Now, let us go through the
solution.

      Because only the drive geometry is altered there is no need for manual
intervention in the form of discovering and entry of partition information.
The information in your partition table is correct.However, you need to
alter the geometry entry and normally this would require you to re-enter the
partition table by hand using a tool like fdisk.This is where the
application sfdisk comes to the rescue. Sfdisk can be very powerful in
non-interactive mode, it can output information that can be used as input
elsewhere, and it can accept data as input at run-time.This makes sfdisk
ideal for this solution because you can ask it to read the partition table
and deliver the result in a way that itself can write back when you tell it
to change your drive geometry.This makes the process fast and less prone
to human error as very few values need to be supplied.The solution can be
summed up in a single line with two commands:

      sfdisk -d /dev/hda | sfdisk --no-reread -H255 /dev/hda

      So that the reader may better understand what is going on here, lets go
through what each section does and what the parameters mean.

sfdisk -d /dev/hda

This part runs sfdisk non-interactively and dumps the partition table in a
format that sfdisk can also use for input (as we are doing).Try this
command by itself to see your partition table as it is very safe.You will
want to check to check for warnings in the output.Warnings pose a problem
because they interfere with the use of this data as input. Output containing
a warning may look like the example below:

$ sfdisk -d /dev/hda
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
# partition table of /dev/hda
unit: sectors

/dev/hda1 : start=       63, size= 16771797, Id= 7, bootable
/dev/hda2 : start= 16771860, size=217632555, Id= f
/dev/hda3 : start=      0, size=      0, Id= 0
/dev/hda4 : start=      0, size=      0, Id= 0
/dev/hda5 : start= 16771923, size=104856192, Id= 7
/dev/hda6 : start=121628178, size=112776237, Id= 7


For reasons unknown, using the option -- quiet does not suppress all
warnings so it becomes the task of the user to discover a way to still use
the output as input.The simplest way is to write the output to a plain
text file, editing out the warning in that text file, and using the edited
text file as the input, thus:

sfdisk -d /dev/hda > MyPartitionTable.txt
      editing MyPartitionTable.txt to remove the warnings, saving the edited
text, and
cat MyPartitionTable.txt | sfdisk --no-reread -H255 /dev/hda

The output from "sfdisk -d /dev/hda" should begin like this (this is the
edited version of the example given before):

# partition table of /dev/hda
unit: sectors

/dev/hda1 : start=       63, size= 16771797, Id= 7, bootable
/dev/hda2 : start= 16771860, size=217632555, Id= f
/dev/hda3 : start=      0, size=      0, Id= 0
/dev/hda4 : start=      0, size=      0, Id= 0
/dev/hda5 : start= 16771923, size=104856192, Id= 7
/dev/hda6 : start=121628178, size=112776237, Id= 7

      Note that "cat MyPartitionTable.txt" takes the place of "sfdisk -d
/dev/hda" as these are now equivalent. In this case the warning portion has
been stripped, preserving the needed data used by sfdisk in step two of the
command.

sfdisk --no-reread -H255 /dev/hda

      This portion of the two-part command performs the actual change to your
hard disk.This main operation is in -H255. This tells sfdisk to write a
head count of 255 into the drive geometry.This command executed by itself
would ask for user input of the partition table (just like fdisk).However,
by piping the table we just read in the first command, this is avoided and
work is saved and we know the data is correct (or, at least, unchanged).
This is why sfdisk is used.

      The --no-reread option allows the command to run even when the disk has a
mounted partition.Some users may find they need to further force the
operation to complete. This is done by using --force (sfdisk --no-reread
--force -H255 /dev/hda).

      In this example we are only changing the number of heads in the geometry.
If you know the correct number of cylinders before the Fedora Core
installation changed these values you may also write back this number.   An
example with 14,593 cylinders is provided below.

sfdisk -d /dev/hda | sfdisk --no-reread -H255 -C14593 /dev/hda

      The number of reported sectors (S) should not have changed and remained as
63.

      This is the part most likely to be met with the question "if I change the
number of heads, must I not also change the the number of cylinders?"The
answer to this question is "no."When the geometry was changed the number
of heads changed from 255 to 16 and the number of cylinders was increased to
compensate.As long as the values are large everything should be ok.Only
the pedantic need worry about changing the number of cylinders manually.If
you do not know the value from before you are best off not supplying this
number.

      By using this method there is no need, and indeed you should not, run a
program that wipes the MBR (like fdisk /mbr).Doing so will cause you to
lose the Grub pointer installed in the MBR and you will have to use the
Recovery CD to regain access to your Fedora Core installation.

      Updating Grub after installation seems to have no effect on the drive
geometry as the problem seems strictly limited to the Fedora Core installer.

Good luck and join us on the IRC at #fedora on irc.freenode.net for any
questions you have or contributions to the community you wish to make.

cee1 发表于 2004-7-3 19:17:53

解说:在控制台下:输入"sfdisk -d /dev/hda | sfdisk --no-reread -H255 /dev/hda"回车;不过"For reasons unknown, using the option -- quiet does not suppress all warnings so it becomes the task of the user to discover a way to still use the output as input. "
如果报错,就输入"sfdisk -d /dev/hda > MyPartitionTable.txt"命令,然后编辑MyPartitionTable.txt,使不报错(如何编辑?),保存,输入“cat MyPartitionTable.txt | sfdisk --no-reread -H255 /dev/hda ”命令,回车
我试过,但不知如何编辑使不报错,结果失败;
用xp的光盘重新分区,再安装是不行的(中途会停止);我是用DM,用填充零,填了3%,后重新分区(不过资料都没了,因为分区表破坏了)
注意千万不能用诸如"fdisk /mbr"或是故障恢复控制台中的"fixmbr"或是重装winxp,因为那样会去掉grub,这样fc2也进不去了,ntfs的资料不能读了

cee1 发表于 2004-7-3 19:20:03

fc2的内核没有编进ntfs支持,可以自己重新编译,编译进ntfs支持(不过linux下读ntfs可能会有文件读不出来,即windows可见,linux下不可见
然后用mount -v ntfs /dev/hda1 /mnt/c(在/mnt/下建好c文件夹)
我以前在mdk10.0Beta下也遇到过(后来修理商搞定,不过可能也是这样处理)

kaizen 发表于 2004-7-3 19:26:00

这对我一个新手来讲太难了,既然你遇到了同样的问题你是怎样解决的呢?
****************************************************
“恢复办法: 如果安装FC2后, 无法启动WINDOWS, 屏幕上通常显示:
Rootnoverify(hd0,0)
Chainloader +1
我的是:
“恢复办法: 如果安装FC2后, 无法启动WINDOWS, 屏幕上通常显示:
Rootnoverify(hd0,4)
Chainloader +1
我的linux装在了主分区上,我划了两个主分区

cee1 发表于 2004-7-3 19:34:44

上面的英文文章是FC2社区提出的解决方案,看看能不能(我不知如何编辑,结果失败了,后来是相当于低格处理的,也就是资料丢完)
我也不知如何处理,所以发了一个帖子:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=74147
不过很多人说没遇到过

SJRBQYF 发表于 2004-7-3 19:41:01

我也遇到了这样的问题,安装了linux,在启动是能看见linux和一个other
但是我选择other时却无法进入winxp,错误信息如下:
Booting 'other'
rootnoverify(hd0.4)
chainloader +1
Invald system disk
Replace the disk ,and then press any key

我的Fedora core 2 装在了E盘,现在又重装了XP,但E盘不见了,Fedora core 2也启动不了,哎,还是装其他的LINUX吧,Fedora core 2不好。

cee1 发表于 2004-7-3 19:54:11

很想知道到底如何解决(注意千万不能用诸如"fdisk /mbr"或是故障恢复控制台中的"fixmbr"或是重装winxp,因为那样会去掉grub,这样fc2也进不去了,ntfs的资料不能读了,因为如果重装winxp多半装到一半重启时会失败,而由于grub的丢失,fc2不能进去,就完了)

cee1 发表于 2004-7-3 20:38:24

以下帖子是同一问题:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=74147
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&p=4085706#4085706

kaizen 发表于 2004-7-3 22:37:09

谁有办法啊,我的windows里有很多重要的东西,难道真的要重装???????

jyh 发表于 2004-7-4 00:50:44

我不大明白你的情况,下面几点可能有些帮助
1.有两种在光盘上运行的windows,可以考出winxp数据,有光盘买的。
2.试一下其他引导管理器,如dos下的spfdisk,好多98安装盘里有。
3.试一下easyrecover(?)恢复数据

cee1 发表于 2004-7-4 08:29:16

翻译一、(不好请指教)
原因:Fedora Core2改变了由硬盘分区表所报告硬盘的几何
重要:不要惊慌,并且不要试着使用很多工具去尝试解决这个问题。自动化的工具可能十分危险。不要运行
一个擦写MBR的程序(像是fdisk /mbr; fixmbr)。事实上,只需进行较小和平和的改变。警告:运行第三部分
的应用去恢复一个可启动的windows安装可能导致你失去你的数据.

cee1 发表于 2004-7-4 08:48:04

翻译二、
为那些想在技术了解的人这里有一个简明解说:硬盘驱动器没有被毁并且你的分区表是好的。问题是windows要求一个“健全”的CHS表。这个表已经被Fedora Cores的安装程序改写,所以windows挂起。幸运的是,这个事实上的表,以LBA格式,没有被毁。这些看起来奇怪的分区表,注意到你大概以CHS的观点看这个表并且这些观点源自那个几何结构。GNU/Linux操作系统不使用这些观点并且操作是纯粹以LBA的观点.Windows应该不也用CHS,但由于一些原因,它至少检查这个几何并且启动会由于他们的损坏被阻止.改变硬盘驱动器的几何导致CHS分区表的改变,因为这是一个磁盘驱动上的真实状况的实质上的影响(往往被描述的很神秘);把CHS几何看成一个罗盘。如果你改变这个几何(你已经校准没用的参考点在哪),你就不要找寻那个真实的北边.

cee1 发表于 2004-7-4 09:06:42

翻译三、
解决问题的方法十分简单,但它可能迷惑人们因为大多数人们将会质问:为什么由CHS格式的分区表报告的情况看起来奇怪。如果你不信任这个方法或者你跟随这些步骤的能力,那么你应该停止同时寻求硬盘恢复咨询服务。
这个方法可以总结如下:(控制台的命令)
sfdisk -d /dev/hda | sfdisk --no-reread -H255 /dev/hda
但由于一些未知原因,可能会报错。最简单的方法是把输出写入一个普通的Text文件,如下:(命令)
sfdisk -d /dev/hda > mpt.txt
编辑MPT.txt去除报错保存编辑然后:
cat mpt.txt | sfdisk --no-reread -H255 /dev/hda
解释:
这个由“sfdisk -d /dev/hda"输出的开头应该像这样(这是一个前边给的例子的编辑好的版本):
# partition table of /dev/hda
unit: sectors

/dev/hda1 : start= 63, size= 16771797, Id= 7, bootable
/dev/hda2 : start= 16771860, size=217632555, Id= f
/dev/hda3 : start= 0, size= 0, Id= 0
/dev/hda4 : start= 0, size= 0, Id= 0
/dev/hda5 : start= 16771923, size=104856192, Id= 7
/dev/hda6 : start=121628178, size=112776237, Id= 7
(对比,前文例子中提到的未编辑的txt文件的内容(含紧告)
$ sfdisk -d /dev/hda
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
# partition table of /dev/hda
unit: sectors

/dev/hda1 : start= 63, size= 16771797, Id= 7, bootable
/dev/hda2 : start= 16771860, size=217632555, Id= f
/dev/hda3 : start= 0, size= 0, Id= 0
/dev/hda4 : start= 0, size= 0, Id= 0
/dev/hda5 : start= 16771923, size=104856192, Id= 7
/dev/hda6 : start=121628178, size=112776237, Id= 7   
注意"cat mpt.txt"代替了"sfdisk -d /dev/hda"它们是等价的。以这方法这个警告被除去。保留有用的
数据用sfdisk在命令第二步(上文提到的)"sfdisk --no-reread -H255 /dev/hda"

kaizen 发表于 2004-7-4 12:43:51

我有几个问题,
1.sfdisk -d /dev/hda | sfdisk --no-reread -H255 /dev/hda
是dos下的 还是linux下的啊?
2.要怎样才能使其不报错,是不是每个人mpt.txt的正确内容不一定相同

cee1 发表于 2004-7-4 12:46:04

是linux下的;对比一下两个txt的内容(上文例子),发现有什么不同
页: 1 2 [3] 4 5 6
查看完整版本: vwinxp无法启动了(在线等)急啊!!!