Çekirdek Modülleri: .o vs .ko


10

Çekirdek modülleri içeren dosyaların çağrıldığı .oanlaşılıyor, en azından böyle bir eğiticiye bakarken anladığım şey bu . Ancak, debian sıkma kutumda, bu dosyalar çağırılmış gibi görünüyor .ko.

Dosyaların çağrılıp çağrılmamasına .oveya dosyalarının dağıtılmasına (veya verisonuna) bağlı mıdır, .koyoksa az çok aynı mıdır?

Yanıtlar:


11

Burada aşağıdaki cevabı buldum :

Kısa yanıt, .ko dosyasının, çekirdek tarafından ihtiyaç duyulan bazı çekirdek otomatik olarak oluşturulan veri yapılarıyla bağlantılı nesne dosyanız olmasıdır.

.O dosyası modüllerinizin nesne dosyasıdır - c dosyalarınızı derlemenin sonucu. Çekirdek oluşturma sistemi daha sonra otomatik olarak çekirdek modülünü (sizin_modül_kmod.c olarak adlandırılır) tanımlayan bazı veri yapılarına sahip başka bir C dosyası oluşturur, bu C dosyasını başka bir nesne dosyasına derler ve .ko dosyasını oluşturmak için nesne dosyanızı ve oluşturduğu nesne dosyasını birbirine bağlar. dosya.

Çekirdek modüllerinin yüklenmesinden sorumlu çekirdek içindeki dinamik bağlayıcı, çekirdeğin .ko dosyasında kmod nesnesine koyduğu veri yapısını bulmayı bekler ve çekirdek modülünüzü onsuz yükleyemez.

Ayrıca bu kaynaktan , tldp'ye atıfta bulunarak : 2.4 çekirdek sürümüne kadar, ".o" idi ve 2.6'dan beri ".ko".


3

Eski bir howto (öğretici) gibi görünüyor, aslında 2005 yılında yazılmıştır. Linux çekirdeği 2.4.x olduğunda modüllerin .o uzantısı vardı, 2.6'da ise .ko oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.