คำตอบ:
ฉันพบคำตอบต่อไปนี้ที่นี่ :
คำตอบสั้น ๆ คือไฟล์. ko เป็นไฟล์วัตถุของคุณที่เชื่อมโยงกับเคอร์เนลบางตัวที่สร้างโครงสร้างข้อมูลโดยอัตโนมัติซึ่งเคอร์เนลต้องการ
ไฟล์. o เป็นไฟล์วัตถุของโมดูลของคุณ - ผลลัพธ์ของการรวบรวมไฟล์ c ของคุณ ระบบสร้างเคอร์เนลจะสร้างไฟล์ C อีกไฟล์หนึ่งโดยอัตโนมัติพร้อมกับโครงสร้างข้อมูลบางตัวที่อธิบายถึงโมดูลเคอร์เนล (ชื่อ your_module_kmod.c) รวบรวมไฟล์ C นี้เป็นไฟล์วัตถุอื่นและเชื่อมโยงไฟล์วัตถุของคุณและไฟล์วัตถุที่สร้างขึ้นด้วยกันเพื่อสร้าง. ไฟล์.
ตัวเชื่อมโยงแบบไดนามิกในเคอร์เนลที่รับผิดชอบการโหลดโมดูลเคอร์เนลคาดว่าจะพบโครงสร้างข้อมูลที่เคอร์เนลใส่ไว้ในวัตถุ kmod ในไฟล์. kko และจะไม่สามารถโหลดโมดูลเคอร์เนลของคุณได้หากไม่มีพวกเขา
นอกจากนี้จากแหล่งที่มาอ้างถึงtldp : มากถึง 2.4 เคอร์เนลเวอร์ชันมันเป็น ".o" และตั้งแต่ 2.6 มันเป็น ".ko"
ดูเหมือนว่าจะเป็นวิธีการเก่า ๆ (กวดวิชา) ในความเป็นจริงมันเขียนในปี 2005 เมื่อเคอร์เนล Linux เป็น 2.4.x โมดูลมีส่วนขยาย. o ในขณะที่ใน 2.6 พวกเขากลายเป็น. ko