Tôi tìm thấy câu trả lời sau đây :
Câu trả lời ngắn gọn là tệp .ko là tệp đối tượng của bạn được liên kết với một số cấu trúc dữ liệu được tạo tự động mà kernel cần.
Tệp .o là tệp đối tượng của các mô-đun của bạn - kết quả của việc biên dịch các tệp c của bạn. Sau đó, hệ thống xây dựng kernel sẽ tự động tạo một tệp C khác với một số cấu trúc dữ liệu mô tả mô-đun kernel (có tên là your_module_kmod.c), biên dịch tệp C này thành một tệp đối tượng khác và liên kết tệp đối tượng của bạn và tệp đối tượng được xây dựng để tạo .ko tập tin.
Trình liên kết động trong kernel chịu trách nhiệm tải các mô-đun hạt nhân, hy vọng sẽ tìm thấy cấu trúc dữ liệu mà hạt nhân đặt trong đối tượng kmod trong tệp .ko và sẽ không thể tải mô-đun hạt nhân của bạn mà không có chúng.
Cũng từ nguồn đó , trích dẫn tldp : Tối đa 2.4 phiên bản kernel, đó là ".o" và kể từ 2.6, đó là ".ko".