In OpenBSD, we have largely side-stepped these issue... by no longer pandering to the tweaker-mindset that builds multiboot systems.
We think all the parts are there, but nothing makes it trivial because the potential set of configurations is too large. Essentially, you are on your own. :-) > 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

