โมดูลเคอร์เนล: .o vs .ko


10

ดูเหมือนว่าไฟล์ที่มีโมดูลเคอร์เนลจะเรียกว่า.oอย่างน้อยนั่นคือสิ่งที่ฉันคิดว่าเมื่อมองไปที่การกวดวิชาเช่นนี้ .koอย่างไรก็ตามในกล่องเดเบียนบีบของฉันไฟล์เหล่านี้ดูเหมือนจะถูกเรียกว่า

มันขึ้นอยู่กับการกระจาย (หรือรูปแบบของมัน) ไม่ว่าจะเป็นไฟล์ที่เรียกว่า.oหรือ.koและพวกเขาจะมากหรือน้อยเหมือนกันมิฉะนั้น?

คำตอบ:


11

ฉันพบคำตอบต่อไปนี้ที่นี่ :

คำตอบสั้น ๆ คือไฟล์. ko เป็นไฟล์วัตถุของคุณที่เชื่อมโยงกับเคอร์เนลบางตัวที่สร้างโครงสร้างข้อมูลโดยอัตโนมัติซึ่งเคอร์เนลต้องการ

ไฟล์. o เป็นไฟล์วัตถุของโมดูลของคุณ - ผลลัพธ์ของการรวบรวมไฟล์ c ของคุณ ระบบสร้างเคอร์เนลจะสร้างไฟล์ C อีกไฟล์หนึ่งโดยอัตโนมัติพร้อมกับโครงสร้างข้อมูลบางตัวที่อธิบายถึงโมดูลเคอร์เนล (ชื่อ your_module_kmod.c) รวบรวมไฟล์ C นี้เป็นไฟล์วัตถุอื่นและเชื่อมโยงไฟล์วัตถุของคุณและไฟล์วัตถุที่สร้างขึ้นด้วยกันเพื่อสร้าง. ไฟล์.

ตัวเชื่อมโยงแบบไดนามิกในเคอร์เนลที่รับผิดชอบการโหลดโมดูลเคอร์เนลคาดว่าจะพบโครงสร้างข้อมูลที่เคอร์เนลใส่ไว้ในวัตถุ kmod ในไฟล์. kko และจะไม่สามารถโหลดโมดูลเคอร์เนลของคุณได้หากไม่มีพวกเขา

นอกจากนี้จากแหล่งที่มาอ้างถึงtldp : มากถึง 2.4 เคอร์เนลเวอร์ชันมันเป็น ".o" และตั้งแต่ 2.6 มันเป็น ".ko"


3

ดูเหมือนว่าจะเป็นวิธีการเก่า ๆ (กวดวิชา) ในความเป็นจริงมันเขียนในปี 2005 เมื่อเคอร์เนล Linux เป็น 2.4.x โมดูลมีส่วนขยาย. o ในขณะที่ใน 2.6 พวกเขากลายเป็น. ko

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.