Modul Kernel: .o vs .ko

10

Tampaknya file yang berisi modul kernel dipanggil .o, setidaknya itulah yang saya pikirkan ketika melihat tutorial seperti ini . Namun, pada kotak pemerasan debian saya, file-file ini sepertinya dipanggil .ko.

Apakah itu tergantung pada distribusi (atau verinya) apakah file dipanggil .oatau .ko, dan apakah mereka kurang lebih sama, jika tidak?

zebonaut
sumber

Jawaban:

11

Saya menemukan jawaban berikut di sini :

Jawaban singkatnya adalah bahwa file .ko adalah file objek Anda yang ditautkan dengan beberapa struktur data kernel yang dihasilkan secara otomatis yang diperlukan oleh kernel.

File .o adalah file objek modul Anda - hasil kompilasi file c Anda. Sistem kernel membangun kemudian secara otomatis membuat file C lain dengan beberapa struktur data yang menggambarkan modul kernel (bernama your_module_kmod.c), mengkompilasi file C ini ke file objek lain dan menautkan file objek Anda dan file objek yang dibangun bersama-sama untuk menciptakan .ko mengajukan.

Dynamic linker di kernel yang bertanggung jawab atas pemuatan modul kernel, mengharapkan untuk menemukan struktur data yang diletakkan kernel pada objek kmod dalam file .ko dan tidak akan dapat memuat modul kernel Anda tanpa mereka.

Juga dari sumber itu , mengutip tldp : Hingga versi 2.4 kernel, itu adalah ".o", dan sejak 2.6, itu ".ko".

J. Taylor
sumber
3

Tampaknya howto lama (tutorial), pada kenyataannya itu ditulis pada tahun 2005. Ketika kernel Linux 2.4.x modul memiliki ekstensi .o, sedangkan di 2.6 mereka menjadi .ko

asclepix
sumber