View Single Post

   
  #6 (permalink)  
Old 01-17-2008, 05:51 PM
John Reiser
 
Posts: n/a
Default Re: partition 1 does not end on cylinder boundary

matt hegarty wrote:
> John Reiser <jreiser@BitWagon.com> wrote in message:
>
> Many thanks for your replies chaps.
>
> Given that I'm quite inexperienced, I think my best option is to try
> and get Partition Magic working. I suppose that by following John's
> advice this might be possible, so I have a couple of questions from
> here.


Do you have a complete, working backup of the NTFS data? Did you test
the restore process and all the media? Back it up again. I mean it.
It will be the best 21 CD-R (or 3 DVD-R) [and few hours] you ever spent.

>>re-create the /boot and NTFS partitions [in order] by entering _exactly_
>>the right numbers to describe where they were [are],

>
>
> Sorry but I don't understand what is meant here. Where do I find the
> numbers to describe the correct locations for the partitions?
>


_IF_ this table [from my previous message] is correct:
=====
disk /dev/hda: 255 heads, 63 sectors, 3736 cylinders
--lowest--- ---highest-- ---LBA--- --sectors-
Nr Af Hd Sec Cyl Hd Sec Cyl Start Size Id
0 1 0 0 1 0 0 1 MBR (Master Boot Record)
0 2 0 0 63 0 1 62 rest of 1st track; reserved
1 00 1 1 0 254 63 6 63 112392 83 ext2/ext3 54.9MB /boot
0 1 7 0 63 7 112455 63 0 unused track [partitioning mistake]
2 80 1 1 7 254 63 1910 112518 30587697 07 NTFS 14.9GB Windows [not on Cyl boundary]
0 1 1911 254 63 3735 30700215 29318625 0 14.3GB unused rest of disk
=====
then the first partition [/dev/hda1, /boot] is from C/H/S 0/1/1 [LBA 63]
through C/H/S 6/254/63 [LBA 112454], and the second partition [/dev/hda2, NTFS]
is from C/H/S 7/1/1 [LBA 112518] through C/H/S 1910/254/63 [LBA 30700214].
The ending points are just _before_ C/H/S 7/0/1 [LBA 112455] and
1911/0/1 [LBA 30700215], respectively.

>>write out the partition table, exit, reboot. Re-run fdisk,
>>print the partition table, check it.
>>Boot a Linux rescue disk, run fsck on both partitions.

>
>
> So presumably if this works OK, my partition table will be restored to
> some semblance of normality, meaning I can recover the situation from
> there by running Partition Magic? Or if not, what is the goal of
> performing these operations?
>

I'm guessing that Partition Magic will still complain because the NTFS
partition does not start on a cylinder boundary. However, the goal of
doing these operations is to see if the filesystem consistency checkers
available under "linux rescue" can verify the existence of good on-disk
structure [filesystems] when given a partition table which describes
where we think the partitions actually live. If the filesystems check
OK, then we proceed. If the filesystems do not check OK, then either
the filesystem data has been destroyed, or the presumed partition table
is incorrect. If a different [better] partition table cannot be
reconstructed, then the only choice is to go back to the very beginning,
start with an empty partition table, create cylinder-aligned partitions,
and restore the NTFS filesystem from the backups [that's why backups
are so important!!]

>
>>[If you want Partition Magic to work, my guess is that you'll have to
>>align the NTFS partition to a cylinder boundary.]


Suppose that the partition table above describes filesystems that check OK.
Then change the partition table so that for the NTFS partition, fdisk says
2 80 0 1 7 254 63 1910 112455 30587760 07 NTFS
which is one track (63 sectors larger) at the beginning: the one track
of free space before the old NTFS partition has been concatenated onto
the front of the NTFS. Boot "linux rescue" then slide the old NTFS partition
data to the beginning of the new on-disk partition using
dd if=/dev/hda2 bs=63b skip=1 of=/dev/hda2
The "bs=63b" means use a blocksize of 63 disk blocks [sectors]; 'b' means
512-byte "blocks", and 63 is the number of sectors per track. See "man dd".
This will take about 50 minutes to transfer 14.9GB in + 14.9GB out at 10MB/s,
plus _another_ 50 minutes if it misses revolutions by not being fast enough.
[Sometimes the transfer rate is not so large, so don't give up too soon.
If you quit too soon, then the NTFS on disk will be destroyed.]
The resulting NTFS partition will be cylinder-aligned at both the beginning
and the end, and will have the same [correct] contents as the old NTFS
partition in the first (30587760 - 63) sectors, and will have garbage in
the last 63 sectors. Run NFTS fsck (or scandisk under Windows) to clean
up the tail end of the partition. The expected diagnosis is something like
"63 missing sectors" and the expected action is "63 missing sectors added
to the free list."

>
> Please can you clarify this for me. How do I determine the cylinder
> boundary?
>

A cylinder boundary is C/H/S of any/0/1, which is equivalent to an LBA
that is divisible by (63 * 255) which is 16065.


[Obviously, you are engaging in risky business here. If your electrical
power fails, if your machine overheats because you are running it with
reduced cooling because you have the covers off, if you forgot to tell
us everything, or left out something important, then we cannot help you.
Backup your data first!]

--



Reply With Quote