Boot error after changing FAT32X cluster size
#1
Posted 27 February 2007 - 11:36 AM
My C: Windows boot disk is formatted with FAT32X (partition id 0x0c) with default cluster size 32KB.
Using Partition Magic 8 (PM8), Advanced function/Resize cluster size, PM8 shows different waste space
depending on cluster size. So by changing to 16KB-cluster size I can gain about 2GB. Since I am short on free disk space on C:,
I decided to change the cluster size to 16KB.
OK so I boot BartPE then run Partition magic from there. PM8 resizes the C: disk OK without any problem (about 5 mn
on 20GB C: disk). But upon reboot I got a garbage string (about 15 characters) at boot, and the system is hang (blinking cursor). The gargage
string is of course not readable, it is probably a message displayed but with wrong offset so I got binary data.
By rebooting with BartPE and run PM8 again, no problem with my C: disk, all files are accessible, everything OK, no problem
in partition tables etc... so far.
I checked the MBR and the boot sector of C:. The MBR is untouched, but the boot sector has been changed.
The 3 differences in boot sector are certainly due to new cluster size. Here are the data (new cluster 16KB / old cluster 32KB)
sectors by cluster 32/64
big sectors/FAT 10160/5088
first cluster of root 85/202
In Hex:
offset 0x0d 20/40
offset 0x24 b027/e013
offset 0x2c 55/ca
I had to restore the entire drive from my previous backup, and so now I still have 32KB-cluster size.
Does anyone have an idea/explanation of the boot problem? Wrong place of boot sector code by Partition magic ? PM8 does not issue any error.
Can it be due to fragmentation? I did check with 'contig' command and my ntdectect.com/ntdlr are contigous (= 1 fragment).
I searched Google and found one similar case of reboot problem after cluster resize with Partition magic, but there is no answer.
#2
Posted 27 February 2007 - 12:50 PM
sectors by cluster 32/64
big sectors/FAT 10160/5088
first cluster of root 85/202
The first value is OK:
32*512=16Kb
64*512=32KB
The other two dont seem correct.
If you have 10160 big sectors 16Kb in size, you should have 5080 32Kb ones.(10160/2) Maybe a typo by you?
The problem might lie in the third value, since you have first cluster of root at 85 it should become 42.5 ??, maybe PM automatically relocates it?
You can try using (with GREAT caution, DO NOT set FINDPART=edit) the program FINDPART, here:
http://www.partition...m/utilities.htm
Commands like:
Findpart finddir N 0 10
Findpart findfat N
(please be careful, FINDPART numbers disks N starting with 1 instead of 0)
Can help in veryfying the right value for ROOT.
By running this utility on the disk "as-is" and once re-applied PM8 to it you should be able to get the right values.
For the record, I was a great fan of PM up to version 5, then, once version 6 almost made me lose all data (it took 3 days of manual recovery, AFTER one nightof automated one, to get them back), I learned to stay clear of it.
jaclaz
#3
Posted 27 February 2007 - 02:46 PM
Thank you for your link, but findpart did not give anything interesting, the syntax has also changed.
5088 is the right value, it is not a typo. And my C: disk is bootable.
---
Findpart, version 4.81 - for Windows 95/98/ME/NT/2000/XP.
Copyright Svend Olaf Mikkelsen, 1999-2006.
Searches for lost partitions. Nothing is written to the disk.
Findpart <disk number> (numbered from 1)
Findpart <disk number> -fat (exclude FAT search)
Findpart all (search all disks)
Findpart all -fat (exclude FAT search)
Findpart tables (list partition tables)
For output explanation, see
http://www.partition...titionnotes.htm
Findpart for Windows includes the functionality of the
utilities FindNTFS, GB32, Chsdir, Editpart, Findfat, Getsect,
Putsect, Cyldir, Finddir, Findext2, Findbad and Pqrp. For usage
type Findpart followed by the utility name. For editing commands
the findpart environment variable must be set to edit.
The report can be written to a file. Add the filename to the
command line. File extension must be .txt. To append to current
report file, use +<filename>.
findpart tables gives:
OS: Windows 5.1.2600 Service Pack 2 Partition tables:
Disk: 1 Cylinders: 12161 Heads: 255 Sectors: 63 MB: 95393
--PCyl N ID -----Rel -----Num ---MB --Start CHS- ---End CHS-- BS CHS
0 1 12 63 6152832 3004 0 1 1 382 254 63 OK
0 2*0C 6152895 41576220 20300 383 0 1 2970*254 63 OK OK
0 3 0C 47729178147637287 72088 2971* 1 1 12160*254 63 OK OK
---
Here are the boot sector for my current 100 GB C: disk with FAT32X. Boot sector content seen by ptedit32. It is bootable.
Jump EB5890
OEM name MSWIN4.1
bytes per sector 512
Sectors per cluster 64
Reserved sectors 32
Number of FATs 2
Reserved 0000
Reserved 0000
Media description F8
sectors per FAT 0
Sectors per track 63
Number of heads 255
Hidden sectors 6152895
Big total sectors 41576220
big sectors per FAT 5088
extended flags 0000
FS version 0000
First cluster of root 202
FS info sector 1
Backup boot sector 6
reserved 000000000000 (lot of zeroes)
drive id 80
reserverd for NT 01
Extended boot sig 29
Serial number 59c8b313
Volume name ACER
file system id FAT32
signature 55aa
I also uploaded a zip containing the MBR and the 2 boot sectors (16KB-cluster, 32KB-cluster) so in case
if you have time to look at them:
http://www.mediafire.com/?2xzmzezeztk
#4
Posted 27 February 2007 - 08:03 PM
Thank you for your link, but findpart did not give anything interesting, the syntax has also changed.
Well, it doesn't seem like changed from last time i used it a few hours ago...., you won't get anything useful with "findpart tables".
Do issue the commands as I told you, or just:
Findpart finddir
and
Findpart chsdir
(to see that I did not lie to you )
then re-run them with the appropriate parameters and post results.
jaclaz
#5
Posted 27 February 2007 - 08:23 PM
>findpart finddir 1 0 10
Finddir, version FP 4.81.
Copyright Svend Olaf Mikkelsen, 2006.
Searches for subdirectories and calculates cluster two
location. 'Cluster' is cluster number or cluster 2 CHS.
'KB' is cluster KB. May also say something about FAT location.
OS: Windows 5.1.2600 Service Pack 2
Disk: 1 Cylinders: 12161 Heads: 255 Sectors: 63 MB: 95393
Start cylinder: 0 End cylinder: 10
--------- CHS ----- LBA -- Cluster (2) ----- LBA -KB YYMMDD
0 0 1 0 searched
0 227 27 14327 281 040817
0 228 20 14383 0 191 63 12095 4 040817
0 228 36 14399 0 191 63 12095 4 040817
0 228 60 14423 0 191 63 12095 4 040816
0 234 58 14799 0 191 63 12095 4 040830
0 241 1 15183 0 191 63 12095 4 040816
0 246 38 15535 0 191 63 12095 4 040830
0 252 36 15911 0 191 63 12095 4 040816
1 3 50 16303 0 191 63 12095 4 040830
1 9 40 16671 0 191 63 12095 4 040816
1 15 46 17055 0 191 63 12095 4 040816
1 21 60 17447 0 191 63 12095 4 040816
1 27 58 17823 0 191 63 12095 4 040816
1 34 9 18215 0 191 63 12095 4 040817
1 40 23 18607 0 191 63 12095 4 040817
1 46 45 19007 0 191 63 12095 4 040817
1 177 16 27231 0 191 63 12095 4 030807
1 177 24 27239 0 191 63 12095 4 040817
1 177 40 27255 0 191 63 12095 4 030807
1 177 48 27263 0 191 63 12095 4 030807
1 177 56 27271 0 191 63 12095 4 030807
1 178 1 27279 0 191 63 12095 4 030807
1 178 9 27287 0 191 63 12095 4 030807
1 178 17 27295 0 191 63 12095 4 031003
1 207 53 29158 1808 990401
1 216 61 29733 1 179 11 27352 0.5 040217
------FAT CHS ------LBA Confidence Distance Type Sig
0 1 39 101 4965 32 OK
0 96 51 6098 4965 5997 32 OK
>findpart findfat 1
Findfat, version FP 4.81.
Copyright Svend Olaf Mikkelsen, 2006.
Searches for FAT's and gives an estimate of the condition.
Only some types of errors are detected. FAT size in sectors.
'Cl' is cluster KB. 'Root' is size in entries for FAT16 and
root cluster for FAT32. 'Rep.' is probably repairable. 'Bad'
can be not easy repairable FAT sectors. DataMB is an estimate.
OS: Windows 5.1.2600 Service Pack 2
Disk: 1 Cylinders: 12161 Heads: 255 Sectors: 63 MB: 95393
------FAT CHS -Size Cl --Root -Good -Rep. Maybe --Bad YY-MM-DD DataMB
0 1 39 5997 4 2 5997 0 0 0 03-08-07 2483
383 0 33 5088 32 202 5088 0 0 0 04-08-05 16344
2971 1 33 Second FAT not found.
Chsdir, version FP 4.81 - for Windows.
Drive C:
Directory listing:
>findpart chsdir c: (excerpt)
ACER <VOL> 08-13-2004 16:58:46 0
I386 <DIR> 06-15-2005 17:31:30 203
VALUEADD <DIR> 08-05-2004 05:00:00 19171
DOTNETFX <DIR> 08-05-2004 05:00:00 19552
PRELOAD AAA 75 07-29-2005 18:07:08 20871
CONFIG MSI <DIR> 09-15-2006 04:40:44 214068
PAGEFILE SYS 1610612736 02-27-2007 07:11:20 196610
FMAINT <DIR> 04-15-2005 10:41:32 528031
BOOK <DIR> 06-15-2005 17:31:24 26030
SYSINFO <DIR> 06-15-2005 17:31:24 26125
WINDOWS <DIR> 06-15-2005 17:31:28 26132
BOOTFONT BIN 4952 08-05-2004 05:00:00 78357
NTLDR 251712 08-05-2004 05:00:00 78358
NTDETECT COM 47564 08-05-2004 05:00:00 78366
BOOT INI 237 02-15-2007 13:06:12 65953
DOCUME~1 <DIR> 07-28-2005 17:35:38 78369
PROGRA~1 <DIR> 07-28-2005 17:43:16 79167
CONFIG SYS 0 07-28-2005 17:44:18 0
MENU LST 5054 02-20-2007 18:43:04 75878
IO SYS 0 07-28-2005 17:44:18 0
MSDOS SYS 0 07-28-2005 17:44:18 0
SYSTEM~1 <DIR> 07-28-2005 17:48:22 105732
GRLDR 167328 12-28-2006 21:20:38 72816
RECYCLED <DIR> 07-29-2005 18:06:26 105735
ACER <DIR> 10-26-2005 15:58:52 222899
XXX INI 44 10-26-2005 16:13:32 214159
USER <DIR> 10-27-2005 03:34:32 21883
#6
Posted 28 February 2007 - 11:34 AM
It can change cluster size from 32KB to 16KB, everything executed OK but on reboot
I got exactly the same problem as with PM8 described in my first post! Then I try to use ADD10
to change back from 32KB to 16KB but then same problem on boot.
So the only solution was to restore entirely my C: volume from my backup. Note: by the way thanks
to my multi-bootable USB key made from many discussions from this forum and other, that I can boot
UBCD4Win then use backup/restore software to restore my C: drive. Two hard restores in 2 days!
So the question remains: why PM8/ADDD10 do not see any error, they did not see that the disk is not bootable
or exactly bootable but with boot error?
Maybe jaclaz with the data I provided can have an explanation.
#7
Posted 28 February 2007 - 10:27 PM
I know this is not really helpful. Sorry.
PS: PM is very picky, it even complains about errors that don't matter. So if PM is not giving you any error messages, when it starts. Then there are no partition errors.
Did you have chkdsk checking your partition?
Do you use a boot manager?
I have never used FAT32. Does anyone know if the fat-table would have to be resized for this operation?
#8
Posted 01 March 2007 - 04:33 AM
During initial stages of the boot, Win uses BIOS int 13h with CHS addressing.Hello all,
Does anyone have an idea/explanation of the boot problem?
If some of boot-time files became "too far" (cluster numer too big) they could not be accessible. Win boot loader is poorly written
Alexei
Edited by Alexei, 01 March 2007 - 04:57 AM.
#9
Posted 01 March 2007 - 04:40 AM
Did you have chkdsk checking your partition?
Do you use a boot manager?
I have never used FAT32. Does anyone know if the fat-table would have to be resized for this operation?
Of course, everything was OK apart from boot error. chdksk gives no error, check errors from inside PM8 no problem, from Acronis Disk Director no problem.
I also have an external USB disk used as storage data, and occasionnally for booting BartPE. Since I also change it to cluster size 16KB, it no longer boots, but it is not important since it not my primary boot. As storage device, there is no problem, no file system error etc... Only the boot problem, but in this case it gives me a blinking cursor at boot (instead of garbaged string).
#10
Posted 01 March 2007 - 06:46 AM
During initial stages of the boot, Win uses BIOS int 13h with CHS addressing.
If some of boot-time files became "too far" (cluster numer too big) they could not be accessible. Win boot loader is poorly written
Alexei
Thank you Alexei, this seems to be the right explanation, so PM8 and the latest Acronis Disk Director 10 has fulfilled their job
but they did not aware or check about the big cluster number for boot-time files.
From findpart chsdir output prviously, the ntldr and ntdetect.com
are with big clustenr number :
NTLDR 251712 08-05-2004 05:00:00 78358
NTDETECT COM 47564 08-05-2004 05:00:00 78366
It would be interesting that someone can post the output from findpart chsdir c: here to compare the cluster number for
those 2 files on his/her machine. (you need to redirect the output to a file, let it run some seconds, then ctrl-c to interrupt it since
the output is huge).
So maybe I have to find an utility to relocate those files to get a smaller cluster number.
Since I have the USB external hard disk that no longer boots, I will check whether the 2 mentioned files are with
big cluster, then relocate them, and try to boot. The experimentation will be easy since I have another machine where
I can plug-in the USB2 external disk.
Could someone point to me an utility that can relocate specific files to get smallest cluster number (I assume it is equivalent
to get the files closer to cylinder 0?).
Edit: in fact with cluster number 78358/78366 above my system boots (32KB cluster), so I need to take the values with 16KB cluster
for comparison. If the explanation is correct, the value would then be greater ? Anyhow an utility to relocate specific files to a location
closest to cylinder 0 (to get smallest cluster number) is needed.
Find some interesting articles:
for NTFS
http://www.jsifaq.co...ip.aspx?id=0652
Another article:
http://www.diskeeper...=2001020538.htm
"A: The only really safe way and Microsoft-recommended way of changing cluster
sizes is to reformat. Unfortunately, as you've discovered, you can't reformat
your "C:" drive while the system is up. It must be taken to another machine, in
fact, since it contains your boot.ini, NTDetect.com and NTLDR files."
#11
Posted 01 March 2007 - 09:16 AM
1024x255x63x512=8,422,686,720
Cluster 78358 with cluster size 64 sectors should mean roughly:
78358x64x512+202x64x512+63x512=2,574,286,336
So that it should be well within accessible space.
And yes, ktp, maybe with the same output of findfat once 16k sectors are made it would be possible to find an explanation.
jaclaz
#12
Posted 01 March 2007 - 09:27 AM
In the meantime I deleted ntldr/ntdetect.com etc... on the disk, have a lot of file movements (copy/delete) on other directory, and
now put back ntldr/ntdetect.com on root of the disk, and it is not bootable. Maybe those following figures could explain?
Drive L:
Directory listing:
\
TRAVEL1 <VOL> 02-13-2006 07:01:46 0
BOOT INI 1247 02-24-2007 20:16:16 4609344
GRLDR 167328 12-28-2006 21:20:38 4609345
MENU LST 11695 02-28-2007 11:28:08 4609428
NTDETECT COM 47596 02-04-2007 22:57:30 4609429
NTLDR 251712 08-05-2004 05:00:00 4609432
On this disk the first cluster of root 1112119
Mimic jaclaz algorithm:
Cluster 4609432 with cluster size 32 sectors should mean roughly:
4609432 x 32 x 512 + 1112119 x32x512 + 63x512 = ???
----
So I convert cluster size from 16kb to 32kb:
The data are now:
External USB2 HDD with 32KB-cluster:
first cluster of root 556656
big total sectors 156360582
big sector for fat 19115
Drive L:
Directory listing:
\
TRAVEL1 <VOL> 02-13-2006 07:01:46 0
BOOT INI 1247 02-24-2007 20:16:16 968264
GRLDR 167328 12-28-2006 21:20:38 2305269
MENU LST 11695 02-28-2007 11:28:08 968342
NTDETECT COM 47596 02-04-2007 22:57:30 2305311
NTLDR 251712 08-05-2004 05:00:00 968347
Cluster 968347 with cluster size 64 sectors should mean roughly:
968347 x 64 x 512 + 556656 x64x512 + 63x512 = ???
I tried again, and the disk still does not boot (only blinking cursor).
#13
Posted 01 March 2007 - 11:33 AM
NTDETECT.COM is on cluster 4609429, since it is 47596 byte, it should take 3 16K clusters, and following it there is NTLDR at cluster 4609432NTDETECT COM 47596 02-04-2007 22:57:30 4609429
NTLDR 251712 08-05-2004 05:00:00 4609432
Then you change cluster sizes:
and evidently files are moved, and are no longer one after the other.NTDETECT COM 47596 02-04-2007 22:57:30 2305311
NTLDR 251712 08-05-2004 05:00:00 968347
I guess the only way to find someting is to start from fresh.
1) Wipe a disk
2) Partition and format it Fat32 32K
3) Copy to it just NTLDR, NTDETECT.COM and BOOT.INI
4) Check it boots, and get findfat info
5) Change clusters to 16K, check ift boots, get findfat info.
Another "just for the record" note: since 1995 I ALWAYS followed Gilles Vollant's advice of making just one small FAT16 bootable partition and never regretted that:
http://www.winimage.com/bootpart.htm
jaclaz
#14
Posted 01 March 2007 - 12:03 PM
Another "just for the record" note: since 1995 I ALWAYS followed Gilles Vollant's advice of making just one small FAT16 bootable partition and never regretted that:
http://www.winimage.com/bootpart.htm
jaclaz
OK this means you have a small FAT16 partition with just ntdetect.com/ntldr, boot.ini on this partition?
So it is called C: and you windows is on the second partition and named D: ?
#15
Posted 01 March 2007 - 02:58 PM
http://www.msfn.org/...showtopic=22526
http://www.msfn.org/...showtopic=23484
http://www.msfn.org/...showtopic=33964
Of course for XP, and with new largish hard disks, sizes of partitions might need to be adapted, as well as the partitioning scheme.
As I see it the smallest (and thus the more) volumes you make, the better, you have a distinctive advantage when defragging volumes and you automatically learn to put files in the "proper" place, rather than "somewhere" on a BIG C : \ partition.
jaclaz
#16
Posted 01 March 2007 - 04:51 PM
BOOTPART WINNT BOOT:L:
but apparently only C: is allowed !
The problem is I want to format my USB2 HDD 80GB with FAT32, XP built-in formatter does not allow this (only NTFS).
So I have to use PM8, but unfortunately PM8 use io.sys type boot sector. So I need to replace this ios.sys-type boot sector with ntldr-type
I found a workaround: format my HDD with PM8 with NTFS, then use convert function to convert to FAT32, this preserve the boot sector with ntldr-type.
#17
Posted 01 March 2007 - 10:10 PM
ktp, you're not using any bootmanager, except for the one that comes with XP?
PS: The fact that the same thing happend when you changed the sector size on your USB HD. Worries me the most. Identical error never occur by chance, but always by design.
Since you've used already 2 different programs. I think the problem is somehow created by you. Eighter now or when you created the partitions.
Come on be honest. You did something weird, right?
#18
Posted 02 March 2007 - 05:11 AM
Guys, if you're thinking that the new high address values causes the problem, i think you're on the wrong way.
ktp, you're not using any bootmanager, except for the one that comes with XP?
PS: The fact that the same thing happend when you changed the sector size on your USB HD. Worries me the most. Identical error never occur by chance, but always by design.
Since you've used already 2 different programs. I think the problem is somehow created by you. Eighter now or when you created the partitions.
Come on be honest. You did something weird, right?
I use standard XP boot manager (via boot.ini).
Nothing weird done by me. I could not afford to waste my time (at high risk) to restore my hard disk twice like that.
For the free disk space problem which is the base of this thread requiring changing cluster size, I use a bypass : set the XP swap file to another
partition (instead of C:, so now my C: has greater free disk space (> 2GB), so the need for changing cluster size can be put on hold
("abandon the game" as jaclaz used to said ).
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users