Interesting, it seems like the xp boot code does not care that much about the actual geometry listed in the MBR. I left those values 'wrong' namely 254 etc, aka 255/63 balanced.
I only changed the BPB value for the heads to 128, same for the bootsect.dat. Now the xp install drive boots like a charm... Perhaps it just notices that the values in the mbr are higher then the max values based on 128 heads and it resides on using LBA?
Or...
It is not the BIOS switching to CHS, it is the code in the PBR.
Do you mean by this, that the MBR geometry values are ignored, when determining whether or not to use CHS?
Does the XP boot code only read the number of heads in the BPB and reside to use CHS accordingly? This would indeed explain why I would not boot before, the bios got a number of heads bigger then 128 and did know where to look for the ntldr. So this does not actually seem like a balancing issue. Apparently the bios boots fine onto the drive despite the geometry as described in the MBR seems 'weird' to it. I guess the bios just thought: 'dont understand, let's use LBA'. It probbably was only the xp boot code that thought it was a good idea to look for the NTDLR using 255 heads chs. This way, none of them check whether or not the entire partition is equally large using chs/lba. I'll test if this is true, by changing the MBR CHS values to make them no longer 255/63 balanced (but ill still use more than 128 heads, in order for the bios to switch to lba).
After this test I'll try the things you suggested.
*edit*
Ok, so as long as 128 heads are suggested by the BPB, this partition table boots fine:
While the CHS end values are clearly messed up (even the starting sector!). However, because the values seem 'weird' to the 128 heads bios, it happily switches to LBA. Microsoft should try this as well, switching to LBA when CHS fails
*edit2*
Now I am curious... would the bios be smart enough to switch to lba if the number of heads stays below 128, but the start and end sector CHS are completely wrong. I'll test one more time, with eHead=120
*edit3*
It actually is that smart
It did boot the 120 eheads drive just fine. I am starting to suspect it will always use LBA if it is supported by the MBR. Wich makes it even weirder that it would care about the MBR1P63S chs start sector =/
Why check CHS before deciding to boot the MBR when you run LBA anyway?
*edit4*
Use disk editor to edit the first sector of the disk.
Install MBR1P63S
Run RMPrepUSB
Seelct USB drive and Press CTRL-D
Set Start=0 No Sectors=1
Click Sequential Read
Click Display and Edit Buffer
Change text that is displayed
01B0 07 B4 0E CD 10 C3 00 00 - 00 00 00 00 00 00 80 00 .´ÍÃ.. ......€.
01C0 01 00 0B FE 7F EE 3F 00 - 00 00 F0 56 79 00 00 00 ...þî?. ..ðVy...
change to
01B0 07 B4 0E CD 10 C3 00 00 - 00 00 00 00 00 00 80 00 .´ÍÃ.. ......€.
01C0 02 00 0B FE 7F EE 3F 00 - 00 00 F0 56 79 00 00 00 ...þî?. ..ðVy...
Click on Write Using Buffer
Exit
I did this. It boots fine and displays the same results as seen before (128 heads, 812 cylinders).
What does this flip from 01 to 02 imply?
Edited by Fiction, 10 February 2013 - 11:50 AM.