You do not need to have a hard drive to run Linux; you can run a
minimal system completely from floppy. However, this is slow and very
limited, and many users have access to hard drive storage anyway.
You must have an AT-standard (16-bit) controller. There is support in
the works for XT-standard (8 bit) controllers; however, most controllers
used today are AT-standard. Linux should support all MFM, RLL, ESDI, and
IDE controllers.
The general rule for non-SCSI hard drive and floppy controllers is that if you can access the drive from MS-DOS or another operating system, you should be able to access it from Linux.
Linux also supports a number of popular SCSI drive controllers, although
support for SCSI is more limited because of the wide range of controller
interface standards. Supported SCSI controllers include the Adaptec AHA1542B,
AHA1742A (BIOS version 1.34), AHA1740, AHA1740 (SCSI-2 controller,
BIOS 1.34 in Enhanced mode); Future Domain 1680, TMC-850, TMC-950;
Seagate ST-02; UltraStor SCSI; Western Digital WD7000FASST. Clones which
are based on these cards should work as well.