Originally posted by: Joony
Same here, trying it for the hell of it 🙂
what is a kernel source for?
Well, ok, any piece of software starts its life as source code that programmers write. To actually use the program, you compile it into a binary, which you can then actually run and use. On windows, you tend to always use precompiled software, but on linux that's not always true. Since most of the software is open source, you have access to the source code itself, and you can compile it yourself. With the kernel, since it's such a low-level thing, you can't really configure it once it's compiled; instead, you edit the build options before you compile it. After you compile it, you then have a built kernel with only the options you picked when you configured it.
But you can also build certain options as "modules", which can be dynamically loaded/unloaded depending on whether you actually need them. So your default kernel will have modules for all kinds of hardware that you don't have, and those modules won't be loaded, since it's pointless to load drivers for hardware that isn't in use. Open up a terminal and run "lsmod" and you'll see exactly which modules are loaded - you might recognize some of them as referring to the hardware you're using. Like mine right now lists:
usbkbd 3644 0 (unused)
hid 19524 0 (unused)
usbmouse 2300 0 (unused)
usb-ohci 19656 0 (unused)
usbcore 65408 1 [usbkbd hid usbmouse usb-ohci]
sg 33612 0
nvram 5332 0 (unused)
loop 9976 0 (unused)
sr_mod 14584 0
ide-scsi 8880 0
scsi_mod 96468 3 [sg sr_mod ide-scsi]
8139too 15848 1
mii 2560 0 [8139too]
es1371 31784 3
ac97_codec 11080 0 [es1371]
soundcore 4356 4 [es1371]
mga 97088 1
agpgart 19456 3
joydev 5920 0 (unused)
keybdev 2080 0 (unused)
mousedev 4376 1
input 3776 0 [usbkbd hid usbmouse joydev keybdev mousedev]
rtc 7644 0 (autoclean)
unix 17256 117 (autoclean)