It seems like there should be a better way to detect this other than trial and error. I put a new 1 TB drive in my laptop (Seagate ST1000LM024) about a month ago. Being aware there was such a limit I made small boot partitions at the beginning of the drive (I thought): 32 GB Windows, 64 GB OpenBSD, 32 GB Linux. As predicted everything worked at first, then installing MeTV keys made my Linux unbootable with an error from Lilo about the key file being corrupt and I suspect it's related to this limit. The original position of the file was probably OK, the new file got made in an unreachable position.
So I've probably got some storage-only partitions that won't boot, but I want to avoid the same thing happening when I put a 1 TB drive (Seagate ST31000340AS) in my laptop machine (Dell Optiplex GX270) because I really would like Linux working somewhere since I want to play with Android stuff. I need to be able to build kernels for my phones and use Android Studio. So on the laptop: Disk: wd0 geometry: 121601/255/63 [1953525168 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- *0: 0C 0 1 1 - 4079 254 63 [ 63: 65545137 ] Win95 FAT32L 1: A6 4080 0 1 - 12365 254 63 [ 65545200: 133114590 ] OpenBSD 2: 83 12366 0 1 - 16444 254 63 [ 198659790: 65529135 ] Linux files* 3: 05 16445 0 62 - 121600 254 63 [ 264188986: 1689331079 ] Extended DOS Offset: 264188986 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 0B 16445 1 1 - 20524 254 63 [ 264188988: 65545137 ] Win95 FAT-32 1: 05 20525 0 1 - 24604 254 63 [ 329734125: 65545200 ] Extended DOS 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Offset: 329734125 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 0B 20525 1 1 - 24604 254 63 [ 329734188: 65545137 ] Win95 FAT-32 1: 05 24605 0 1 - 25114 254 63 [ 395279325: 8193150 ] Extended DOS 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Offset: 395279325 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 82 24605 1 1 - 25114 254 63 [ 395279388: 8193087 ] Linux swap 1: 05 25115 0 1 - 88856 76 52 [ 403472475: 1024004005 ] Extended DOS 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Offset: 403472475 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: A6 25115 63 37 - 88856 76 52 [ 403476480: 1024000000 ] OpenBSD 1: 05 88857 0 1 - 121600 254 63 [ 1427487705: 526032360 ] Extended DOS 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Offset: 1427487705 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 83 88857 1 1 - 121600 254 63 [ 1427487768: 526032297 ] Linux files* 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 # /dev/rwd0c: type: ESDI disk: ESDI/IDE disk label: ST1000LM024 HN-M duid: abd27361b43df756 flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 255 sectors/cylinder: 16065 cylinders: 121601 total sectors: 1953525168 boundstart: 65545200 boundend: 198659790 drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 4194288 65545200 4.2BSD 2048 16384 1 # / b: 524288 69739488 swap # none c: 1953525168 0 unused d: 6291456 70263776 4.2BSD 2048 16384 1 e: 4194304 76555232 4.2BSD 2048 16384 1 # /home g: 1024000000 403476480 4.2BSD 4096 32768 1 # /usr i: 65545137 63 MSDOS # /win_c j: 65529135 198659790 ext2fs # /linux0 k: 65545137 264188988 MSDOS # /win_d l: 65545137 329734188 MSDOS # /win_e m: 8193087 395279388 unknown # none n: 526032297 1427487768 ext2fs # /linux1 d530# calc ' 198659790 + 65529135 ' 264188925 d530# calc '264188925 / 16065' 16445 d530# calc '2 ^ 14' 16384 d530# If the BIOS only uses 14 bits for keeping track of the cylinder this may be the problem. But how can we find this out? Both machines are running the latest BIOS available from Dell. I have 32 gig msdos partitions because I still use FAT32, and some Windows tool will delete a FAT32 partition over 32 gigs, I've seen it happen. It seems like it should be possible to write a tool for this, you create a partition, fill most of it with dummy files, then at the very end put the file you want the BIOS to find, reboot and see if it still finds it. If it does, you blow it away and keep making it bigger until it doesn't work anymore. It probably comes down to a certain number of bits used for addressing somewhere, but much depends on the machine's BIOS and the hard drive's geometry. I used gparted (Linux live CD) for making these BTW, which doesn't even know what an A6 partition is. Seems like it might be worth educating them and maybe getting gparted into ports. My disklabel here isn't quite up to date, my fstab mounts the 2nd OpenBSD partition as /usr and the linux swap as a 2nd swap: /dev/wd0b none swap sw 0 0 /dev/wd0m none swap sw 0 0 /dev/wd0a / ffs rw 1 1 /dev/wd0e /home ffs rw,nodev,nosuid 1 2 /dev/wd0g /usr ffs rw,nodev 1 2 /dev/wd0i /win_c msdos rw 0 0 /dev/wd0k /win_d msdos rw 0 0 /dev/wd0l /win_e msdos rw 0 0 /dev/wd0j /linux0 ext2fs rw 0 0 /dev/wd0n /linux1 ext2fs rw 0 0 /dev/cd0a /cdrom cd9660 ro,noauto 0 0 -- Credit is the root of all evil. - AB1JX