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

Dynamic Kernel Module Support (DKMS) ภาค 2


Dynamic Kernel Module Support

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

  • ลงปฏิบัติการเป็นเวอร์ชั่นใหม่ล่าสุด เพราะไงก็รองรับ LAN Card ตัวใหม่แน่นอน แต่ปัญหาที่ตามมาคือ ผมต้องทดสอบระบบปฏิบัติการใหม่ทั้งหมดว่าสามารถใช้งานซอฟต์แวร์เดิมได้อย่างมีประสิทธิภาพรึไม่
  • ลงเฉพาะไดว์เวอร์การ์ดแลนเป็นเวลาใหม่ แน่นอนว่าแค่เอาระบบปฏิบัติการเดิมที่เคยใช้มา Clone ลงแล้วแค่ลง Driver ก็เรียบร้อย ไม่ต้องทดสอบการทำงานระบบใหม่ทั้งหมด

ซึ่งจะเห็นว่าใครก็จะเลือกวิธีที่สอง เพราะไม่ต้องทดสอบระบบใหม่ทั้งหมด ซึ่งจะเห็นว่าวิธีการทำนั้นเราแค่ไปดาวน์โหลดไฟล์ Driver ใส่ USB  แล้วนำไปเสียบลงบนอุปกรณ์ และติดตั้งก็เสร็จเรียบร้อยใช้งานได้ เช่น การ์ดแลนใช้ driver intel e1000e ฯลฯ

ขั้นตอนเบื้องต้นดังนี้
  • tar zxf e1000e-<x.x.x>.tar.gz
  • cd e1000e-<x.x.x>/src/
  • make install
  • ไดว์เวอร์ก็จะถูกติดตั้งลงบน kernel ปัจจุบันที่เราใช้งาน เช่น /lib/modules/<KERNEL VERSION>/kernel/drivers/net/e1000e/e1000e.[k]o
  • modprobe e1000e 
  • insmod e1000e

จบขั้นตอนติดตั้งไดว์เวอร์เรียบร้อย เราก็สามารถใช้งานอุปกรณ์ได้ตามปกติ อ้าวไม่เห็นมีเกี่ยวกับ DKMS เลยนิ แล้วผู้เขียนจะพูดถึงทำไม ถ้าจำบทความแรกกันได้
ซึ่งผมได้พูดว่าแต่ละระบบปฏิบัติการนั้นจะมีการดูแล Kernel ของตัวเอง จุดนี้และที่สำคัญ คือ เวลาที่ทางระบบปฏิบัติการมีการอัพเดต kernel ไม่ว่าจะเป็นการอัพเดต kernel เดิม หรืออัพไปใช้ kernel เวอร์ชั่นใหม่ก็ตาม ฯลฯ เจ้าไดว์เวอร์ที่เราได้คอมไพล์ก่อนนี้ มันไม่ได้ไปด้วยไงครับ ซึ่งจะทำให้การที่เราตั้งอัพเดตความปลอดภัยของระบบปฏิบัติการไว้ เมื่ออัพเดตเสร็จกับใช้เน็ตไม่ได้ เพราะไดว์เวอร์ที่ลงไว้ไม่ไปด้วย

ขอจบภาคนี้ไปก่อนครับ เริ่มยาวแล้วครับ 
บทความภาค 1 ได้ที่ https://thaidevnote.blogspot.com/2018/05/dynamic-kernel-module-support-dkms-1.html
บทความภาค 3 ได้ที่ https://thaidevnote.blogspot.com/2018/05/dynamic-kernel-module-support-dkms-3.html


ความคิดเห็น

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

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 ...

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 ...

System Analyst สำคัญฉะไหน

ถ้าคุณเจอปัญหาเหล่านี้ มาลองให้ความสำคัญกับ System Analyst แล้วจะรู้ว่าคุณเข้าใจผิดเกี่ยวกับหน้าที่ของ SA โปรเจคที่พัฒนาล้มเหลว โปรเจคที่พัฒนาออกแบบไม่ตรงตามความต้องลูกค้า โปรเจคที่พัฒนาไม่เสร็จตามกำหนดเวลา โปรเจคที่พัฒนาต้นทุนบานปลาย โปรเจคที่พัฒนาเลือกใช้เทคโนโลยีผิด และอื่นๆ อีกมากมายที่ซอฟต์แวร์หรือระบบที่พัฒนาไม่ประสบความสำเร็จ สิ่งที่ System Analyst ต้องมี ประสบการณ์ (เจ้าข้อนี้และที่เข้าใจผิดกันเยอะ) SA ที่ดีต้องเคยเขียนหรือพัฒนาโปรแกรมมาก่อนหรือก็คือ เป็นโปรแกรมเมอร์มาก่อน SA ที่ดีต้องเคยต้องเคยออกแบบฐานข้อมูล SA ที่ดีต้องเคยวิเคราะห์และออกแบบระบบงานเกี่ยวกับธุรกิจมาเยอะพอสมควร SA ที่ดีต้องเขียนและอธิบายเอกสารได้ ตามหลักสากลนะ รอบรู้  มีความรู้เกี่ยวกับเทคโนโลยีต่างๆ แค่รู้ไม่จำเป็นต้องชำนาญ มีความเข้าใจเกี่ยวกับระบบงานของธุรกิจต่างๆ เป็นอย่างดี เข้าใจขั้นตอนการพัฒนาซอฟต์แวร์ตามหลักการพัฒนา System development Life Cycle (SDLC) เข้าใจขั้นตอนการพัฒนาซอฟต์แวร์แบบอื่นๆ เช่น Agile เป็นต้น รอบคอบและเฉลียวฉลาด ข้อนี้จะเกิดได้ ก็จากสองอันแรก ...