> Disk: sd0 geometry: 3935/64/32 [8060926 Sectors]
> Offset: 0 Signature: 0xAA55
> Starting Ending LBA Info:
> #: id C H S - C H S [ start: size ]
> ------------------------------------------------------------------------
> 0: 0B 0 1 32 - 3935 63 17 [ 63: 8060850 ] Win95 FAT-32
> 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
> 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
> 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
Ah, I now understand. Windows is assuming that each track has 63 sectors,
and apparently requires that each partition fills an integer number of
tracks. The ending CHS values are chosen so that the maximum number of
63-sector tracks are filled.
So, to create the appropriate MBR partition for a drive, type the
following (I assume that the drive is device sd0):
# fdisk -i -e sd0
fdisk: sysctl(machdep.bios.diskinfo): Device not configured
-----------------------------------------------------
------ ATTENTION - UPDATING MASTER BOOT RECORD ------
-----------------------------------------------------
Do you wish to write new MBR and partition table? [n] y
Enter 'help' for information
fdisk: 1> print
Disk: sd0 geometry: 3935/64/32 [8060926 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
*3: A6 0 1 1 - 3934 63 32 [ 32: 8058848 ] OpenBSD
Take careful note of the total number of sectors (8060926 in this case).
Let NUM be the number of sectors divided by 63, rounded down to the
nearest integer. Then, let SIZE be
63*(NUM - 1)
In this example, NUM is 127951 and SIZE is 8060850. Continue as follows:
fdisk: 1> edit 3
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
*3: A6 0 1 1 - 3934 63 32 [ 32: 8058848 ] OpenBSD
Partition id ('0' to disable) [0 - FF]: [A6] (? for help) 0
Partition 3 is disabled.
fdisk:*1> edit 0
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 0B
Do you wish to edit in CHS mode? [n] n
offset: [0] 63
At the next prompt, enter the number SIZE that we had previously
calculated.
size: [0] 8060850
fdisk:*1> print
Disk: sd0 geometry: 3935/64/32 [8060926 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 0B 0 1 32 - 3935 63 17 [ 63: 8060850 ] Win95 FAT-32
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
fdisk:*1> quit
Writing current MBR to disk.
And notice that the 3935 that I could not explain is immediately accounted
for. The problem is solved!