Okay, my root partition is on /dev/sda (normally), which is a sata drive connected to the onboard sata controller.
The problem is that I also have a plug-in ESATA docking station, which is not always powered on. When it *is* powered on, my kernel names the disk /dev/sda, and that forces the root device to be named /dev/sdb instead of sda. Crashing ensues during bootup. The machine's BIOS doesn't even recognize the ESATA controller, so I can't fiddle with anything there. Anyone have any ideas how to get a kernel to mount the root partition based on the pci slot number or something equivalent? I've tried using a disk label in fstab instead of a device name, but the problem is that the kernel mounts the wrong partition before it has a chance to read fstab. I've also tried using rdev to set the root device to the disk's major and minor numbers but that fails because the kernel switches the minor device numbers along with the device names. Any clues would be much appreciated.