For unconnected reasons, I recently found myself, on two occasions, having to swap bootable hard drives into different machines. The first was a Windows 95 drive, the second was a Linux drive.
The Windows 95 drive had been originally housed in a Compaq DeskPro 5133. I needed to put it into an old AST machine, since the existing drive in the AST had been wiped clean. There was no CD drive in this AST, which made installing a new version of Windows somewhat difficult. I was rather dubious that the disk would boot into Windows at all. However, it did, after countless reboots as it detected more and more new hardware. Finally after about 45 minutes, I had a working system.
The DeskPro, from which the Windows 95 disk had originated, was now a Linux machine. It acted as a Samba server, using a 120GB drive I had put in it. The machine was slow, but for serving files, it was OK. However, one morning I found the DeskPro completely dead. It would power up, but the BIOS did not start. I suspected a motherboard or power supply problem. As a short term fix, I brought in an old Dell machine I had (Pentium 100MHz processor) and swapped the Linux drive into this box. It booted up immediately. Once it had booted, the only changes I had to make were to tell it what kind of Ethernet card was in the Dell machine (a Netgear card, needing the tulip driver) via the /etc/modules.conf file, and change the /etc/X11/XF86config file to define the graphics card as an "ati" device. I suspect it helped that I had left the kernel as generic, rather than customising it for the Compaq machine.
Later on, when I had built a new file server for the princely sum of £144, putting the Linux drive in the new system was just as painless. The motherboard was based on a SIS chipset, so sis900 driver was required for the LAN, and the "sis" driver for XFree86.