โปรเจ็กต์อิมเมจเคอร์เนลทั่วไป (GKI)

เคอร์เนลของผลิตภัณฑ์หรือที่เรียกว่าเคอร์เนลของอุปกรณ์หรือเคอร์เนล OEM คือ เคอร์เนลที่คุณจัดส่งในอุปกรณ์ ก่อนที่จะมี GKI เคอร์เนลของผลิตภัณฑ์คือ ได้มาจากชุดของการเปลี่ยนแปลงเคอร์เนลอัปสตรีม รูปที่ 1 แสดงวิธีเคอร์เนล การเพิ่มก่อให้เกิดเคอร์เนลของผลิตภัณฑ์ (เคอร์เนลของ OEM/อุปกรณ์):

การสร้างเคอร์เนลผลิตภัณฑ์ก่อน GKI

รูปที่ 1 การสร้างเคอร์เนลผลิตภัณฑ์ก่อน GKI

  1. มีการแก้ไขเคอร์เนล Linux Long Term Supported (LTS) จาก kernel.org มีแพตช์เฉพาะสำหรับ Android ซึ่งส่งผลให้เกิด Android Common Kernel (ACK)
  2. ACK ได้รับการแก้ไขโดยผู้ให้บริการที่เพิ่มการสนับสนุนสำหรับระบบวงจรรวมบนชิปของตน (SoC) ผู้ให้บริการอาจทำการเพิ่มประสิทธิภาพหรือเพิ่มประสิทธิภาพการทำงานด้วย เคอร์เนลที่ได้จะเรียกว่าเคอร์เนลของผู้ให้บริการ
  3. สุดท้ายนี้ OEM ได้ปรับแต่งเคอร์เนลของผู้ให้บริการเพิ่มเติม ไดรเวอร์อุปกรณ์และการกำหนดค่าต่างๆ ที่เห็นว่าจำเป็น เคอร์เนลที่ได้ เรียกว่าเคอร์เนลของผลิตภัณฑ์

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

ต้นทุนของการกระจาย Fragment

การกระจายตัวของเคอร์เนลส่งผลเสียหลายอย่างต่อชุมชน Android

การอัปเดตความปลอดภัยนั้นต้องใช้แรงงานอย่างมาก

แพตช์ด้านความปลอดภัยที่อ้างอิงใน กระดานข่าวสารด้านความปลอดภัยของ Android (ASB) ต้องแบ็คพอร์ตไปยังเคอร์เนลของอุปกรณ์แต่ละรายการ แต่เนื่องจากเคอร์เนล การกระจาย Fragment การแพร่กระจายของซอฟต์แวร์นั้นมีค่าใช้จ่ายสูงเป็นอย่างมากในการเผยแพร่การแก้ไขด้านความปลอดภัยไปยัง อุปกรณ์ Android ภาคสนาม

ผสานรวมอัปเดตที่มีการสนับสนุนในระยะยาวได้ยาก

รุ่นที่รองรับระยะยาว (LTS) มีการแก้ไขด้านความปลอดภัยและ การแก้ไขข้อบกพร่องร้ายแรง การติดตามข่าวสารเกี่ยวกับเวอร์ชัน LTS ได้รับการพิสูจน์แล้วว่าเป็น ที่มีประสิทธิภาพที่สุดใน การแก้ไขปัญหาด้านความปลอดภัย ในอุปกรณ์ Pixel พบว่า 90% ของปัญหาด้านความปลอดภัยของเคอร์เนลที่รายงานใน ASB มี ได้รับการแก้ไขแล้วสำหรับอุปกรณ์ที่อัปเดตอยู่เสมอ

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

ห้ามการอัปเกรดการเผยแพร่แพลตฟอร์ม Android

การแยกส่วนทำให้ฟีเจอร์ใหม่ของ Android ที่ต้องใช้เคอร์เนลทำได้ยาก เพิ่มการเปลี่ยนแปลงลงในอุปกรณ์ในช่อง โค้ด Android Framework ต้องใช้สมมติฐาน ระบบรองรับเวอร์ชันเคอร์เนลสูงสุด 5 เวอร์ชัน และไม่มีการเปลี่ยนแปลงเคอร์เนล สร้างขึ้นสำหรับแพลตฟอร์มรุ่นใหม่ (Android 10 สนับสนุนเคอร์เนล 3.18, 4.4, 4.9, 4.14 และ 4.19 ซึ่งในบางกรณีอาจไม่รองรับ ได้รับการปรับปรุงด้วยฟีเจอร์ใหม่ๆ มาตั้งแต่ Android 8 ในปี 2017)

มีส่วนร่วมในการเปลี่ยนแปลงเคอร์เนลกลับไปยังอัปสตรีม Linux ได้ยาก

อุปกรณ์หลักส่วนใหญ่มีการเปลี่ยนแปลงในเคอร์เนล ที่มีเวอร์ชันเคอร์เนลที่มีอายุอย่างน้อย 18 เดือนแล้ว ตัวอย่างเช่น พารามิเตอร์ เผยแพร่เคอร์เนล 4.14 โดย kernel.org ในเดือนพฤศจิกายน 2017 และ โทรศัพท์ Android เครื่องแรกที่ใช้เคอร์เนล 4.14 เวอร์ชันซึ่งจัดส่งในฤดูใบไม้ผลิปี 2019

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

แก้ไขการกระจาย Fragment: อิมเมจเคอร์เนลทั่วไป

โปรเจ็กต์ทั่วไปของอิมเมจเคอร์เนล (GKI) จัดการการกระจายตัวของเคอร์เนลตาม การรวมเคอร์เนลหลักและการย้าย SoC และการรองรับกระดานออกจากเคอร์เนลหลัก ลงในโมดูลของผู้ให้บริการที่โหลดได้ GKI นำเสนอโมดูล Kernel ที่เสถียรด้วย อินเทอร์เฟซ (KMI) สำหรับโมดูลของผู้ให้บริการ ซึ่งสามารถอัปเดตโมดูลและเคอร์เนลได้ ได้อย่างอิสระ ลักษณะบางอย่างของเคอร์เนล GKI ได้แก่

  • เคอร์เนล GKI สร้างขึ้นจากแหล่งที่มา ACK
  • เคอร์เนล GKI เป็นไบนารีเคอร์เนลเดี่ยวและโมดูลที่เกี่ยวข้องซึ่งโหลดได้ ตามสถาปัตยกรรม ตามรุ่น LTS (ขณะนี้มีแค่ arm64 สำหรับ android11-5.4 และ android12-5.4)
  • เคอร์เนล GKI ได้รับการทดสอบกับแพลตฟอร์ม Android ทุกรุ่นที่ รองรับ ACK ที่เกี่ยวข้อง ไม่มีการเลิกใช้งานฟีเจอร์ตลอดอายุการใช้งานของ GKI เวอร์ชันเคอร์เนล
  • เคอร์เนล GKI จะแสดง KMI ที่มีความเสถียรแก่ผู้ขับขี่ภายใน LTS ที่ระบุ
  • เคอร์เนล GKI ไม่มีรหัสเฉพาะ SoC หรือบอร์ด

สำหรับรูปภาพของสถาปัตยกรรม GKI โปรดดู ภาพรวมเคอร์เนล

GKI คือการเปลี่ยนแปลงที่ซับซ้อนซึ่งทยอยเปิดตัวในหลายระยะ โดยเริ่มจาก เคอร์เนล v5.4 ในแพลตฟอร์ม Android 11

GKI มี 2 ขั้นตอนดังนี้

  • GKI 1.0 เปิดตัวใน Android 11 สำหรับอุปกรณ์ที่มี 5.4 เคอร์เนล GKI 1.0 ใช้ได้กับอุปกรณ์ทั้งหมดที่จัดส่งมาพร้อมเคอร์เนล 5.4 เปิดตัวพร้อมกับ Android 12 หรือ Android ธันวาคม
  • GKI 2.0 เปิดตัวใน Android 12 สำหรับอุปกรณ์ที่มี เคอร์เนล 5.10 และเป็นมาตรฐานใหม่สำหรับอุปกรณ์ทั้งหมดที่จัดส่งด้วยรุ่น 5.10 หรือ เคอร์เนลในภายหลัง

GKI 1.0

ใน GKI 1.0 อุปกรณ์ที่เปิดตัวด้วยเคอร์เนลเวอร์ชัน 5.4 ต้องผ่านการทดสอบ GKI (แพลตฟอร์ม Android 11 ขึ้นไป) เป้าหมายของ GKI 1.0 มีดังต่อไปนี้

  • หลีกเลี่ยงการเกิดปัญหาซ้ำในชุดทดสอบผู้ให้บริการ (VTS) หรือ ชุดทดสอบความเข้ากันได้ (CTS) เมื่อแทนที่เคอร์เนลของผลิตภัณฑ์ด้วยเคอร์เนล GKI
  • ลดภาระของพาร์ทเนอร์ในการรักษาเคอร์เนลให้เป็นปัจจุบันด้วย AOSP เคอร์เนลทั่วไป
  • รวมการเปลี่ยนแปลงหลักของ Android ในเคอร์เนลสำหรับการอัปเกรดและการเปิดตัวอุปกรณ์ ด้วย Android รุ่นใหม่
  • อย่าปล่อยให้พื้นที่ผู้ใช้ของ Android เสียหาย
  • แยกคอมโพเนนต์เฉพาะฮาร์ดแวร์ออกจากเคอร์เนลหลักเป็นโมดูลที่โหลดได้

สำหรับเอกสารเกี่ยวกับ GKI 1.0 โปรดดูที่ ส่วน GKI 1.0

GKI 2.0

ใน GKI 2.0 อุปกรณ์ที่เปิดตัวด้วยเคอร์เนลเวอร์ชัน 5.10 ขึ้นไปจะต้องจัดส่งด้วย เคอร์เนล GKI (เริ่มต้นด้วย Android 12) การเปิดเครื่องที่ลงชื่อ ภาพพร้อมใช้งานและอัปเดตเป็นประจำโดยใช้ LTS และการแก้ไขข้อบกพร่องที่สำคัญ เนื่องจาก KMI จะมีความเสถียรของไบนารี คุณจึงติดตั้งการเปิดเครื่องเหล่านี้ได้ โดยไม่ทำการเปลี่ยนแปลงกับรูปภาพของผู้ให้บริการ เป้าหมายของ GKI 2.0 ประกอบด้วย ดังต่อไปนี้:

  • อย่าทำให้เกิดการถดถอยของประสิทธิภาพหรือพลังงานที่มีนัยสำคัญเมื่อเปลี่ยน เคอร์เนลของผลิตภัณฑ์ด้วยเคอร์เนล GKI
  • เปิดให้พาร์ทเนอร์ส่งการแก้ไขด้านความปลอดภัยของเคอร์เนลและแก้ไขข้อบกพร่องโดยไม่ต้องมีผู้ให้บริการ ที่เกี่ยวข้อง
  • ลดค่าใช้จ่ายในการอัปเดตเวอร์ชันเคอร์เนลหลักสำหรับอุปกรณ์ (เช่น จากเวอร์ชัน 5.10 เป็นเคอร์เนล LTS รุ่นปี 2021)
  • รักษาไบนารีเคอร์เนล GKI เดี่ยวต่อสถาปัตยกรรมด้วยการอัปเดตเคอร์เนล และมีขั้นตอนการอัปเกรดที่ชัดเจน

GKI 2.0 แสดงสถานะปัจจุบันของเคอร์เนล Android Kernel เอกสารภายนอก GKI 1.0 และ เคอร์เนลก่อนหน้า (<= 4.19 น.) แสดงสถาปัตยกรรม GKI 2.0