ภาพรวมของเคอร์เนล

เคอร์เนล Android อิงตามเคอร์เนล Linux ที่ได้รับการสนับสนุนระยะยาว (LTS) ต้นทาง ที่ Google เราจะรวมเคอร์เนล LTS เข้ากับแพตช์เฉพาะของ Android เพื่อสร้างเคอร์เนลทั่วไปของ Android (ACK)

ACK สร้างขึ้นจากที่เก็บ kernel/common ที่เก็บนี้เป็น ซูเปอร์เซ็ตของเคอร์เนล Linux ต้นทางที่มีแพตช์เพิ่มเติมเฉพาะ Android

ACK เวอร์ชัน 5.10 ขึ้นไปเรียกอีกอย่างว่าเคอร์เนล *Generic Kernel Image (GKI)* เคอร์เนล GKI รองรับการแยกโค้ดเคอร์เนลหลักทั่วไปและโมดูล GKI ที่ไม่ขึ้นอยู่กับฮาร์ดแวร์ออกจากโมดูลของผู้ให้บริการที่เจาะจงฮาร์ดแวร์

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

สถาปัตยกรรมเคอร์เนล GKI และโมดูลของผู้ให้บริการ

รูปที่ 1 สถาปัตยกรรมเคอร์เนล GKI และโมดูลของผู้ให้บริการ

อภิธานศัพท์เคอร์เนล

ต่อไปนี้คือคำศัพท์ที่ใช้ในเอกสารประกอบของเคอร์เนล

ประเภทเคอร์เนล

เคอร์เนลทั่วไปของ Android (ACK)
เคอร์เนลที่อยู่ดาวน์สตรีมของเคอร์เนล LTS และมีแพตช์ที่ สำคัญต่อชุมชน Android แพตช์เหล่านี้ยังไม่ได้รวมเข้ากับ เคอร์เนล Linux mainline หรือ GKI ระยะยาว

เคอร์เนลเวอร์ชัน 5.10 ขึ้นไปเรียกอีกอย่างว่าเคอร์เนลรูปภาพเคอร์เนลทั่วไป (GKI)

เคอร์เนลของโครงการโอเพนซอร์ส Android (AOSP)
ดูเคอร์เนลทั่วไปของ Android

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

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

เคอร์เนล ACK เวอร์ชัน 5.10 ขึ้นไป(aarch64 เท่านั้น) เคอร์เนล GKI มี 2 ส่วนต่อไปนี้

  • เคอร์เนลทั่วไป - ส่วนของเคอร์เนล GKI ที่ใช้ร่วมกันในอุปกรณ์ ทั้งหมด

  • โมดูล GKI - โมดูลเคอร์เนลที่สร้างโดย Google ซึ่งโหลดแบบไดนามิกได้ในอุปกรณ์ที่เกี่ยวข้อง โมดูลเหล่านี้สร้างขึ้นเป็นอาร์ติแฟกต์ ของเคอร์เนล GKI และจะจัดส่งพร้อมกับ GKI เป็นอาร์ไคฟ์ system_dlkm_staging_archive.tar.gz โมดูล GKI ได้รับการลงนามจาก Google โดยใช้คู่คีย์เวลาบิลด์เคอร์เนล และใช้ได้กับ เคอร์เนล GKI ที่สร้างขึ้นด้วยเท่านั้น

เคอร์เนล Kernel Module Interface (KMI)

ดูเคอร์เนล GKI

เคอร์เนลที่ได้รับการสนับสนุนระยะยาว (LTS)

เคอร์เนล Linux ที่รองรับเป็นเวลา 2-6 ปี เคอร์เนล LTS จะ เปิดตัวปีละครั้งและเป็นพื้นฐานของเคอร์เนลทั่วไปของ Android แต่ละรายการของ Google

ประเภทสาขา

ACK KMI kernel branch
สาขาที่สร้างเคอร์เนล GKI ชื่อสาขาจะสอดคล้องกับเวอร์ชันเคอร์เนล เช่น android15-6.6
Android-mainline
สาขาการพัฒนาหลักสำหรับฟีเจอร์ Android เมื่อมีการประกาศ เคอร์เนล LTS ใหม่ในต้นทาง เราจะแยกสาขา เคอร์เนล GKI ใหม่ที่เกี่ยวข้องจาก android-mainline

Linux mainline : สาขาการพัฒนาหลักสำหรับเคอร์เนล Linux ต้นทาง รวมถึงเคอร์เนล LTS

คำศัพท์อื่นๆ

รูปภาพการเปิดเครื่องที่ได้รับการรับรอง
เคอร์เนลที่ส่งในรูปแบบไบนารี (boot.img) และแฟลชลงในอุปกรณ์ รูปภาพนี้ถือว่าได้รับการรับรองเนื่องจากมีใบรับรองที่ฝังอยู่ เพื่อให้ Google ยืนยันได้ว่าอุปกรณ์จัดส่งพร้อมกับเคอร์เนลที่ได้รับการรับรองจาก Google
โมดูลเคอร์เนลที่โหลดได้แบบไดนามิก (DLKM)
โมดูลที่โหลดแบบไดนามิกระหว่างการบูตอุปกรณ์ได้ ทั้งนี้ขึ้นอยู่กับ ความต้องการของอุปกรณ์ GKI และโมดูลของผู้ให้บริการเป็น DLKM ทั้ง 2 ประเภท DLKM จะได้รับการเผยแพร่ในรูปแบบ .ko และอาจเป็นไดรเวอร์หรืออาจให้ฟังก์ชันการทำงานอื่นๆ ของเคอร์เนล
โปรเจ็กต์ GKI
โปรเจ็กต์ของ Google ที่แก้ปัญหาการแยกส่วนของเคอร์เนลโดยแยกฟังก์ชันการทำงานของเคอร์เนลหลักทั่วไป ออกจาก SoC และการรองรับบอร์ดที่เฉพาะเจาะจงของผู้ให้บริการเป็นโมดูลที่โหลดได้

Generic Kernel Image (GKI) : อิมเมจการบูตที่ Google รับรองซึ่งมีเคอร์เนล GKI ที่สร้างจาก โครงสร้างแหล่งที่มาของ ACK และเหมาะที่จะแฟลชไปยังพาร์ติชันการบูต ของอุปกรณ์ที่ขับเคลื่อนโดย Android

Kernel Module Interface (KMI)
อินเทอร์เฟซระหว่างเคอร์เนล GKI กับโมดูลของผู้ให้บริการ ซึ่งช่วยให้ อัปเดตโมดูลของผู้ให้บริการแยกจากเคอร์เนล GKI ได้ อินเทอร์เฟซนี้ ประกอบด้วยฟังก์ชันเคอร์เนลและข้อมูลส่วนกลางที่ระบุว่าเป็น การขึ้นต่อกันของผู้ให้บริการ/OEM โดยใช้รายการสัญลักษณ์ต่อพาร์ทเนอร์
โมดูลผู้ให้บริการ
โมดูลเฉพาะฮาร์ดแวร์ที่พัฒนาโดยพาร์ทเนอร์และมี SoC และฟังก์ชันการทำงานเฉพาะอุปกรณ์ โมดูลของผู้ให้บริการเป็นโมดูลเคอร์เนลประเภทหนึ่งที่โหลดแบบไดนามิกได้

ขั้นตอนถัดไป

หากคุณเพิ่งเริ่มพัฒนาเคอร์เนล Android โปรดเริ่มต้นด้วยการอ่านข้อมูลต่อไปนี้

หากคุณเพิ่งเริ่มพัฒนาเคอร์เนล GKI โปรดเริ่มต้นด้วยการอ่านการพัฒนา GKI