Thu Apr 17 20:07:32 EDT 2008

fixmbr problems

i suspect fixmbr changed the partition table to heads=15 from
heads=255, so the disk won't boot any more.

this is what cfdisk reports:

                          Size: 4325529600 bytes, 4325 MB
                Heads: 15   Sectors per Track: 63   Cylinders: 8940

    Name        Flags       Part Type  FS Type           [Label]           Sectors
    hda1                     Primary   Linux swap / Solaris                 250425
    hda2        Boot         Primary   Linux ReiserFS                      8197875

something is starting to make sense now: the bios limit is 1024
cylinders. if the number of heads is set low, that limit will be
reached faster.

maybe it boots with lba addressing in bios?

trying to fix it with:

cfdisk -c 526 -h 255 -s 63 /dev/hda

doesn't work..

EDIT: grub, booting from a disk, does recognize the disk as 524/255/63
(and the other as 1023/255/63 really 1244/255/63)

so this does seem to be the problem.. maybe passing the geometry to
grub should help then?

Q: how does the kernel determine CHS ?
my guess is either through the partition table, or the ATA spec.

see this:

   The BIOS addressing limitations are usually given as 1024
   cylinders, 255 heads, and 63 sectors per track.  (Note: 1024*255*63
   sectors is just under 8GB.)

   The ATA/IDE specifications limit you to 65535 cylinders, 16 heads,
   and 255 sectors per track.  If you accept both sets of limitations
   at once, you get a maximum of 1024 cylinders, 16 heads and 63
   sectors, resulting in the infamous "528" MB hard disk size

maybe this will fix it:
 * clear partition table on hda
 * reboot!
 * create a new one, with exactly the same layout

maybe this is simpler:
 * manyally set CHS in grub

neither work..

after running /usr/bin/grub-install on the new 10G disk it
worked.. ok, same for the 4G disk. so what does that do over 'setup'
in the grub shell?