Linux kernel modules don't seem to be portable: they are compiled for a specific version of the kernel (that's why even binary drivers have some source files to be compiled). And you don't just need exactly the same kernel sources, you even need to compile it and use the made-by-yourself version... (pls correct me if I'm wrong somewhere).
So my question is: what is the reason behind all this? (... some binary interface that gets regenerated every time?) And is there any way to compile modules for a prebuilt kernel? (sources could be available, but not the tree it's compiled from).