Linux下加载驱动模块都是.o文件, .o文件也就是object文件。
.ko文件是kernel object文件,与.o的区别在于其多了一些sections,比如.modinfo。
.modinfo section是由kernel source里的modpost工具生成的,包括MODULE_AUTHOR, MODULE_DESCRIPTION, MODULE_LICENSE, device ID table以及模块依赖关系等等。
depmod工具根据.modinfo section生成modules.dep, modules.*map等文件,以便modprobe更方便的加载模块。
.ko 文件是内核模块文件,是内核加载的某个模块,一般是驱动程序。
在2.4内核中,生成的就是.o文件。2.6的kernel对内核模块的管理做了一些扩展,生成的就是.ko文件。