Sysinstall trashes vista-created partition table (8.0-Release/AMD64)

Kent Hauser kent at khauser.net
Thu Apr 15 22:16:43 UTC 2010


I have just spent an inordinate amount of time running down a bad sysinstall
bug. Please let me share the results.

I just replaced my boot disk on a vista / freebsd dual boot system. I
replaced a failing 250G drive with a 2T drive. My motherboard is an Intel
DP35DP (and crucially had AHCI enabled).

After restoring Vista, I used the vista storage snapin to allocate 3 100G
partitions at the start of the disk assigning the remainder of the disk to a
big NTFS partition.

Vista was already on the first 100G partition. I installed FreeBSD from
8.0-Release/AMD64 on the second. Upon rebooting, the computer would not even
boot to the Blue BIOS screen. (It only showed a small cursor in the first
screen position). I could only get to the BIOS screen if I removed the drive
SATA data cable or moved the Motherboard jumper to the "Configuration"
setting. (Disabling AHCI also works, but I didn't know this at the time.)

Turns out the problem was sysintall. It doesn't like the partition table
entries Vista generates, so it creates bogus ones (which hang the
motherboard). If sysinstall partitions the disk, there is one oddity, but
the motherboard still boots. The details are show below:

1. Sysinstall creates 2 100G partitions on an empty disk.

Procedure: Boot FreeBSD install. When partitioning disk, delete all existing
partitions. Then create a 100G partition (type = 7 for NTFS). Then create a
second 100G partition (type 165 for FreeBSD).
Install FreeBSD on second partition. Install Vista on first partition (from
Vista DVD). Install EasyBCD in Vista & use it to add FreeBSD to boot menu.
You're good to go & your partition table looks like this:

(Using fdisk from FreeBSD live-DVD)

Geometry: Cyl = 3876021, Heads = 16, Sectors/Track = 63 (1008 Blocks/Cyl)

Partition Entry 1:
SysID=7 (NTFS) Start = 63, Size = 209714337, Flags = 80 (Active)
Start CHS = 0 / 1 / 1, End CHS = 1023 / 15 / 63

Partition Entry 2:
SysID=165 (FreeBSD) Start = 209714400 Size = 207714400, Flags = 0
Start CHS = 1023 / 255 / 63 End CHS = 1023 / 15 / 63

*** Note Partition 2 start CHS is odd. But the system still boots.

2. Vista creates 2 100G partitions on an empty disk.

Procedure: Boot Vista DVD (mine was 64bit version, pre-sp1).
Remove existing partitions as follows: Enter the repair mode, select command
line interface, use "diskpart" command, then "select disk 0", "clean", and
"exit". Close repair window & return to install.
At the install disk page, use advanced / new partition & create a "100000"
MB partition. Install Vista on this.

After vista installs, use "administrative tools / computer management /
storage" to create a  new "simple volume" of 100G (no format) which we will
use to install FreeBSD.

Reboot into FreeBSD install disk & use fdisk in Fixit to examine partition
table:

** Vista created partition table before sysinstall destroys it **

Geometry Cyl = 3876021, Heads = 16, Sectors/Track = 63 (**Unchanged from
above)

Partition Entry #1:
SysID=7 (NTFS) Start=2048, Size = 204800000, Flags = 80
Start CHS = 2 / 0 / 33, End CHS = 1023 / 15 / 63

Partition Entry #2
SysID=6 (DOS) Start = 204802048, Size = 204800000, Flags = 0
Start CHS = 1023 / 15 / 63, End CHS = 1023 / 15 / 63

Exit Fixit & install FreeBSD. In partition display, select second 100G
partition & change type from 6 to 165. Install no boot manager (MBR
untouched) & complete install.

Since you can't re-enter fixit after installing, reboot FreeBSD install CD &
examine partition table

** Partition table after sysinstall trashes it **

Partition Entry #1:
SysID = 7 (NTFS) Start = 2048, Size = 204800000, Flags = 0
Start CHS = 2 / 0 / 33, End CHS = 1023 / 10 / 10

(*** Note sysinstall trashed end CHS above for no particular reason)

Partition Entry #2:
SysID = 165 (FreeBSD) Start = 204802048, Size = 204800000, Flags = 0
Start CHS = 1023 / 255 / 63, End CHS = 1023 / 3 / 51

(*** Note sysinstall generated an odd beginning CHS entry & even odder end
CHS entry)

As a bonus bug, fdisk helpfully reinitializes the partition table to a
FreeBSD only setup when you try to edit the table.
If you put the partition table back like it is supposed to be, everything
boots & works correctly.

...now where was I before stepping on this landmine...

Kent


More information about the freebsd-bugs mailing list