ข้ามไปที่เนื้อหาหลัก

Dynamic Kernel Module Support (DKMS) ภาค 3


Dynamic Kernel Module Support

เกริ่นมา 2 บทความแล้ว หวังว่าผู้อ่านจะเข้าใจนะครับ สรุปง่ายๆ คือ เจ้าพระเอกของเรา DKMS คำสั่งนี้จะช่วยให้เราจะทำการไฟล์ติดตั้งไดว์เวอร์ให้เราอัตโนมัติ เมื่อมีการอัพเดต kernel ให้เรา ทำให้เราไม่เจอปัญหาเวลาอัพเดตระบบปฏิบัติการแล้วใช้งานไดว์เวอร์การ์ดแลนได้ ปล. มันไม่ใช้แค่ช่วยเรื่องไดว์เวอร์ ยังช่วยทำให้เราเพิ่มความสามารถให้กับ kernel อีกด้วย

ขั้นตอนการทำดังนี้
ก่อนทำ เราจะเช็คดูก่อนเพื่อสำรองไฟล์เดิมหรือทำการเช็คเวอร์ชั่นที่ใช้อยู่ได้ เช่น modinfo e1000e (เช็คตำแหน่งที่เก็บไฟล์ไดว์เวอร์) ethtool eth0 (ดูเวอร์ชั่นของไดว์เวอร์) ฯลฯ สามารถใช้ผู้ใช้งาน root ในการทำได้ 
และก่อนทำบนเครื่องต้องมีคำสั่งและ kernel header ด้วยในที่นี้ผู้เขียนทำตัวอย่างบนระบบปฏิบัติการ Debian ก็ได้ทำการติดตั้งดังนี้ 
apt-get install dkms deb-helper build-essential linux-headers-$(uname -r) make 



  • cd /usr/src/
  • sudo wget https://downloadmirror.intel.com/15817/eng/e1000e-3.4.0.2.tar.gz
  • sudo tar xvfz e1000e-3.4.0.2.tar.gz
  • cd e1000e-3.4.0.2
  • sudo nano dkms.conf
-----------------------------------------------------------------------------------------------------------------------------------
PACKAGE_NAME="e1000e"
PACKAGE_VERSION="3.4.0.2"
BUILT_MODULE_LOCATION[0]="src"
BUILT_MODULE_NAME[0]="e1000e"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/e1000e/"
AUTOINSTALL="yes"
MAKE[0]="BUILD_KERNEL=${kernelver} make -C src CFLAGS_EXTRA=-DDISABLE_PM"
CLEAN[0]="make -C src clean"
REMAKE_INITRD=yes
-----------------------------------------------------------------------------------------------------------------------------------

กรณีทำเป็นไฟล์ .deb เพื่อไปติดตั้งบนอุปกรณ์ตัวอื่นได้
  • sudo dkms -m e1000e -v 3.4.0.2 add
  • sudo dkms -m e1000e -v 3.4.0.2 build
  • sudo dkms -m e1000e -v 3.4.0.2 mkdsc --source-only
  • sudo dkms -m e1000e -v 3.4.0.2 mkdeb --source-only
  • คำสั่งก็จะสร้างไฟล์ .deb ไว้ที่ /var/lib/dkms/e1000e/3.4.0.2/deb/xxx.deb  เราก็นำมาติดตั้งได้ หรือนำไปใช้งานกับเครื่องอื่นได้

กรณีอยากจะติดตั้งเลย ไม่สร้างเป็นไฟล์ .deb
  • sudo dkms -m e1000e -v 3.4.0.2 add
  • sudo dkms -m e1000e -v 3.4.0.2 build
  • sudo dkms -m e1000e -v 3.4.0.2 install

กรณีต้องการลบออก
  • sudo dkms -m e1000e -v 3.4.0.2 uninstall --all
  • sudo dkms -m e1000e -v 3.4.0.2 remove --all

จบบริบูรณ์ เดี่ยวจะมีบทความตัวอย่างเพิ่มเติม เช่น การติดตั้ง pf_ring โดยทำ dkms แบบนี้ละ ฯลฯ ค่อยติดตามกันนะครับ
บทความภาค 1 ได้ที่ https://thaidevnote.blogspot.com/2018/05/dynamic-kernel-module-support-dkms-1.html
บทความภาค 2 ได้ที่ https://thaidevnote.blogspot.com/2018/05/dynamic-kernel-module-support-dkms-2.html

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Dynamic Kernel Module Support (DKMS) ภาค 1

Dynamic Kernel Module Support ถ้าให้เล่าย้อนความเกี่ยวกับเจ้า DKMS ก็หลายปีมากเลยละ แต่จะสรุปให้ผู้อ่านดังนี้ คือ สมัยก่อนสำหรับคนเล่นลีนุกส์เวลาที่เราจะเพิ่มเติม ความสามารถ (feature) ให้กับ kernel นั้น เราจะต้อง patch kernel แล้วทำการคอมไพล์ Kernel ใหม่ทำการดาวน์โหลดไฟล์ kernel ที่ต้องการใช้ได้จาก https://www.kernel.org/ ซึ่ง kernel จากเว็บนี้เราจะเรียกกันว่า Vanilla Kernel  ถ้าไม่เกริ่นเกี่ยวกับ Vanilla Kernel เดี่ยวจะงงสรุปสั้นคือ กลุ่มโปรแกรมเมอร์ที่พัฒนา kernel ให้เราใช้นี้และ โดยมีคุณไลนัส ทอร์วัลด์ส (Linus Benedict Torvalds) เป็นแกนนำ แล้วมัน แตกต่างกับ Kernel ที่เราใช้บนระบบปฏิบัติการอื่นอย่างไร เช่น Debian, Redhat ฯลฯ ความแตกต่างง่ายๆ ดังนี้ การเลือก Vanilla Kernel มาใช้นั้น แต่ละระบบปฏิบัติการมีแนวคิดต่างกัน ในการเลือกนำมาใช้โดยดูการ support ของแต่ละเวอร์ชั่น โดยพวกระบบปฏิบัติการต่างๆ จะมีการวิธีการเลือกต่างๆ กัน เช่น เน้นรองรับความสามารถใหม่, รองรับฮาวด์แวร์ใหม่ ก็จะเลือกใช้ Kernel เวอร์ชั่นใหม่, เน้นความเสถียร ก็จะเลือก Kernel เวอร์ชั่นเก่า พว...

Predictable Network Interface Names #3

Predictable Network Interface Names ภาคสุดท้ายปิดตำนานยาจกซูกับไม้ตีสุนัข ไม่ใช่ละ อันนี้มันเกี่ยวกับระบบปฏิบัติการ จิงต้องบอกว่ามันไม่เกี่ยวกับหัวข้อเลยที่กล่าวถึง แต่ขอมัดรวมเป็นเรื่องเดียวกันหน่อยครับ เพราะมันมีบางส่วนที่ทำต่อเนื่องกัน โดยในบทความนี้ จะกล่าวถึงการตั้งชื่อ อินเตอร์เฟสแลนการ์ด โดยแมฟกับ MAC Address จากตอนที่แล้วจะเห็นว่าอินเตอร์เฟสมันไม่เรียงเลย ถึงแม้เราจะเปลี่ยนชื่อเป็นแบบเก่า ก็จะยังเป็นแบบตามรูปด้านล่างที่ยังมีปัญหาอยู่ขึ้นอยู่ ทำให้ตอนใช้งานก็จะยังลำบากเหมือนเดิม ปัญหาที่ตามมาคงไม่ต้องบอกกันนะ คนเขียนโปรแกรมถึงกลับร้องไห้ ผมจะเขียนยังไงอะพี่ โดยในลีนุกส์จะใช้การเรียงลำดับจากเลข MAC Address พอ chip คนละตัว และเลขน้อยกว่า ทำให้มันไปพอร์ตที่ 5 เป็น eth0 ตามด้านบน  วิธีแก้ไขจะมีอยู่ 2 แบบ ขึ้นกับว่าโอเอสที่ใช้ แบบเก่า UDEV (Dynamic Device Management)     ขั้นตอน      - export INTERFACE=eth0      - export MATCHADDR=xx:xx:xx:xx:xx:xx      - /lib/udev/write_net_rules ...