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

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

การเผยแพร่เคอร์เนลที่เสถียรจะขึ้นอยู่กับการเผยแพร่ของ Linus Torvalds โดยตรง และจะเผยแพร่ทุกสัปดาห์โดยประมาณ ขึ้นอยู่กับปัจจัยภายนอกต่างๆ (ช่วงเวลาของปี แพตช์ที่พร้อมใช้งาน เวิร์กโหลดของผู้ดูแล ฯลฯ) การกำหนดหมายเลขของการเผยแพร่ที่เสถียรเริ่มต้นด้วยจำนวนการเผยแพร่เคอร์เนล และหมายเลขเพิ่มเติมจะถูกเพิ่มที่ส่วนท้ายของเคอร์เนล ตัวอย่างเช่น Linus เคอร์เนล 4.4 ได้รับการเผยแพร่ และเคอร์เนลที่เสถียรซึ่งใช้เคอร์เนลนี้จะมีหมายเลข 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 อย่างรวดเร็ว

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

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

ความปลอดภัย

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

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

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

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

การรักษาระบบที่ปลอดภัย

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

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