There is a very useful linux program called Discover (http://platform.progeny.com/discover/
) which does hardware autodetection and can even load the required modules if they are installed. But you can just run it to find out what hardware you have first.
The way I usually go about figuring out hardware is:
(1) Assume internal disk drives and CD/DVD drives are standard IDE drives unless proven otherwise (true for 99% of desktops).
(2) Run lspci or cat /proc/pci to find out what kind of peripherals there are. If I don't know what driver they need, google for, e.g. "VIA sound card linux". Then I see that it needs the via82cxxx ALSA sound driver, etc.
(3) Do an lsusb and google for the USB drivers needed too.
(4) Put in any pcmcia cards (laptop) and run cardctl ident to find out what they are. Google for those too.
(5) Build a kernel with all the modules for the hardware, as well as modules for the filesystems: linux ext2, linux ext3, CD, DVD, Windows FAT32. Include any modules that I'm unsure about, I can always remove them later if I want.
(6) Install additional utilities that may be needed for some hardware, such as modem dialers, wireless card manager utilities, etc.
It's a fairly long process. I run Debian, which doesn't do a good job of autodetecting hardware. By contrast, If you use Mandrake, it will do a *fantastic* job detecting your hardware. I used to use Mandrake until I felt comfortable doing all that stuff by hand.