DKMS ทำอะไรได้บ้าง ฉันจะใช้มันได้อย่างไร


23

ฉันได้เห็นไม่กี่คนที่พูดถึง DKMS เมื่อเร็ว ๆ นี้ แต่มันไม่ชัดเจนว่ามันทำอะไรกับระบบของฉัน

DKMS ทำอะไรได้จริงและฉันจะใช้มันอย่างไร

คำตอบ:


25

แพ็คเกจDKMS (การสนับสนุนโมดูลเคอร์เนลแบบไดนามิก) ( http://linux.dell.com/dkms/ ) ให้การสนับสนุนสำหรับการติดตั้งโมดูลเคอร์เนลเวอร์ชันเสริม แพคเกจรวบรวมและติดตั้งลงในแผนผังเคอร์เนล การถอนการติดตั้งคืนค่าโมดูลก่อนหน้า ตามค่าเริ่มต้นการติดตั้งจะอยู่ในแผนผังเคอร์เนลปัจจุบัน แต่สามารถเลือกแผนผังเคอร์เนลใดก็ได้พร้อมตัวเลือกบรรทัดคำสั่ง นอกจากนี้ DKMS จะถูกเรียกโดยอัตโนมัติเมื่อมีการติดตั้งแพ็คเกจเคอร์เนลภาพใหม่ของ Ubuntu และดังนั้นโมดูลที่เพิ่มใน DKMS จะถูกนำไปใช้โดยอัตโนมัติในการอัปเดต

ภาพรวม

ในการใช้โมดูลที่มี DKMS จะวางไฟล์การติดตั้งโมดูล (อาจเป็นซอร์สโค้ดหรือไบนารี) ใน / usr / src / - พร้อมกับไฟล์การกำหนดค่า dkms.conf ที่บอก DKMS ถึงวิธีการสร้าง / กำหนดค่าโมดูลและสิ่งที่ ชื่อคือ. ภายใต้สถานการณ์ขั้นสูงเพิ่มเติมคำแนะนำการสร้างแบบมีเงื่อนไขและการแพตช์สามารถทำได้โดยระบบ dkms แต่การพิจารณาในกรณีของคุณอาจไม่จำเป็น

เดินผ่าน

สมมติว่าคุณต้องการติดตั้งโมดูลสำหรับอะแดปเตอร์ "Awesome Adapter" tarball awesome-20091211-v1.1.tgzคุณจะได้รับมา

ด้วย DKMS เราจะบอก DKMS ถึงวิธีการทำสิ่งนี้ให้คุณโดยการสร้างไฟล์ dkms.conf ด้วยรายการที่เหมาะสม ตัวอย่างเช่นหลังจากเราแกะกล่องทาร์บอลออกแล้ว:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

ข้างในdkms.confเราอาจเพิ่มบรรทัด:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

ไดเร็กทอรีทั้งหมดเกี่ยวข้องกับตำแหน่งของไฟล์ dkms.conf นี่บอก DKMS

  1. คำสั่งเพื่อสร้างโมดูล (เรียกใช้ make ในไดเรกทอรี src /)
  2. คำสั่งเพื่อล้างทรีของซอร์ส (ให้รัน clean ในไดเร็กทอรี src /)
  3. ชื่อของโมดูลที่ไม่มีส่วนขยาย. o หรือ .ko นี่อาจเป็นอาร์เรย์ของโมดูลหากสร้างหลายโมดูลดู man dkms
  4. ที่ DKMS สามารถหาโมดูลที่สร้างขึ้น
  5. ชื่อและเวอร์ชั่น DKMS ควรเชื่อมโยงกับโมดูล
  6. ในการสร้างภาพเริ่มต้นใหม่หลังจากติดตั้งโมดูล

นอกจากนี้คุณยังสามารถเพิ่มตัวเลือกในการโทรสคริปต์ก่อนหรือหลังการสร้างหรือติดตั้งให้เพิ่มเติม (เงื่อนไข) คำสั่งคำสั่งแก้ไข ฯลฯ dkms.conf จริง ๆ แล้วเป็นแหล่งที่มาลงในเปลือกสคริปต์ ในกรณีที่จำเป็น. ตัวเลือกเหล่านี้และอื่น ๆ มีการอธิบายไว้ในส่วน dkms.conf ใน man dkms

ต่อไปเราจะติดตั้งโมดูลลงใน DKMS โดยคัดลอกไฟล์การติดตั้งโมดูลลงในแผนผังต้นทางของเคอร์เนล / usr / src / - และบอก DKMS เกี่ยวกับโมดูลใหม่:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

แค่นั้นแหละ! DKMS ได้เพิ่มโมดูลของเราในรายการโมดูลเพื่อสร้างสำหรับการติดตั้งเคอร์เนลในอนาคต เพื่อให้แน่ใจว่าใช้งานได้และติดตั้งโมดูลลงในเคอร์เนลปัจจุบันของเราเราสามารถสั่ง dkms เพื่อสร้างและติดตั้งโมดูล:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

โชคดีที่โมดูลของคุณจะถูกติดตั้งและติดตั้งใหม่ในการปรับปรุงเคอร์เนลในอนาคต

ตัวอย่าง

หน้าคน DKMSมีข้อมูลที่เป็นประโยชน์ในการตั้งค่าเคอร์เนลโมดูลที่คุณชื่นชอบสำหรับใช้กับ DKMS เอกสารนี้ไม่ครอบคลุม แต่จะตอบคำถามมากมาย มันอาจช่วยให้คุณจดบันทึกตัวอย่างต่อไปนี้แม้ว่าโมดูลที่ใช้ไม่ใช่สิ่งที่คุณต้องการตั้งค่า:

  • RocketRaid - สองตัวอย่างเกี่ยวกับวิธีการตั้งค่าไดรเวอร์Highpoint RocketRaid RR26xx และ RR62x ด้วย DKMS

จาก: help.ubuntu.com

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่:


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