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

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) ภาค 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 เวอร์ชั่นเก่า พวกระบบปฏิบ

ขั้นตอนการเก็บรวบรวมความต้องการ Waterfall step 2

Waterfall Model ขั้นตอนที่ 2 การเก็บรวบรวมความต้องการระบบ หัวข้อก็บอกต้องอธิบายกันดีรึเปล่าครับ คือ ก่อนที่เราจะสร้างระบบหรือซอฟต์แวร์ เราก็ต้องการรู้ก่อนว่าความต้องการที่จะได้ซอฟต์แวร์แบบไหนออกมาให้ตรงความต้องการลูกค้าหรือผู้ใช้งาน งานหลักๆ ของ System Analyst (SA) ในขั้นตอนนี้ คือ หาความต้องการของระบบ โดยจะมีวิธีอยู่หลายๆอย่าง เบื้องต้น การทำแบบสอบถาม การสัมภาษณ์   การขอเอกสารของระบบงาน กรณีต้องการเอาระบบงานเดิมที่ทำงานโดยใช้เอกสารเปลี่ยนมาเป็นระบบงานโดยใช้ไอที โดยข้อมูลเบื้องต้นที่ผมได้กล่าวถึงนี้ ซึ่งก็เพียงพอต่อการทราบถึงข้อมูลความต้องการของระบบ ซึ่งในส่วนนี้เป็นอะไรที่สำคัญมากๆ เพราะการที่ SA มีประสบการณ์งานเยอะจะได้เปรียบในการรวบรวมข้อมูลต่างๆ รวมถึงการตั้งคำถาม การหาข้อมูลเชิงลึกสำคัญที่เกี่ยวกับระบบที่พัฒนา ผมลืมพูดถึงไปนิดเกี่ยวกับของการจัดทำในส่วนของแบบสอบถาม หรือการสัมภาษณ์นั้น ซึ่ง SA ที่ชำนาญและมีประสบการณ์ระบบงานมากๆ นั้น จะมีการใช้คำถามปิด และคำถามเปิด เพื่อให้ได้มาของความต้องการของระบบ คำถามปิด คือ คำถามที่บังคับให้ผู้ตอบ ตอบคำถ

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