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

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

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

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

เมล็ดที่มีเสถียรภาพในระยะยาว

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

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

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

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

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

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

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

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

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

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

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

ความปลอดภัย

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

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

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

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

รักษาระบบรักษาความปลอดภัย

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

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