I decided to power on my old desktop to set it up as a back-room fileserver, and twiddled the partition table accordingly to nuke a few unused Windows partitions and maximise usable space.
Somehow or other, some component of my system decided that it would henceforth be non-bootable. It seems some BIOSes don’t like partition tables where a high-numbered logical partition have a lower starting sector than a boot logical partition, or something… GRUB just errored out with an obscure ‘Error 17’, which apparently means that it couldn’t find its boot partition any more.
OK, so I needed a boot disk. But I had 1 laptop with a CD/DVD drive but no floppy drive, and a desktop with a floppy drive but no CD drive (due to hardware failure)… and the original linux boot floppy was long gone, seeing as I’d hardly booted this machine in the duration of two house moves. Argh.
A dinky little Cruzer mini 128MB USB flash drive saved the day. (R)ecovery (I)s (P)ossible is a tiny Linux distro that fits into 27MB, well inside the USB drive’s limits; it has an exceptionally helpful and detailed README detailing exactly what needs to be done to create a bootable USB flash drive from its ISO image, using just the generic linux toolchain.
Together with fdisk and parted’s ‘rescue a lost partition’ mode, I was able to get the mangled partition table back into shape, mount the boot disk, change the fstab and grub configuration file, and reboot into a working system. phew!
Many thanks to Kent Robotti, who’s done a great job with RIP.
On the other hard — no thanks to whoever came up with the arcane rules behind the IDE partition table… argh.