Hi Debee I'm going to take a big step back and try and explain the terms, which will probably help you understand what all the things you've been reading about mean. But first, before I start, let me point you at the howtos and guides at www.tldp.org. But back to this hardware issue. I'm sure you already know that UnderDOS you had to install drivers for everything you owned, then under Windows Microsoft bundle more and more of the drivers so sometimes you won't even need third party drivers. This is a gross simplification, but it is enough to understand the point. Now Linux is a kernel - equivalent to command.com under DOS. The kernel deals with all the hardware in the system and you can imagine the kernel as everything between bash and hardware; it provides scheduling facilities and memory management as well as hardware support. The Linux kernel supports a whole load of hardware. If you recompile your own kernel you'll have to answer a whole load of questions about whether you want x included properly in the kernel, excluded from the kernel, or made as a module that can be loaded when required. The advantage of modules is that they can be loaded and unloaded at will, but if something is built into the kernel proper it stays. Also, it is obviously more efficient to have most common things that you use most of the time in the kernel proper. The other side of the coin is that there is a limit how big your kernel can be so you may like to leave certain things as modules, as modules don't effect the size of the kernel. For example, I like to have Parallel port support built into the kernel as I often use a parallel port, but have support for the NTFS filesystem built as a module so that this module is only automatically loaded when I use it. I say "no" to multi processor support so it is not in my kernel at all. Ok. Now we know that a certain amount of hardware support is built into your own kernel, and some is built in in the form of loadable modules. What most common linux distributions like Redhat, SuSE and Mandrake do is have a very generic set of drivers built into a generic kernel, and then have things like sound card and network drivers left as modules. During installation, or maybe during boot-up, a program will scan for physical hardware devices by sending signals down the PCI bus for example and seeing what responds on the other end. ~Depending on what it found it will cause only those modules to be loaded, so suddenly you have all your hardware supported. Finally, I am not sure about this last method, but you can also specify which modules are loaded by editing the /etc/modules.conf file. I think, though am not sure, that when you recompile your kernel all modules you did not build are commented out; uncommenting a module line will cause that module to be added to the system. Again, I've never done this. I hope all this starts to clarify your questions, and I urge you to read the linux documentation project's stuff - it is very useful. And yes, while you could use a convenient Linux distro, I think running zipslack on a libretto is a fantastic (but certainly not the easiest) way to learn. The best way to learn is to solve problems, so you wouldn't learn much if everything worked flawlessly! Saqib