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

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

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

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

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

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

เงื่อนไข

ต่อไปนี้เป็นคำศัพท์ใหม่บางส่วนที่ใช้ในเอกสารนี้เพื่ออธิบายนโยบายเคอร์เนลทั่วไปของ Android

เคอร์เนลคุณลักษณะ

เมล็ดที่ได้รับการปรับปรุงด้วยคุณสมบัติสำหรับการเปิดตัวแพลตฟอร์มล่าสุด Android จะเรียกว่าเมล็ดคุณลักษณะ สำหรับ Android 11 เคอร์เนลของฟีเจอร์จะขึ้นอยู่กับเคอร์เนลเวอร์ชัน 4.14.y, 4.19.y และ 5.4.y ในการเผยแพร่แพลตฟอร์มที่ผ่านมา เคอร์เนลคุณลักษณะเหมือนกับเคอร์เนลที่เรียกใช้ อย่างไรก็ตาม ใน Android 12 จะมีเคอร์เนลฟีเจอร์สองตัวและเคอร์เนลเรียกใช้สามตัว

รูปภาพเคอร์เนลทั่วไป

เริ่มตั้งแต่ Android 11 เป็นต้นไป เคอร์เนลทั่วไปของ Android ถูกใช้เพื่อสร้าง Generic Kernel Images (GKI) ซึ่งเป็นอิมเมจเคอร์เนล Aarch64 ที่สามารถใช้เพื่อเรียกใช้อุปกรณ์ใดๆ ที่มี SoC และการสนับสนุนไดรเวอร์ที่ใช้งานในโมดูลของผู้จำหน่าย สำหรับรายละเอียดโปรดดูที่ ภาพรวม GKI

ส่วนต่อประสานโมดูลเคอร์เนล

GKI แนะนำแนวคิดของการมีเสถียรภาพเคอร์เนลโมดูล Interface (KMI) ที่ช่วยให้เคอร์เนลหลักในการได้รับการปรับปรุงถ่ายทอดสดจากโมดูลผู้ขาย เมื่อ KMI ถูกระงับ จะไม่สามารถทำการเปลี่ยนแปลงใด ๆ ที่ทำให้ความเข้ากันได้ของไบนารีกับโมดูลผู้ขายที่มีอยู่หยุดชะงักไม่ได้ ดู ภาพรวม GKI สำหรับรายละเอียดเกี่ยวกับ KMI

เรียกใช้เคอร์เนล

เมล็ดเปิดตัวกำหนดสามารถนำมาใช้สำหรับการเปิดตัวอุปกรณ์ที่มีการเปิดตัวแพลตฟอร์ม Android โดยเฉพาะอย่างยิ่ง สำหรับ Android 11 อุปกรณ์สามารถเปิดได้ด้วยเคอร์เนลตามเวอร์ชันเคอร์เนล 4.14.y, 4.19.y และ 5.4.y

ประเภทสาขาเคอร์เนลทั่วไป

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

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

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

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

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

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

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

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง
Android 8.1 (โอรีโอ) android-4.4-o
android-4.9-o
มิถุนายน 2564
แอนดรอยด์ 9 (พาย) android-4.4-p
android-4.9-p
android-4.14-p
มกราคม 2022
Android 10 android-4.9-q
android-4.14-q
android-4.19-q
มกราคม 2023
Android 11 android-4.14-stable
android-4.19-stable
มกราคม 2024

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

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

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

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

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

การเปิดตัวแพลตฟอร์ม Android เคอร์เนล รองรับจนถึง
Android 8.0 (โอรีโอ) android-3.18-o-release
android-4.4-o-release
android-4.9-o-release
มกราคม 2564
Android 8.1 (โอรีโอ MR1) android-3.18-o-mr1
android-4.4-o-mr1
android-4.9-o-mr1
มิถุนายน 2564
แอนดรอยด์ 9 (พาย) android-4.4-p-release
android-4.9-p-release
android-4.14-p-release
มกราคม 2022
Android 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
มกราคม 2023

ฟีเจอร์และเปิดใช้เคอร์เนล

แพลตฟอร์ม Android แต่ละรุ่นรองรับการเปิดตัวอุปกรณ์ใหม่โดยใช้เคอร์เนลลินุกซ์รุ่นใดก็ได้จากสามเวอร์ชัน ดังแสดงในตารางด้านล่างเมล็ดเปิดตัวสำหรับ 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 เปิดตัวเมล็ด เมล็ดคุณสมบัติ
แอนดรอยด์ 9 (2018) android-4.4-p
android-4.9-p
android-4.14-p
android-4.4-p
android-4.9-p
android-4.14-p

แอนดรอยด์ 10 (2019) android-4.9-q
android-4.14-q
android-4.19-q

android-4.9-q
android-4.14-q
android-4.19-q
แอนดรอยด์ 11 (2020) android-4.14-stable
android-4.19-stable
android11-5.4
android-4.14-stable
android-4.19-stable
android11-5.4
แอนดรอยด์ 12 (2021) android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
android12-5.4
android12-5.10
Android T (AOSP ทดลอง) (2022) 1 android12-5.4
android12-5.10
android13-5.10
android13-5.x
android13-5.10
android13-5.x 2

1 Android T (AOSP ทดลอง) (2022) ไม่ได้มุ่งมั่นและแสดงให้เห็นเพียงเพื่อแสดงให้เห็นว่ารูปแบบการแตกกิ่งใหม่จะมีความคืบหน้าในอนาคตที่มีสองบาร์และสามเมล็ดเปิดตัว

2 ไหน 5.x เป็นรุ่นเคอร์เนลเลือกเป็น LTS ในตอนท้ายของ 2021

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

แยกสาขาจาก android-mainline

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

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

รูปที่ 1 การสร้างเมล็ดที่พบบ่อยจากหุ่นยนต์ฉีดเคอร์เนล

ขอให้สังเกตว่าใน Android สามัญใหม่เคอร์เนล android12-5.10 ถูกแยกจาก android-mainline ในปี 2020 2021 เมื่อ LTS ต่อไปคือการประกาศ android13-5.x (ที่ 5.xy เป็นรุ่นเคอร์เนลเลือกเป็น LTS) จะสาขาจาก android-mainline

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

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

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

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

รูปที่ 2 5.10 KMI วงจรสาขา

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

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

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

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

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

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

KMI แช่แข็งเฟส

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

เมื่อสาขา 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);

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

เมื่อเข้าสู่เฟสที่หยุดนิ่ง แบรนช์จะถูกแท็กด้วย git-tagged ด้วยสตริงเวอร์ชัน 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 เดียวกันกำลังเปลี่ยนแปลงโดยเริ่มจากเคอร์เนล KMI ใหม่

เมล็ด KMI

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

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

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

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

เมล็ดพืชดั้งเดิม

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

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

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

การเปิดตัวแพลตฟอร์ม Android เมล็ดที่รองรับสำหรับการอัพเกรด เมล็ดที่รองรับสำหรับการเปิดตัว
แอนดรอยด์ 9 (2018) android-3.10
android-3.18
android-4.4-o
android-4.9-o
android-4.4-p
android-4.9-p
android-4.14-p
แอนดรอยด์ 10 (2019) android-3.18
android-4.4-o
android-4.9-o
android-4.4-p
android-4.9-p
android-4.14-p
android-4.9-q
android-4.14-q
android-4.19-q
แอนดรอยด์ 11 (2020) android-4.4-o
android-4.4-p
android-4.9-o
android-4.9-p
android-4.9-q
android-4.14-p
android-4.14-q
android-4.19-q
android-4.14-stable
android-4.19-stable
android11-5.4
แอนดรอยด์ 12 (2021) android-4.9-o
android-4.9-p
android-4.9-q
android-4.14-p
android-4.14-q
android-4.19-q
android-4.14-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10

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

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

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

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

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

การทดสอบการทำงานของ Linaro Kernel

Linaro Kernel ฟังก์ชั่นการทดสอบ (LKFT) การทดสอบเริ่มต้นห้องทดสอบต่าง ๆ รวมทั้ง kselftest, LTP, VTS และ CTS ในชุดของทางกายภาพและ arm32 arm64 อุปกรณ์ ผลการทดสอบล่าสุดสามารถพบได้ ที่นี่

การทดสอบ KernelCI

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

การทดสอบล่วงหน้าของ Android และ postsubmit

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

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

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

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

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

เคอร์เนลทั่วไปของ Android การเปิดตัวแพลตฟอร์ม Android ห้องทดสอบ
ผู้เชี่ยวชาญ 12 11 10 9 (พาย) LKFT KernelCI ส่งล่วงหน้า โพสต์ ส่ง 0 วัน
android-mainline
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
android-4.14-q
android-4.9-q
android-4.14-p
android-4.9-p
android-4.4-p

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

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

ส่งแพทช์เพื่อ Gerrit และสอดคล้องกับเหล่านี้ แนวทางการมีส่วนร่วม