เมล็ดพืชทั่วไปของ Android

เคอร์เนลทั่วไปของ AOSP (หรือเรียกอีกอย่างว่าเคอร์เนลทั่วไปของ Android หรือ ACK ) เป็นดาวน์สตรีมของ เคอร์เนล kernel.org และรวมแพตช์ที่น่าสนใจสำหรับชุมชน Android ที่ยังไม่ได้รวมเข้ากับเคอร์เนล mainline หรือ Long Term Supported (LTS) แพตช์เหล่านี้อาจรวมถึง:

  • Backport และฟังก์ชันอัปสตรีมที่คัดสรรมาอย่างดีที่จำเป็นสำหรับฟีเจอร์ Android
  • คุณสมบัติพร้อมสำหรับอุปกรณ์ Android แต่ยังอยู่ระหว่างการพัฒนาขั้นต้น (เช่น การเพิ่มประสิทธิภาพตำแหน่งงาน Energy Aware Scheduler)
  • คุณลักษณะของผู้ขาย/OEM ที่เป็นประโยชน์สำหรับพันธมิตรระบบนิเวศอื่นๆ (เช่น sdcardfs)

android-mainline เป็นสาขาการพัฒนาหลักสำหรับฟีเจอร์ของ Android Linux mainline จะถูกรวมเข้ากับ android-mainline ทุกครั้งที่ Linus Torvalds โพสต์ผู้สมัครรุ่นหรือรุ่น ก่อนปี 2019 เคอร์เนลทั่วไปของ Android ถูกสร้างขึ้นโดยการโคลนเคอร์เนล LTS ที่เพิ่งประกาศเมื่อเร็ว ๆ นี้ และเพิ่มแพตช์เฉพาะของ Android กระบวนการนี้มีการเปลี่ยนแปลงในปี 2019 เพื่อแยกเคอร์เนลทั่วไปของ Android ใหม่จาก android-mainline รุ่นใหม่นี้หลีกเลี่ยงความพยายามอย่างมากในการส่งต่อพอร์ตและทดสอบแพตช์ Android โดยบรรลุผลลัพธ์เดียวกันทีละน้อย android-mainline ผ่านการทดสอบอย่างต่อเนื่องที่สำคัญ โมเดลนี้รับประกันเคอร์เนลคุณภาพสูงนับจากวันที่เผยแพร่

เมื่อมีการประกาศ LTS ใหม่แบบอัปสตรีม เคอร์เนลทั่วไปที่เกี่ยวข้องจะถูกแยกจาก android-mainline ซึ่งช่วยให้พันธมิตรสามารถเริ่มต้นโครงการก่อนที่จะมีการประกาศเวอร์ชัน LTS โดยการผสานจาก android-mainline หลังจากสร้างสาขาเคอร์เนลทั่วไปใหม่แล้ว พันธมิตรจะสามารถเปลี่ยนแหล่งผสานเป็นสาขาใหม่ได้อย่างราบรื่น

สาขาเคอร์เนลทั่วไปอื่นๆ ได้รับการรวมเป็นประจำจาก เคอร์เนล LTS ที่เกี่ยวข้อง โดยปกติการผสานเหล่านี้จะดำเนินการทันทีหลังจากที่มีการโพสต์ LTS รุ่น ตัวอย่างเช่น เมื่อ Linux 4.19.64 ถูกโพสต์ มันจะถูกรวมเข้ากับเคอร์เนลทั่วไปของ 4.19 (เช่น android-4.19-q ) พันธมิตรได้รับการสนับสนุนอย่างยิ่งให้รวมจากเคอร์เนลทั่วไปเข้ากับเคอร์เนลผลิตภัณฑ์ของตนเป็นประจำเพื่อติดตาม LTS และการแก้ไขข้อบกพร่องเฉพาะของ Android ให้ทันสมัยอยู่เสมอ

สาขาเคอร์เนล ACK KMI

เคอร์เนล GKI มีอินเทอร์เฟซโมดูลเคอร์เนลที่เสถียร KMI ได้รับการระบุโดยไม่ซ้ำกันโดยเวอร์ชันเคอร์เนลและการเปิดตัวแพลตฟอร์ม Android ดังนั้นสาขาจึงมีชื่อว่า <androidRelease>-<kernel version> ตัวอย่างเช่น เคอร์เนล 5.4 GKI สำหรับ Android 11 มีชื่อว่า android11-5.4. สำหรับ Android 12 มีเคอร์เนล GKI เพิ่มเติมอีกสองตัวคือ android12-5.4 และ android12-5.10

กิ่งก้านของเมล็ดขนมมรดก

เมล็ดขนมแบบดั้งเดิมถูกสร้างขึ้นเพื่อรับประกันว่าการพัฒนาคุณสมบัติใหม่จะไม่รบกวนการรวมจากเคอร์เนลทั่วไปของ Android สาขาถูกสร้างขึ้นก่อนการเปิดตัวของหวานที่เกี่ยวข้อง และได้รับการรวมเป็นประจำจาก LTS แต่ไม่มีฟีเจอร์ใหม่ ตัวอย่างเช่น android-4.9-q ได้รับการผสานจากสาขา LTS 4.9.y

หากเวอร์ชันเคอร์เนลไม่ใช่เคอร์เนลเรียกใช้งาน จะไม่มีการสร้างเคอร์เนลของหวาน แต่เคอร์เนลที่เกี่ยวข้องกับการเปิดตัวแพลตฟอร์มล่าสุดนั้นใช้ได้สำหรับการอัพเกรดเป็นแพลตฟอร์ม Android ในอนาคต ตัวอย่างเช่น android-4.9-q เป็นรุ่นสุดท้ายของ android-4.9* ของหวาน ดังนั้นจึงได้รับการรองรับและทดสอบกับแพลตฟอร์มดั้งเดิมที่เปิดตัว นั่นคือ Android 10 นอกจากนี้ยังรองรับและทดสอบกับแพลตฟอร์มรุ่นต่างๆ ที่รองรับการอัพเกรดอุปกรณ์ที่ใช้ 4.9 อีกด้วย เคอร์เนล: Android 11 และ Android 12

เนื่องจากรูปแบบการตั้งชื่อของหวานสำหรับแพลตฟอร์ม Android ถูกยกเลิกพร้อมกับ Android 10 ของหวานรุ่นล่าสุดที่อาจเรียกว่า android-4.14-r และ android-4.19-r จึงถูกเรียกว่า android-4.14-stable และ android-4.19-stable แทน

เคอร์เนลของหวานจะถูกแทนที่ด้วยเคอร์เนล GKI ที่ขึ้นต้นด้วย Android 11 ดังนั้นรายการเคอร์เนลของหวานที่รองรับทั้งหมดจึงอยู่ในตารางนี้

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง.
แอนดรอยด์ 10 android-4.9-q
android-4.14-q
android-4.19-q
มกราคม 2023
แอนดรอยด์ 11 android-4.14-stable
android-4.19-stable
มกราคม 2024
ธันวาคม 2024

สาขาเคอร์เนลรุ่นดั้งเดิม

เคอร์เนลที่เผยแพร่ จะได้รับการบำรุงรักษาเพื่อให้ backport ของแพตช์ที่อ้างถึงใน Android Security Bulletin รายเดือน สร้างขึ้นสำหรับเคอร์เนลการเปิดตัวแต่ละครั้งเมื่อมีการเปิดตัวแพลตฟอร์ม Android ใหม่ สิ่งเหล่านี้จะเลิกใช้งานเมื่อเคอร์เนลหรือแพลตฟอร์มที่เกี่ยวข้องถูกเลิกใช้งานตามที่อธิบายไว้ใน อายุการใช้งานการสนับสนุนและแพตช์ความปลอดภัย

ทุกเดือนเมื่อมีการเผยแพร่ Android Security Bulletin เคอร์เนลเหล่านี้จะได้รับการอัปเดตด้วย backport ของแพตช์ที่อ้างถึงในกระดานข่าวที่เกี่ยวข้องกับเคอร์เนลอัปสตรีมและเคอร์เนลทั่วไปของ Android พวกเขาไม่ได้รับแพตช์ LTS ดังนั้นหมายเลขเวอร์ชันรองจึงไม่เปลี่ยนแปลง ไม่มี backport สำหรับแพตช์เฉพาะผู้จำหน่าย

ในแพลตฟอร์ม Android 11 และใหม่กว่า พันธมิตรจะต้องรวมจาก Dessert หรือ GKI Kernel เพื่อใช้แพตช์ที่อ้างถึงใน Android Security Bulletin จะไม่มีการสร้างเคอร์เนลรุ่นสำหรับ Android 11 หรือแพลตฟอร์มที่ใหม่กว่า

ดังนั้น รายการเคอร์เนลรีลีสทั้งหมด 14 รายการจะแสดงอยู่ในตารางนี้ และจะไม่มีการเพิ่มเข้าไป

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง.
แอนดรอยด์ 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
มกราคม 2023

คุณสมบัติและการเปิดตัวเคอร์เนล

แพลตฟอร์ม Android แต่ละรุ่นรองรับการเปิดตัวอุปกรณ์ใหม่โดยใช้เคอร์เนล Linux เวอร์ชันใดก็ได้จากสามเวอร์ชัน ดังที่แสดงในตารางด้านล่าง เคอร์เนลการเปิดตัวสำหรับ Android 11 คือ android-4.14-stable , android-4.19-stable และ android11-5.4

เนื่องจากโดยทั่วไปแล้วไม่จำเป็นต้องอัพเกรดเคอร์เนลเมื่อทำการอัพเดตแพลตฟอร์ม เคอร์เนลที่ขาดคุณสมบัติล่าสุดสำหรับการเปิดตัวแพลตฟอร์มยังคงสามารถใช้เพื่อเปิดอุปกรณ์ได้ ดังนั้นเคอร์เนลที่ออกแบบมาสำหรับ Android 10 เช่น android-4.19-q สามารถใช้บนอุปกรณ์ได้แม้ว่าจะอัปเกรดแพลตฟอร์มเป็น Android 11 แล้วก็ตาม เริ่มตั้งแต่ Android 12 เป็นต้นไป จะมีเคอร์เนลฟีเจอร์น้อยกว่าเคอร์เนลเรียกใช้เพื่อจำกัดจำนวน KMI ที่มั่นคงที่ต้องได้รับการสนับสนุน

การเปิดตัวแพลตฟอร์ม Android เปิดตัวเคอร์เนล เมล็ดคุณสมบัติ
แอนดรอยด์ 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
แอนดรอยด์ 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
แอนดรอยด์ 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
แอนดรอยด์ 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
แอนดรอยด์ 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

1 อาจมีข้อจำกัดเพิ่มเติมหาก BSP ที่เกี่ยวข้องได้รับการอัปเดตสำหรับการเปิดตัวแพลตฟอร์ม โดยทั่วไปแล้ว หมายเลขเคอร์เนล Android Release จะต้องมากกว่าหรือเท่ากับ เวอร์ชัน FCM เป้าหมาย ดู Vendor Interface Object - จับคู่สาขาเคอร์เนล สำหรับรายละเอียด

ลำดับชั้นเคอร์เนลทั่วไป

สาขาจาก android-mainline

ระดับบนสุดของลำดับชั้นเคอร์เนลทั่วไปจะแสดงในรูปที่ 1

การสร้างเคอร์เนลทั่วไปจากเคอร์เนล android-mainline

รูปที่ 1 การสร้างเคอร์เนลทั่วไปจากเคอร์เนล android-mainline

โปรดสังเกตว่าเคอร์เนลทั่วไปใหม่ของ Android android12-5.10 ถูกแยกจาก android-mainline ในปี 2020 ในปี 2021 เมื่อมีการประกาศ LTS ถัดไป android13-5.15 ก็แยกจาก android-mainline

ดังแสดงในรูปที่ 1 แต่ละเวอร์ชันของเคอร์เนลเป็นพื้นฐานสำหรับเคอร์เนล GKI สองตัว ตัวอย่างเช่น เคอร์เนล v5.4 สองตัวคือ android11-5.4 และ android12-5.4 ซึ่งทั้งสองเคอร์เนลเป็นฟีเจอร์เคอร์เนลสำหรับการเผยแพร่แพลตฟอร์มที่เกี่ยวข้อง นี่จะเป็นกรณีของ 5.10 เช่นกัน android12-5.10 ถูกสร้างขึ้นเมื่อมีการประกาศ LTS และ android13-5.10 จะแตกแขนงจาก android12-5.10 เมื่อฟีเจอร์เคอร์เนลเสร็จสมบูรณ์ในฤดูใบไม้ผลิปี 2021 เพื่อให้สามารถพัฒนาฟีเจอร์สำหรับ Android 13 ได้

วงจรชีวิตของสาขา ACK KMI

วงจรชีวิตของสาขา ACK KMI แสดงไว้ด้านล่างในรูปที่ 2

5.10 วงจรชีวิตสาขา ACK KMI

รูปที่ 2 5.10 วงจรชีวิตสาขา ACK KMI

เพื่อชี้แจงกระบวนการพัฒนาและวงจรชีวิตของสาขา รูปที่ 2 มุ่งเน้นไปที่สาขา ACK KMI สำหรับ 5.10

แต่ละสาขาของ ACK KMI จะวนเป็นสามเฟสตามที่ระบุไว้ในรูปที่ 2 ตามสีที่ต่างกันในแต่ละสาขา ดังที่แสดงไว้ LTS จะถูกรวมเข้าด้วยกันเป็นประจำโดยไม่คำนึงถึงเฟส

ขั้นตอนการพัฒนา

เมื่อถูกสร้างขึ้น สาขา ACK KMI จะเข้าสู่ ขั้นตอนการพัฒนา ( dev ในรูปที่ 2) และเปิดให้มีการสนับสนุนฟีเจอร์สำหรับแพลตฟอร์ม Android รุ่นถัดไป ในรูปที่ 2 android12-5.10 ถูกสร้างขึ้นเมื่อมีการประกาศ 5.10 เป็นเคอร์เนล LTS อัปสตรีมใหม่ สาขา ACK KMI ที่สองสำหรับเวอร์ชันเคอร์เนลอาจถูกสร้างขึ้นก่อนหน้านี้เพื่อให้สามารถพัฒนารุ่นต่อมาได้ ในรูปที่ 2 android13-5.10 จะถูกสร้างขึ้นเมื่อ android12-5.10 เปลี่ยนออกจากขั้นตอนการพัฒนา

เฟสการรักษาเสถียรภาพ

เมื่อสาขา ACK KMI ได้รับการประกาศว่าคุณลักษณะเสร็จสมบูรณ์ จะเข้าสู่ เฟสการรักษาเสถียรภาพ ซึ่งมีป้ายกำกับว่า แทง ในรูปที่ 2 คุณลักษณะของพันธมิตรและการแก้ไขข้อบกพร่องยังคงได้รับการยอมรับ แต่การติดตาม KMI ถูกเปิดใช้งานเพื่อตรวจจับการเปลี่ยนแปลงใดๆ ที่ส่งผลต่ออินเทอร์เฟซ ในระยะนี้ การเปลี่ยนแปลงที่ทำลาย KMI ได้รับการยอมรับ แต่คำจำกัดความของ KMI จะต้องได้รับการอัปเดตตามความจำเป็น ดู ภาพรวม GKI สำหรับรายละเอียดเกี่ยวกับการตรวจสอบ KMI

เฟสแช่แข็ง KMI

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

เมื่อสาขา ACK KMI ถูกระงับ การแก้ไขจุดบกพร่องและคุณลักษณะของคู่ค้าสามารถยอมรับได้ ตราบใดที่เคอร์เนลทั่วไปของ KMI ที่มีอยู่ไม่เสียหาย KMI สามารถขยายได้ด้วยสัญลักษณ์ที่ส่งออกใหม่ ตราบใดที่อินเทอร์เฟซที่ประกอบด้วย KMI ปัจจุบันไม่ได้รับผลกระทบ เมื่อมีการเพิ่มอินเทอร์เฟซใหม่ให้กับ KMI อินเทอร์เฟซเหล่านั้นจะเสถียรทันทีและจะไม่เสียหายจากการเปลี่ยนแปลงในอนาคต

ตัวอย่างเช่น ไม่อนุญาตให้มีการเปลี่ยนแปลงที่เพิ่มฟิลด์ให้กับโครงสร้างที่ใช้โดยเคอร์เนลทั่วไปของอินเทอร์เฟซ KMI เนื่องจากจะเปลี่ยนข้อกำหนดของอินเทอร์เฟซ:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

อย่างไรก็ตาม การเพิ่มฟังก์ชันใหม่ก็เป็นเรื่องปกติ:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

ตลอดอายุการใช้งานของเคอร์เนล GKI ความเข้ากันได้แบบย้อนหลังกับพื้นที่ผู้ใช้จะยังคงอยู่ เพื่อให้สามารถใช้เคอร์เนลได้อย่างปลอดภัยสำหรับแพลตฟอร์ม Android ที่เปิดตัวอุปกรณ์ด้วย การทดสอบอย่างต่อเนื่องกับรุ่นก่อนหน้าทำให้มั่นใจได้ว่าความเข้ากันได้จะยังคงอยู่ ดังนั้นในรูปที่ 2 เคอร์เนล android12-5.10 สามารถใช้กับอุปกรณ์ Android 12 และอุปกรณ์ Android 13 ได้ เนื่องจากการเปิดตัวแพลตฟอร์ม Android ยังเข้ากันได้กับเวอร์ชันก่อนหน้า เคอร์เนล android12-5.4 สามารถใช้กับอุปกรณ์ Android 13 ทั้งสำหรับการเปิดตัวหรืออัปเกรด

เมื่อเข้าสู่เฟสแช่แข็ง สาขาจะถูกแท็กคอมไพล์ด้วยสตริงเวอร์ชัน KMI ที่มีหมายเลขการสร้าง KMI ตัวอย่างเช่น เมื่อ android11-5.4 ถูกแช่แข็ง ระบบจะแท็กด้วยสตริงเวอร์ชัน KMI 5.4-android11-0 โดยที่ 0 ต่อท้ายคือหมายเลขการสร้าง KMI หากมีปัญหาด้านความปลอดภัยหรือเหตุการณ์อื่น ๆ ที่จำเป็นต้องยอมรับแพตช์ที่เปลี่ยนแปลง KMI หมายเลขการสร้าง KMI จะเพิ่มขึ้นและสาขาจะติดแท็กใหม่ ตัวอย่างเช่น หากการเปลี่ยนแปลงดังกล่าวได้รับการยอมรับใน android11-5.4 สาขาจะถูกแท็กด้วย KMI เวอร์ชันใหม่ 5.4-android11-1 คุณสามารถค้นหาการสร้าง KMI ปัจจุบันได้โดยใช้คำสั่ง uname :

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

ตัวเลขหลังการเปิดตัวแพลตฟอร์มคือการสร้าง KMI (0 ในกรณีนี้)

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

ความเข้ากันได้ระหว่างเมล็ด

ข้อกำหนดความเข้ากันได้ระหว่างเคอร์เนลในตระกูล LTS เดียวกันกำลังเปลี่ยนแปลงโดยเริ่มจากเคอร์เนล GKI ใหม่

เมล็ด GKI

เคอร์เนล GKI รักษาความเข้ากันได้แบบย้อนหลังกับแพลตฟอร์ม Android ทุกรุ่นที่รองรับเวอร์ชันเคอร์เนล นอกจากนี้ การเปิดตัวแพลตฟอร์ม Android ยังเข้ากันได้แบบย้อนหลังกับเคอร์เนล GKI จากรุ่นก่อนหน้า คุณจึงใช้เคอร์เนล android12-5.4 ที่พัฒนาขึ้นสำหรับ Android 12 ได้อย่างปลอดภัยบนอุปกรณ์ที่ใช้ Android 13 ความเข้ากันได้ได้รับการตรวจสอบผ่านการทดสอบ VTS และ CTS อย่างต่อเนื่องของเคอร์เนล GKI พร้อมรุ่นที่รองรับทั้งหมด

KMI มีความเสถียรเพื่อให้สามารถอัปเดตเคอร์เนลได้โดยไม่ต้องสร้างโมดูลเคอร์เนลใหม่ในอิมเมจของผู้จำหน่าย

ความเข้ากันได้ของ KMI ไม่ได้รับการดูแลระหว่างเคอร์เนล GKI ที่แตกต่างกัน ตัวอย่างเช่น ไม่สามารถแทนที่ android12-5.10 ด้วยเคอร์เนล android13-5.10 ได้โดยไม่ต้องสร้างโมดูลทั้งหมดใหม่

เคอร์เนล GKI รองรับเฉพาะรุ่นเริ่มต้นและรุ่นต่อๆ ไปเท่านั้น ไม่รองรับรุ่นเก่า ดังนั้นเคอร์เนล android13-5.10 จึงไม่รองรับบนอุปกรณ์ Android 12

เมล็ดมรดก

เคอร์เนลขนมหวานแบบเดิม ( *-q และ *-stable ) ไม่สามารถเข้ากันได้แบบย้อนหลังในแพลตฟอร์ม Android รุ่นต่างๆ แต่เคอร์เนลจากแพลตฟอร์ม Android สองรุ่นก่อนหน้านี้ได้รับการรองรับสำหรับการอัพเกรด ดังนั้น อุปกรณ์ที่เปิดตัวพร้อมกับ Android 10 โดยใช้เคอร์เนลที่ใช้ android-4.19-q จะสามารถใช้เคอร์เนล android-4.19-q ต่อไปได้เมื่ออัปเกรดเป็น Android 2020 หรืออัปเดตโค้ดเฉพาะของผู้จำหน่ายเพื่อรองรับ android-4.19-stable .

เมทริกซ์ความเข้ากันได้

ตารางนี้แสดงเวอร์ชันเคอร์เนลที่รองรับและทดสอบกับแพลตฟอร์ม Android แต่ละรุ่น

การเปิดตัวแพลตฟอร์ม Android เคอร์เนลที่รองรับสำหรับการอัพเกรด เคอร์เนลที่รองรับสำหรับการเปิดตัว
แอนดรอยด์ 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
แอนดรอยด์ 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
แอนดรอยด์ 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
แอนดรอยด์ 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
แอนดรอยด์ 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

รองรับอายุการใช้งานและแพตช์ความปลอดภัย

รองรับเคอร์เนลทั่วไปของ Android จนกว่าเคอร์เนล LTS ที่เกี่ยวข้องหรือแพลตฟอร์ม Android จะไม่ได้รับการสนับสนุนอีกต่อไป แม้ว่าเคอร์เนลจะได้รับการสนับสนุน แต่ยังคงได้รับการผสาน LTS จากอัปสตรีมและการแก้ไขข้อบกพร่องสำหรับโค้ดเฉพาะของ Android การแก้ไขเหล่านี้รวมแพตช์ความปลอดภัยของเคอร์เนลทั้งหมดที่อ้างถึงใน Android Security Bulletins รายเดือนที่เกี่ยวข้องกับเคอร์เนลทั่วไปของ Android

พันธมิตรสามารถมั่นใจได้ว่าโดยการผสานเคอร์เนลทั่วไปของ Android เป็นประจำ พวกเขาจะได้รับแพตช์การรักษาความปลอดภัยของเคอร์เนลทั้งหมดที่เป็นไปได้

การทดสอบเคอร์เนลทั่วไป

เมล็ดพืชทั่วไปได้รับการทดสอบด้วยระบบ CI หลายระบบ นอกเหนือจากการทดสอบดาวน์สตรีมโดยผู้จำหน่าย

การทดสอบการทำงานของเคอร์เนล Linux

การทดสอบ Linux Kernel Functional Test (LKFT) จะเริ่มต้นชุดการทดสอบต่างๆ รวมถึง kselftest, LTP, VTS และ CTS บนชุดอุปกรณ์ arm32 และ arm64 สามารถดูผลการทดสอบล่าสุด ได้ที่นี่

การทดสอบ KernelCI

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

การทดสอบก่อนส่งและหลังส่ง Android

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

การทดสอบภายหลังการส่งของ Android จะดำเนินการกับบิลด์ใหม่ที่เผยแพร่ในสาขาเคอร์เนลทั่วไปของ Android เมื่อมีการคอมมิตแพตช์ใหม่กับสาขาเคอร์เนลทั่วไปของ Android ใน ci.android.com เมื่อป้อน aosp_kernel เป็นชื่อสาขาบางส่วนใน ci.android.com คุณจะเห็นรายการสาขาเคอร์เนลพร้อมผลลัพธ์ ตัวอย่างเช่น ผลลัพธ์สำหรับ android-mainline สามารถพบได้ ที่นี่ เมื่อคลิกรุ่นใดรุ่นหนึ่ง คุณจะพบสถานะการทดสอบในแท็บ Test Results

การทดสอบที่กำหนดโดย การทดสอบการแม็ป ด้วยกลุ่มการทดสอบ kernel-presubmit ในแผนผังต้นทางของแพลตฟอร์ม Android จะถูกรันเป็นการส่งล่วงหน้าสำหรับสาขาเคอร์เนลของ Android ตัวอย่างเช่น การกำหนดค่าต่อไปนี้ใน test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING จะเปิดใช้งาน vts_kernel_proc_file_api_test เป็นการทดสอบล่วงหน้าในการเช็คอินโค้ดเคอร์เนลทั่วไปของ Android

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

การทดสอบ 0 วัน

การทดสอบ 0 วัน จะทำการทดสอบแบบแพตช์ต่อแพตช์บนสาขาเคอร์เนลทั่วไปของ Android ทั้งหมดเมื่อมีการส่งแพตช์ใหม่ มีการทดสอบการบูต การทำงาน และประสิทธิภาพต่างๆ เข้าร่วมกลุ่มสาธารณะ cros-kernel-buildreports

เมทริกซ์ทดสอบ

เคอร์เนลทั่วไปของ Android การเผยแพร่แพลตฟอร์ม Android ห้องทดสอบ
หลัก 14 13 12 11 10 ลคเอฟที KernelCI ส่งล่วงหน้า โพสต์ส่ง 0 วัน
android-mainline
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android-4.14-stable

มีส่วนร่วมในเคอร์เนลทั่วไปของ Android

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

ส่งแพตช์ไปที่ Gerrit และปฏิบัติตาม แนวทางการสนับสนุน เหล่านี้

,

เคอร์เนลทั่วไปของ AOSP (หรือเรียกอีกอย่างว่าเคอร์เนลทั่วไปของ Android หรือ ACK ) เป็นดาวน์สตรีมของ เคอร์เนล kernel.org และรวมแพตช์ที่น่าสนใจสำหรับชุมชน Android ที่ยังไม่ได้รวมเข้ากับเคอร์เนล mainline หรือ Long Term Supported (LTS) แพตช์เหล่านี้อาจรวมถึง:

  • Backport และฟังก์ชันอัปสตรีมที่คัดสรรมาอย่างดีที่จำเป็นสำหรับฟีเจอร์ Android
  • คุณสมบัติพร้อมสำหรับอุปกรณ์ Android แต่ยังอยู่ระหว่างการพัฒนาขั้นต้น (เช่น การเพิ่มประสิทธิภาพตำแหน่งงาน Energy Aware Scheduler)
  • คุณลักษณะของผู้ขาย/OEM ที่เป็นประโยชน์สำหรับพันธมิตรระบบนิเวศอื่นๆ (เช่น sdcardfs)

android-mainline เป็นสาขาการพัฒนาหลักสำหรับฟีเจอร์ของ Android Linux mainline จะถูกรวมเข้ากับ android-mainline ทุกครั้งที่ Linus Torvalds โพสต์ผู้สมัครรุ่นหรือรุ่น ก่อนปี 2019 เคอร์เนลทั่วไปของ Android ถูกสร้างขึ้นโดยการโคลนเคอร์เนล LTS ที่เพิ่งประกาศเมื่อเร็ว ๆ นี้ และเพิ่มแพตช์เฉพาะของ Android กระบวนการนี้มีการเปลี่ยนแปลงในปี 2019 เพื่อแยกเคอร์เนลทั่วไปของ Android ใหม่จาก android-mainline รุ่นใหม่นี้หลีกเลี่ยงความพยายามอย่างมากในการส่งต่อพอร์ตและทดสอบแพตช์ Android โดยบรรลุผลลัพธ์เดียวกันทีละน้อย android-mainline ผ่านการทดสอบอย่างต่อเนื่องที่สำคัญ โมเดลนี้รับประกันเคอร์เนลคุณภาพสูงนับจากวันที่เผยแพร่

เมื่อมีการประกาศ LTS ใหม่แบบอัปสตรีม เคอร์เนลทั่วไปที่เกี่ยวข้องจะถูกแยกจาก android-mainline ซึ่งช่วยให้พันธมิตรสามารถเริ่มต้นโครงการก่อนที่จะมีการประกาศเวอร์ชัน LTS โดยการผสานจาก android-mainline หลังจากสร้างสาขาเคอร์เนลทั่วไปใหม่แล้ว พันธมิตรจะสามารถเปลี่ยนแหล่งผสานเป็นสาขาใหม่ได้อย่างราบรื่น

สาขาเคอร์เนลทั่วไปอื่นๆ ได้รับการรวมเป็นประจำจาก เคอร์เนล LTS ที่เกี่ยวข้อง โดยปกติการผสานเหล่านี้จะดำเนินการทันทีหลังจากที่มีการโพสต์ LTS รุ่น ตัวอย่างเช่น เมื่อ Linux 4.19.64 ถูกโพสต์ มันจะถูกรวมเข้ากับเคอร์เนลทั่วไปของ 4.19 (เช่น android-4.19-q ) พันธมิตรได้รับการสนับสนุนอย่างยิ่งให้รวมจากเคอร์เนลทั่วไปเข้ากับเคอร์เนลผลิตภัณฑ์ของตนเป็นประจำเพื่อติดตาม LTS และการแก้ไขข้อบกพร่องเฉพาะของ Android ให้ทันสมัยอยู่เสมอ

สาขาเคอร์เนล ACK KMI

เคอร์เนล GKI มีอินเทอร์เฟซโมดูลเคอร์เนลที่เสถียร KMI ได้รับการระบุโดยไม่ซ้ำกันโดยเวอร์ชันเคอร์เนลและการเปิดตัวแพลตฟอร์ม Android ดังนั้นสาขาจึงมีชื่อว่า <androidRelease>-<kernel version> ตัวอย่างเช่น เคอร์เนล 5.4 GKI สำหรับ Android 11 มีชื่อว่า android11-5.4. สำหรับ Android 12 มีเคอร์เนล GKI เพิ่มเติมอีกสองตัวคือ android12-5.4 และ android12-5.10

กิ่งก้านของเมล็ดขนมมรดก

เมล็ดขนมแบบดั้งเดิมถูกสร้างขึ้นเพื่อรับประกันว่าการพัฒนาคุณสมบัติใหม่จะไม่รบกวนการรวมจากเคอร์เนลทั่วไปของ Android สาขาถูกสร้างขึ้นก่อนการเปิดตัวของหวานที่เกี่ยวข้อง และได้รับการรวมเป็นประจำจาก LTS แต่ไม่มีฟีเจอร์ใหม่ ตัวอย่างเช่น android-4.9-q ได้รับการผสานจากสาขา LTS 4.9.y

หากเวอร์ชันเคอร์เนลไม่ใช่เคอร์เนลเรียกใช้งาน จะไม่มีการสร้างเคอร์เนลของหวาน แต่เคอร์เนลที่เกี่ยวข้องกับการเปิดตัวแพลตฟอร์มล่าสุดนั้นใช้ได้สำหรับการอัพเกรดเป็นแพลตฟอร์ม Android ในอนาคต ตัวอย่างเช่น android-4.9-q เป็นรุ่นสุดท้ายของ android-4.9* ของหวาน ดังนั้นจึงได้รับการรองรับและทดสอบกับแพลตฟอร์มดั้งเดิมที่เปิดตัว นั่นคือ Android 10 นอกจากนี้ยังรองรับและทดสอบกับแพลตฟอร์มรุ่นต่างๆ ที่รองรับการอัพเกรดอุปกรณ์ที่ใช้ 4.9 อีกด้วย เคอร์เนล: Android 11 และ Android 12

เนื่องจากรูปแบบการตั้งชื่อของหวานสำหรับแพลตฟอร์ม Android ถูกยกเลิกพร้อมกับ Android 10 ของหวานรุ่นล่าสุดที่อาจเรียกว่า android-4.14-r และ android-4.19-r จึงถูกเรียกว่า android-4.14-stable และ android-4.19-stable แทน

เคอร์เนลของหวานจะถูกแทนที่ด้วยเคอร์เนล GKI ที่ขึ้นต้นด้วย Android 11 ดังนั้นรายการเคอร์เนลของหวานที่รองรับทั้งหมดจึงอยู่ในตารางนี้

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง.
แอนดรอยด์ 10 android-4.9-q
android-4.14-q
android-4.19-q
มกราคม 2023
แอนดรอยด์ 11 android-4.14-stable
android-4.19-stable
มกราคม 2024
ธันวาคม 2024

สาขาเคอร์เนลรุ่นดั้งเดิม

เคอร์เนลที่เผยแพร่ จะได้รับการบำรุงรักษาเพื่อให้ backport ของแพตช์ที่อ้างถึงใน Android Security Bulletin รายเดือน สร้างขึ้นสำหรับเคอร์เนลการเปิดตัวแต่ละครั้งเมื่อมีการเปิดตัวแพลตฟอร์ม Android ใหม่ สิ่งเหล่านี้จะเลิกใช้งานเมื่อเคอร์เนลหรือแพลตฟอร์มที่เกี่ยวข้องถูกเลิกใช้งานตามที่อธิบายไว้ใน อายุการใช้งานการสนับสนุนและแพตช์ความปลอดภัย

ทุกเดือนเมื่อมีการเผยแพร่ Android Security Bulletin เคอร์เนลเหล่านี้จะได้รับการอัปเดตด้วย backport ของแพตช์ที่อ้างถึงในกระดานข่าวที่เกี่ยวข้องกับเคอร์เนลอัปสตรีมและเคอร์เนลทั่วไปของ Android พวกเขาไม่ได้รับแพตช์ LTS ดังนั้นหมายเลขเวอร์ชันรองจึงไม่เปลี่ยนแปลง ไม่มี backport สำหรับแพตช์เฉพาะผู้จำหน่าย

ในแพลตฟอร์ม Android 11 และใหม่กว่า พันธมิตรจะต้องรวมจาก Dessert หรือ GKI Kernel เพื่อใช้แพตช์ที่อ้างถึงใน Android Security Bulletin จะไม่มีการสร้างเคอร์เนลรุ่นสำหรับ Android 11 หรือแพลตฟอร์มที่ใหม่กว่า

ดังนั้น รายการเคอร์เนลรีลีสทั้งหมด 14 รายการจะแสดงอยู่ในตารางนี้ และจะไม่มีการเพิ่มเข้าไป

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง.
แอนดรอยด์ 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
มกราคม 2023

คุณสมบัติและการเปิดตัวเคอร์เนล

แพลตฟอร์ม Android แต่ละรุ่นรองรับการเปิดตัวอุปกรณ์ใหม่โดยใช้เคอร์เนล Linux เวอร์ชันใดก็ได้จากสามเวอร์ชัน ดังที่แสดงในตารางด้านล่าง เคอร์เนลการเปิดตัวสำหรับ Android 11 คือ android-4.14-stable , android-4.19-stable และ android11-5.4

เนื่องจากโดยทั่วไปแล้วไม่จำเป็นต้องอัพเกรดเคอร์เนลเมื่อทำการอัพเดตแพลตฟอร์ม เคอร์เนลที่ขาดคุณสมบัติล่าสุดสำหรับการเปิดตัวแพลตฟอร์มยังคงสามารถใช้เพื่อเปิดอุปกรณ์ได้ ดังนั้นเคอร์เนลที่ออกแบบมาสำหรับ Android 10 เช่น android-4.19-q สามารถใช้บนอุปกรณ์ได้แม้ว่าจะอัปเกรดแพลตฟอร์มเป็น Android 11 แล้วก็ตาม เริ่มตั้งแต่ Android 12 เป็นต้นไป จะมีเคอร์เนลฟีเจอร์น้อยกว่าเคอร์เนลเรียกใช้เพื่อจำกัดจำนวน KMI ที่มั่นคงที่ต้องได้รับการสนับสนุน

การเปิดตัวแพลตฟอร์ม Android เปิดตัวเคอร์เนล เมล็ดคุณสมบัติ
แอนดรอยด์ 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
แอนดรอยด์ 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
แอนดรอยด์ 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
แอนดรอยด์ 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
แอนดรอยด์ 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

1 อาจมีข้อจำกัดเพิ่มเติมหาก BSP ที่เกี่ยวข้องได้รับการอัปเดตสำหรับการเปิดตัวแพลตฟอร์ม โดยทั่วไปแล้ว หมายเลขเคอร์เนล Android Release จะต้องมากกว่าหรือเท่ากับ เวอร์ชัน FCM เป้าหมาย ดู Vendor Interface Object - จับคู่สาขาเคอร์เนล สำหรับรายละเอียด

ลำดับชั้นเคอร์เนลทั่วไป

สาขาจาก android-mainline

ระดับบนสุดของลำดับชั้นเคอร์เนลทั่วไปจะแสดงในรูปที่ 1

การสร้างเคอร์เนลทั่วไปจากเคอร์เนล android-mainline

รูปที่ 1 การสร้างเคอร์เนลทั่วไปจากเคอร์เนล android-mainline

โปรดสังเกตว่าเคอร์เนลทั่วไปใหม่ของ Android android12-5.10 ถูกแยกจาก android-mainline ในปี 2020 ในปี 2021 เมื่อมีการประกาศ LTS ถัดไป android13-5.15 ก็แยกจาก android-mainline

ดังแสดงในรูปที่ 1 แต่ละเวอร์ชันของเคอร์เนลเป็นพื้นฐานสำหรับเคอร์เนล GKI สองตัว ตัวอย่างเช่น เคอร์เนล v5.4 สองตัวคือ android11-5.4 และ android12-5.4 ซึ่งทั้งสองเคอร์เนลเป็นฟีเจอร์เคอร์เนลสำหรับการเผยแพร่แพลตฟอร์มที่เกี่ยวข้อง นี่จะเป็นกรณีของ 5.10 เช่นกัน android12-5.10 ถูกสร้างขึ้นเมื่อมีการประกาศ LTS และ android13-5.10 จะแตกแขนงจาก android12-5.10 เมื่อฟีเจอร์เคอร์เนลเสร็จสมบูรณ์ในฤดูใบไม้ผลิปี 2021 เพื่อให้สามารถพัฒนาฟีเจอร์สำหรับ Android 13 ได้

วงจรชีวิตของสาขา ACK KMI

วงจรชีวิตของสาขา ACK KMI แสดงไว้ด้านล่างในรูปที่ 2

5.10 วงจรชีวิตสาขา ACK KMI

รูปที่ 2 5.10 วงจรชีวิตสาขา ACK KMI

เพื่อชี้แจงกระบวนการพัฒนาและวงจรชีวิตของสาขา รูปที่ 2 มุ่งเน้นไปที่สาขา ACK KMI สำหรับ 5.10

แต่ละสาขาของ ACK KMI จะวนเป็นสามเฟสตามที่ระบุไว้ในรูปที่ 2 ตามสีที่ต่างกันในแต่ละสาขา ดังที่แสดงไว้ LTS จะถูกรวมเข้าด้วยกันเป็นประจำโดยไม่คำนึงถึงเฟส

ขั้นตอนการพัฒนา

เมื่อถูกสร้างขึ้น สาขา ACK KMI จะเข้าสู่ ขั้นตอนการพัฒนา ( dev ในรูปที่ 2) และเปิดให้มีการสนับสนุนฟีเจอร์สำหรับแพลตฟอร์ม Android รุ่นถัดไป ในรูปที่ 2 android12-5.10 ถูกสร้างขึ้นเมื่อมีการประกาศ 5.10 เป็นเคอร์เนล LTS อัปสตรีมใหม่ สาขา ACK KMI ที่สองสำหรับเวอร์ชันเคอร์เนลอาจถูกสร้างขึ้นก่อนหน้านี้เพื่อให้สามารถพัฒนารุ่นต่อมาได้ ในรูปที่ 2 android13-5.10 จะถูกสร้างขึ้นเมื่อ android12-5.10 เปลี่ยนออกจากขั้นตอนการพัฒนา

เฟสการรักษาเสถียรภาพ

เมื่อสาขา ACK KMI ได้รับการประกาศว่าคุณลักษณะเสร็จสมบูรณ์ จะเข้าสู่ เฟสการรักษาเสถียรภาพ ซึ่งมีป้ายกำกับว่า แทง ในรูปที่ 2 คุณลักษณะของพันธมิตรและการแก้ไขข้อบกพร่องยังคงได้รับการยอมรับ แต่การติดตาม KMI ถูกเปิดใช้งานเพื่อตรวจจับการเปลี่ยนแปลงใดๆ ที่ส่งผลต่ออินเทอร์เฟซ ในระยะนี้ การเปลี่ยนแปลงที่ทำลาย KMI ได้รับการยอมรับ แต่คำจำกัดความของ KMI จะต้องได้รับการอัปเดตตามความจำเป็น ดู ภาพรวม GKI สำหรับรายละเอียดเกี่ยวกับการตรวจสอบ KMI

เฟสแช่แข็ง KMI

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

เมื่อสาขา ACK KMI ถูกระงับ การแก้ไขข้อบกพร่องและคุณลักษณะของคู่ค้าสามารถยอมรับได้ ตราบใดที่เคอร์เนลทั่วไปของ KMI ที่มีอยู่ไม่เสียหาย KMI สามารถขยายได้ด้วยสัญลักษณ์ที่ส่งออกใหม่ ตราบใดที่อินเทอร์เฟซที่ประกอบด้วย KMI ปัจจุบันไม่ได้รับผลกระทบ เมื่อมีการเพิ่มอินเทอร์เฟซใหม่ให้กับ KMI อินเทอร์เฟซเหล่านั้นจะเสถียรทันทีและจะไม่เสียหายจากการเปลี่ยนแปลงในอนาคต

ตัวอย่างเช่น ไม่อนุญาตให้มีการเปลี่ยนแปลงที่เพิ่มฟิลด์ให้กับโครงสร้างที่ใช้โดยเคอร์เนลทั่วไปของอินเทอร์เฟซ KMI เนื่องจากจะเปลี่ยนข้อกำหนดของอินเทอร์เฟซ:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

อย่างไรก็ตาม การเพิ่มฟังก์ชันใหม่ก็เป็นเรื่องปกติ:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

ตลอดอายุการใช้งานของเคอร์เนล GKI ความเข้ากันได้แบบย้อนหลังกับพื้นที่ผู้ใช้จะยังคงอยู่ เพื่อให้สามารถใช้เคอร์เนลได้อย่างปลอดภัยสำหรับแพลตฟอร์ม Android ที่เปิดตัวอุปกรณ์ด้วย การทดสอบอย่างต่อเนื่องกับรุ่นก่อนหน้าทำให้มั่นใจได้ว่าความเข้ากันได้จะยังคงอยู่ ดังนั้นในรูปที่ 2 เคอร์เนล android12-5.10 สามารถใช้กับอุปกรณ์ Android 12 และอุปกรณ์ Android 13 ได้ เนื่องจากการเปิดตัวแพลตฟอร์ม Android ยังเข้ากันได้กับเวอร์ชันก่อนหน้า เคอร์เนล android12-5.4 สามารถใช้กับอุปกรณ์ Android 13 ทั้งสำหรับการเปิดตัวหรืออัปเกรด

เมื่อเข้าสู่เฟสแช่แข็ง สาขาจะถูกแท็กคอมไพล์ด้วยสตริงเวอร์ชัน KMI ที่มีหมายเลขการสร้าง KMI ตัวอย่างเช่น เมื่อ android11-5.4 ถูกแช่แข็ง ระบบจะแท็กด้วยสตริงเวอร์ชัน KMI 5.4-android11-0 โดยที่ 0 ต่อท้ายคือหมายเลขการสร้าง KMI หากมีปัญหาด้านความปลอดภัยหรือเหตุการณ์อื่นที่ต้องยอมรับแพตช์ที่เปลี่ยนแปลง KMI หมายเลขการสร้าง KMI จะเพิ่มขึ้นและสาขาจะติดแท็กใหม่ ตัวอย่างเช่น หากการเปลี่ยนแปลงดังกล่าวได้รับการยอมรับใน android11-5.4 สาขาจะถูกแท็กด้วย KMI เวอร์ชันใหม่ 5.4-android11-1 คุณสามารถค้นหาการสร้าง KMI ปัจจุบันได้โดยใช้คำสั่ง uname :

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

ตัวเลขหลังการเปิดตัวแพลตฟอร์มคือการสร้าง KMI (0 ในกรณีนี้)

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

ความเข้ากันได้ระหว่างเมล็ด

ข้อกำหนดความเข้ากันได้ระหว่างเคอร์เนลในตระกูล LTS เดียวกันกำลังเปลี่ยนแปลงโดยเริ่มจากเคอร์เนล GKI ใหม่

เมล็ด GKI

เคอร์เนล GKI รักษาความเข้ากันได้แบบย้อนหลังกับแพลตฟอร์ม Android ทุกรุ่นที่รองรับเวอร์ชันเคอร์เนล นอกจากนี้ การเปิดตัวแพลตฟอร์ม Android ยังเข้ากันได้แบบย้อนหลังกับเคอร์เนล GKI จากรุ่นก่อนหน้า คุณจึงใช้เคอร์เนล android12-5.4 ที่พัฒนาขึ้นสำหรับ Android 12 ได้อย่างปลอดภัยบนอุปกรณ์ที่ใช้ Android 13 ความเข้ากันได้ได้รับการตรวจสอบผ่านการทดสอบ VTS และ CTS อย่างต่อเนื่องของเคอร์เนล GKI พร้อมรุ่นที่รองรับทั้งหมด

KMI มีความเสถียรเพื่อให้สามารถอัปเดตเคอร์เนลได้โดยไม่ต้องสร้างโมดูลเคอร์เนลใหม่ในอิมเมจของผู้จำหน่าย

ความเข้ากันได้ของ KMI ไม่ได้รับการดูแลระหว่างเคอร์เนล GKI ที่แตกต่างกัน ตัวอย่างเช่น ไม่สามารถแทนที่ android12-5.10 ด้วยเคอร์เนล android13-5.10 ได้โดยไม่ต้องสร้างโมดูลทั้งหมดใหม่

เคอร์เนล GKI รองรับเฉพาะรุ่นเริ่มต้นและรุ่นต่อๆ ไปเท่านั้น ไม่รองรับรุ่นเก่า ดังนั้นเคอร์เนล android13-5.10 จึงไม่รองรับบนอุปกรณ์ Android 12

เมล็ดมรดก

เคอร์เนลขนมหวานแบบเดิม ( *-q และ *-stable ) ไม่สามารถเข้ากันได้แบบย้อนหลังในแพลตฟอร์ม Android รุ่นต่างๆ แต่เคอร์เนลจากแพลตฟอร์ม Android สองรุ่นก่อนหน้านี้ได้รับการรองรับสำหรับการอัพเกรด ดังนั้น อุปกรณ์ที่เปิดตัวพร้อมกับ Android 10 โดยใช้เคอร์เนลที่ใช้ android-4.19-q จะสามารถใช้เคอร์เนล android-4.19-q ต่อไปได้เมื่ออัปเกรดเป็น Android 2020 หรืออัปเดตโค้ดเฉพาะของผู้จำหน่ายเพื่อรองรับ android-4.19-stable .

เมทริกซ์ความเข้ากันได้

ตารางนี้แสดงเวอร์ชันเคอร์เนลที่รองรับและทดสอบกับแพลตฟอร์ม Android แต่ละรุ่น

การเปิดตัวแพลตฟอร์ม Android เคอร์เนลที่รองรับสำหรับการอัพเกรด เคอร์เนลที่รองรับสำหรับการเปิดตัว
แอนดรอยด์ 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
แอนดรอยด์ 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
แอนดรอยด์ 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
แอนดรอยด์ 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
แอนดรอยด์ 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

รองรับอายุการใช้งานและแพตช์ความปลอดภัย

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

พันธมิตรสามารถมั่นใจได้ว่าโดยการผสานเคอร์เนลทั่วไปของ Android เป็นประจำ พวกเขาจะได้รับแพตช์การรักษาความปลอดภัยของเคอร์เนลทั้งหมดที่เป็นไปได้

การทดสอบเคอร์เนลทั่วไป

เมล็ดพืชทั่วไปได้รับการทดสอบด้วยระบบ CI หลายระบบ นอกเหนือจากการทดสอบดาวน์สตรีมโดยผู้จำหน่าย

การทดสอบการทำงานของเคอร์เนล Linux

การทดสอบ Linux Kernel Functional Test (LKFT) จะเริ่มต้นชุดการทดสอบต่างๆ รวมถึง kselftest, LTP, VTS และ CTS บนชุดอุปกรณ์ arm32 และ arm64 สามารถดูผลการทดสอบล่าสุด ได้ที่นี่

การทดสอบ KernelCI

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

การทดสอบก่อนส่งและหลังส่ง Android

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

การทดสอบภายหลังการส่งของ Android จะดำเนินการกับบิลด์ใหม่ที่เผยแพร่ในสาขาเคอร์เนลทั่วไปของ Android เมื่อมีการคอมมิตแพตช์ใหม่กับสาขาเคอร์เนลทั่วไปของ Android ใน ci.android.com เมื่อป้อน aosp_kernel เป็นชื่อสาขาบางส่วนใน ci.android.com คุณจะเห็นรายการสาขาเคอร์เนลพร้อมผลลัพธ์ ตัวอย่างเช่น ผลลัพธ์สำหรับ android-mainline สามารถพบได้ ที่นี่ เมื่อคลิกรุ่นใดรุ่นหนึ่ง คุณจะพบสถานะการทดสอบในแท็บ Test Results

การทดสอบที่กำหนดโดย การทดสอบการแม็ป ด้วยกลุ่มการทดสอบ kernel-presubmit ในแผนผังต้นทางของแพลตฟอร์ม Android จะถูกรันเป็นการส่งล่วงหน้าสำหรับสาขาเคอร์เนลของ Android ตัวอย่างเช่น การกำหนดค่าต่อไปนี้ใน test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING จะเปิดใช้งาน vts_kernel_proc_file_api_test เป็นการทดสอบล่วงหน้าในการเช็คอินโค้ดเคอร์เนลทั่วไปของ Android

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

การทดสอบ 0 วัน

การทดสอบ 0 วัน จะทำการทดสอบแบบแพตช์ต่อแพตช์บนสาขาเคอร์เนลทั่วไปของ Android ทั้งหมดเมื่อมีการส่งแพตช์ใหม่ มีการทดสอบการบูต การทำงาน และประสิทธิภาพต่างๆ เข้าร่วมกลุ่มสาธารณะ cros-kernel-buildreports

เมทริกซ์ทดสอบ

เคอร์เนลทั่วไปของ Android การเผยแพร่แพลตฟอร์ม Android ห้องทดสอบ
หลัก 14 13 12 11 10 ลคเอฟที KernelCI ส่งล่วงหน้า โพสต์ส่ง 0 วัน
android-mainline
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android-4.14-stable

มีส่วนร่วมในเคอร์เนลทั่วไปของ Android

โดยทั่วไปการพัฒนาคุณลักษณะควรทำบน Linux ฉีดและไม่ได้อยู่ในเมล็ด Android ทั่วไป การพัฒนาต้นน้ำได้รับการสนับสนุนอย่างมากและหลังจากได้รับการยอมรับการพัฒนาที่นั่นสามารถย้อนกลับไปยังสาขา ACK เฉพาะได้อย่างง่ายดายตามต้องการ ทีมเคอร์เนล Android ยินดีที่จะสนับสนุนความพยายามต้นน้ำเพื่อประโยชน์ของระบบนิเวศ Android

ส่งแพตช์ไปยัง Gerrit และสอดคล้องกับ แนวทางการบริจาค เหล่านี้