เวอร์ชันและการอัปเดตเคอร์เนลที่เสถียร

รูปแบบรุ่นเสถียรของเคอร์เนล Linux เริ่มขึ้นในปี 2005 เมื่อเราพิจารณาแล้วว่ารูปแบบการพัฒนาเคอร์เนลที่มีอยู่ (รุ่นใหม่ทุก 2-3 เดือน) ไม่เป็นไปตามความต้องการของผู้ใช้ส่วนใหญ่ ผู้ใช้ต้องการการแก้ไขข้อบกพร่องในช่วง 2-3 เดือนดังกล่าว และระบบปฏิบัติการลีนุกซ์พบว่าการอัปเดตเคอร์เนลให้เป็นเวอร์ชันล่าสุดอยู่เสมอนั้นทำได้ยากหากไม่มีความคิดเห็นจากชุมชนเคอร์เนล โดยทั่วไปแล้ว การพยายามรักษาความปลอดภัยให้เคอร์เนลแต่ละรายการและแก้ไขข้อบกพร่องล่าสุดเป็นงานที่ซับซ้อนและต้องใช้ความพยายามอย่างมากจากบุคคลจำนวนมาก

เวอร์ชันเสถียรของเคอร์เนลจะอิงตามเวอร์ชันของ Linus Torvalds โดยตรง และเผยแพร่ทุกสัปดาห์หรือประมาณนั้น ทั้งนี้ขึ้นอยู่กับปัจจัยภายนอกต่างๆ (ช่วงเวลาของปี แพตช์ที่มี ภาระงานของผู้ดูแลรักษา ฯลฯ) การนับรุ่นที่ใช้งานเสถียรจะเริ่มต้นด้วยหมายเลขของรุ่นเคอร์เนล และเพิ่มตัวเลขอีกตัวที่ท้าย ตัวอย่างเช่น Linus เป็นผู้เผยแพร่เคอร์เนล 4.4 จากนั้นการเผยแพร่เคอร์เนลที่เสถียรซึ่งอิงตามเคอร์เนลนี้จะขึ้นชื่อว่า 4.4.1, 4.4.2, 4.4.3 และอื่นๆ โดยปกติแล้ว ลำดับนี้จะย่อเป็นตัวเลข 4.4.y เมื่อกล่าวถึงต้นไม้รุ่นที่เสถียรของเคอร์เนล ต้นไม้รุ่นเคอร์เนลที่เสถียรแต่ละต้นจะได้รับการดูแลโดยนักพัฒนาเคอร์เนลเพียงคนเดียว ซึ่งมีหน้าที่เลือกแพตช์ที่จำเป็นสำหรับรุ่นและจัดการกระบวนการตรวจสอบ/รุ่น

เรามีการดูแลรักษาเคอร์เนลที่เสถียรตลอดระยะเวลาของวงจรการพัฒนาปัจจุบัน หลังจาก Linus เผยแพร่เคอร์เนลใหม่แล้ว ต้นไม้รุ่นเคอร์เนลเสถียรก่อนหน้าจะหยุดลง และผู้ใช้ต้องเปลี่ยนไปใช้เคอร์เนลที่เผยแพร่ใหม่

เคอร์เนลที่เสถียรในระยะยาว

หลังจากผ่านกระบวนการเผยแพร่เวอร์ชันเสถียรใหม่นี้มา 1 ปี เราพบว่าผู้ใช้ Linux จำนวนมากต้องการการรองรับเคอร์เนลนานกว่าแค่ 2-3 เดือน ด้วยเหตุนี้ เราจึงสร้างรุ่นเคอร์เนลที่รองรับระยะยาว (LTS) โดยเปิดตัวเคอร์เนล LTS เวอร์ชันแรก (2.6.16) ในปี 2006 ตั้งแต่นั้นมา เราเลือกเคอร์เนล LTS ใหม่ปีละครั้ง และชุมชนเคอร์เนลจะดูแลรักษาเคอร์เนลนั้นอย่างน้อย 2 ปี

ขณะเขียนบทความนี้ เวอร์ชันเคอร์เนล LTS คือ 4.4.y, 4.9.y, 4.14.y, 4.19.y, 5.4.y และ 5.10.y เราจะเผยแพร่เคอร์เนลใหม่ทุกสัปดาห์ นักพัฒนาเคอร์เนลจะดูแลรักษาเคอร์เนลเก่าๆ เพิ่มเติมอีก 2-3 ตัวตามรอบการเผยแพร่ที่ช้าลงตามความต้องการของผู้ใช้และบางรุ่น ดูข้อมูลเกี่ยวกับเคอร์เนลเสถียรระยะยาวทั้งหมด ผู้ที่รับผิดชอบ และระยะเวลาการดูแลรักษาได้ที่หน้า kernel.org releases

เรามี Patch เฉลี่ย 6-8 รายการต่อวันสำหรับรุ่นเคอร์เนล LTS ส่วนรุ่นเคอร์เนลเสถียรปกติจะมี Patch 10-15 รายการต่อวัน จำนวนแพตช์จะผันผวนตามรุ่นโดยพิจารณาจากเวลาปัจจุบันของรุ่นเคอร์เนลสำหรับการพัฒนาที่เกี่ยวข้อง และตัวแปรภายนอกอื่นๆ ยิ่งเคอร์เนล LTS เก่ามากเท่าใด ก็ยิ่งมีแพตช์ที่ใช้ได้น้อยลงเท่านั้น เนื่องจากการแก้ไขข้อบกพร่องล่าสุดจำนวนมากไม่เกี่ยวข้องกับเคอร์เนลเก่า อย่างไรก็ตาม ยิ่งเคอร์เนลเก่ามากเท่าใด ก็ยิ่งทำให้แบ็กพอร์ตการเปลี่ยนแปลงที่จำเป็นต้องใช้ยากขึ้นเท่านั้น เนื่องจากการเปลี่ยนแปลงในโค้ดเบส ดังนั้น แม้ว่าจะมีการใช้แพตช์โดยรวมน้อยกว่า แต่ความพยายามในการดูแลรักษาเคอร์เนล LTS จะมากกว่าการดูแลรักษาเคอร์เนลเสถียรปกติ

กฎแพตช์เคอร์เนลที่เสถียร

กฎเกี่ยวกับสิ่งที่สามารถเพิ่มลงในรุ่นเคอร์เนลที่เสถียรนั้นแทบจะเหมือนกันนับตั้งแต่เปิดตัว และสรุปได้ดังนี้

  • ต้องถูกต้องและผ่านการทดสอบแล้ว
  • ต้องไม่เกิน 100 บรรทัด
  • ต้องแก้ไขเพียงสิ่งเดียว
  • ต้องแก้ไขปัญหาที่รายงานเข้ามา
  • อาจเป็นรหัสอุปกรณ์ใหม่หรือข้อบกพร่องของฮาร์ดแวร์ แต่ต้องไม่มีการเพิ่มฟังก์ชันการทำงานใหม่ที่สำคัญ
  • ต้องผสานรวมกับต้นไม้ของ Linus Torvalds แล้ว

กฎข้อสุดท้าย "ต้องผสานรวมกับต้นไม้ของ Linus Torvalds แล้ว" จะช่วยป้องกันไม่ให้ชุมชนเคอร์เนลสูญเสียการแก้ไข ชุมชนไม่ต้องการให้การแก้ไขเข้าสู่รุ่นเคอร์เนลที่เสถียรซึ่งไม่ได้อยู่ในต้นไม้ของ Linus Torvalds อยู่แล้ว เพื่อไม่ให้ผู้ที่อัปเกรดพบปัญหาเดิมซ้ำอีก วิธีนี้จะช่วยป้องกันปัญหาต่างๆ ที่โปรเจ็กต์อื่นๆ ที่ดูแลรักษาสาขาที่เสถียรและสาขาสำหรับการพัฒนาอาจพบ

การอัปเดตเคอร์เนล

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

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

อุปกรณ์ที่ใช้ Linux ซึ่งมีชุดแพตช์ขนาดใหญ่อาจพบปัญหาสำคัญเมื่ออัปเดตเป็นเคอร์เนลเวอร์ชันใหม่ เนื่องจากมีการเปลี่ยนแปลงจำนวนมากระหว่างแต่ละรุ่น (การเปลี่ยนแปลง 10-14, 000 รายการต่อรุ่น) ชุดแพตช์ SoC เป็นที่ทราบกันดีว่ามีปัญหาในการอัปเดตเป็นเคอร์เนลเวอร์ชันใหม่เนื่องจากมีขนาดใหญ่และมีการแก้ไขโค้ดเคอร์เนลเฉพาะสำหรับสถาปัตยกรรมอย่างมาก และบางครั้งก็แก้ไขโค้ดหลักด้วย ด้วยเหตุนี้ ผู้ให้บริการ SoC ส่วนใหญ่จึงเริ่มกำหนดมาตรฐานให้ใช้รุ่น LTS สำหรับอุปกรณ์ของตน ซึ่งช่วยให้อุปกรณ์เหล่านั้นได้รับการอัปเดตข้อบกพร่องและความปลอดภัยโดยตรงจากชุมชนเคอร์เนล Linux

ความปลอดภัย

เมื่อเผยแพร่เคอร์เนล ชุมชนเคอร์เนล Linux แทบจะไม่ประกาศการเปลี่ยนแปลงที่เฉพาะเจาะจงว่าเป็นการแก้ไขด้านความปลอดภัย ปัญหานี้เกิดจากความยากในการระบุว่าการแก้ไขข้อบกพร่องเป็นการแก้ไขด้านความปลอดภัยหรือไม่ ณ เวลาที่สร้างขึ้น นอกจากนี้ การแก้ไขข้อบกพร่องจำนวนมากจะได้รับการระบุว่าเกี่ยวข้องกับความปลอดภัยหลังจากผ่านไปนานแล้ว ชุมชนเคอร์เนลจึงขอแนะนำอย่างยิ่งให้ใช้การแก้ไขข้อบกพร่องทั้งหมดที่เผยแพร่เสมอ

เมื่อชุมชนเคอร์เนลได้รับรายงานปัญหาด้านความปลอดภัย เราจะแก้ไขปัญหาดังกล่าวโดยเร็วที่สุดและเผยแพร่ต่อสาธารณะในต้นไม้การพัฒนาและรุ่นที่ใช้งานจริง ดังที่อธิบายไว้ข้างต้น แทบจะไม่มีคำอธิบายการเปลี่ยนแปลงว่าเป็น "การแก้ไขความปลอดภัย" แต่ดูเหมือนการแก้ไขข้อบกพร่องอื่นๆ สำหรับเคอร์เนล การดำเนินการนี้เพื่อให้บุคคลที่ได้รับผลกระทบอัปเดตระบบได้ก่อนที่ผู้รายงานปัญหาจะประกาศ

ดูรายละเอียดเกี่ยวกับการรายงานข้อบกพร่องด้านความปลอดภัยไปยังชุมชนเคอร์เนลเพื่อแก้ไขและแก้ไขปัญหาโดยเร็วที่สุดได้ที่ข้อบกพร่องด้านความปลอดภัยในคู่มือผู้ใช้และผู้ดูแลระบบเคอร์เนล Linux ที่ www.kernel.org

เนื่องจากทีมเคอร์เนลไม่ได้ประกาศข้อบกพร่องด้านความปลอดภัยต่อสาธารณะ โดยปกติแล้วหมายเลข CVE สำหรับปัญหาที่เกี่ยวข้องกับเคอร์เนล Linux จะเผยแพร่หลังจากการแก้ไขผสานรวมกับสาขาที่เสถียรและสาขาสำหรับการพัฒนาแล้วหลายสัปดาห์ เดือน และบางครั้งก็หลายปี

รักษาระบบให้ปลอดภัย

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

  • เวอร์ชันต่างๆ ได้รับการตรวจสอบโดยนักพัฒนาเคอร์เนลโดยรวม ไม่ใช่ทีละส่วน
  • การระบุว่าการแก้ไขใดแก้ไขปัญหา "ความปลอดภัย" และรายการใดไม่แก้ไขนั้นทำได้ยาก LTS เกือบทุกรุ่นมีการแก้ไขด้านความปลอดภัยที่ทราบแล้วอย่างน้อย 1 รายการ และยังมีอีกหลายรายการที่ "ไม่ทราบ"
  • หากการทดสอบพบปัญหา ชุมชนนักพัฒนาเคอร์เนลจะดำเนินการแก้ไขอย่างรวดเร็ว
  • การพยายามกรองเฉพาะการเปลี่ยนแปลงที่คุณเรียกใช้จะทำให้มีต้นไม้เคอร์เนลที่ผสานกับรุ่นที่อัปเดตจาก upstream ในอนาคตได้อย่างถูกต้อง