เคอร์เนล Android อิงตามเคอร์เนล Linux Long Term Supported (LTS) ต้นน้ำ ที่ Google เราจะรวมเคอร์เนล LTS กับแพตช์ที่เฉพาะเจาะจงกับ Android เพื่อสร้าง Android Common Kernels (ACKs)
ACKs สร้างขึ้นจากที่เก็บ kernel/common ที่เก็บนี้เป็นซูเปอร์เซ็ตของเคอร์เนล Linux ต้นน้ำ โดยมีแพตช์เพิ่มเติมที่เฉพาะเจาะจงกับ Android
ACKs เวอร์ชัน 5.10 ขึ้นไปเรียกอีกอย่างว่าเคอร์เนล *Generic Kernel Images (GKI) เคอร์เนล GKI รองรับการแยกโค้ด generic core kernel ที่ไม่ขึ้นกับฮาร์ดแวร์และ โมดูล GKI ออกจาก โมดูลของผู้ให้บริการที่เฉพาะเจาะจงกับฮาร์ดแวร์
การโต้ตอบระหว่างเคอร์เนล GKI กับโมดูลของผู้ให้บริการเกิดขึ้นได้ด้วย Kernel Module Interface (KMI) ซึ่งประกอบด้วยรายการสัญลักษณ์ที่ระบุฟังก์ชันและข้อมูลส่วนกลางที่โมดูลของผู้ให้บริการต้องใช้ รูปที่ 1 แสดงสถาปัตยกรรมเคอร์เนล GKI และโมดูลของผู้ให้บริการ

รูปที่ 1 สถาปัตยกรรมเคอร์เนล GKI และโมดูลของผู้ให้บริการ
อภิธานศัพท์ของเคอร์เนล
ต่อไปนี้เป็นคำที่ใช้ในเอกสารประกอบของเคอร์เนล
ประเภทเคอร์เนล
- Android Common Kernel (ACK)
- เคอร์เนลที่อยู่ปลายน้ำของเคอร์เนล LTS และมีแพตช์ที่สำคัญต่อชุมชน Android แพตช์เหล่านี้ยังไม่ได้ผสานรวมเข้ากับเคอร์เนลหลักของ Linux หรือเคอร์เนล GKI ระยะยาว
เคอร์เนลเวอร์ชัน 5.10 ขึ้นไปเรียกอีกอย่างว่า เคอร์เนล Generic Kernel Image (GKI)
- เคอร์เนลโครงการโอเพนซอร์ส Android (AOSP)
- ดู Android Common Kernel
เราไม่สามารถย้อนกลับฟีเจอร์ของ Android 12 ไปยังเคอร์เนล 4.19 ได้ ชุดฟีเจอร์จะคล้ายกับอุปกรณ์ที่เปิดตัวด้วย 4.19 ใน Android 11 และอัปเกรดเป็น Android 12
- เคอร์เนล Generic Kernel Image (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
- เคอร์เนล Long Term Supported (LTS)
เคอร์เนล Linux ที่ได้รับการสนับสนุนเป็นเวลา 2-6 ปี เคอร์เนล LTS จะ เผยแพร่ปีละครั้งและเป็นพื้นฐานของ เคอร์เนล Android Common Kernel แต่ละรายการของ Google
ประเภทสาขา
- สาขาเคอร์เนล ACK KMI
- สาขาที่สร้างเคอร์เนล GKI ชื่อสาขาจะสอดคล้องกับเวอร์ชันเคอร์เนล เช่น
android15-6.6 - Android-mainline
- สาขาการพัฒนาหลักสำหรับฟีเจอร์ Android เมื่อมีการประกาศเคอร์เนล LTS ใหม่ต้นน้ำ เราจะแยกเคอร์เนล GKI ใหม่ที่เกี่ยวข้องออกจาก android-mainline
Linux mainline :สาขาการพัฒนาหลักสำหรับเคอร์เนล Linux ต้นน้ำ รวมถึงเคอร์เนล LTS
คำศัพท์อื่นๆ
- อิมเมจบูตที่ผ่านการรับรอง
- เคอร์เนลที่จัดส่งในรูปแบบไบนารี (
boot.img) และแฟลชลงในอุปกรณ์ อิมเมจนี้ถือว่าผ่านการรับรองเนื่องจากมีใบรับรองฝังอยู่เพื่อให้ Google ยืนยันได้ว่าอุปกรณ์จัดส่งพร้อมเคอร์เนลที่ Google รับรอง - โมดูลเคอร์เนลที่โหลดแบบไดนามิกได้ (DLKM)
- โมดูลที่โหลดแบบไดนามิกได้ระหว่างการบูตอุปกรณ์ ทั้งนี้ขึ้นอยู่กับความต้องการของอุปกรณ์ ทั้งโมดูล GKI และโมดูลของผู้ให้บริการเป็น DLKM ประเภทหนึ่ง DLKM จะเผยแพร่ในรูปแบบ
.koและอาจเป็นไดรเวอร์หรืออาจมีฟังก์ชันการทำงานอื่นๆ ของเคอร์เนล - โปรเจ็กต์ GKI
- โปรเจ็กต์ของ Google ที่แก้ไขปัญหาการแยกส่วนของเคอร์เนลโดยการแยกฟังก์ชันการทำงานของเคอร์เนลหลักทั่วไปออกจาก SoC ที่เฉพาะเจาะจงของผู้ให้บริการและการสนับสนุนบอร์ดเป็นโมดูลที่โหลดได้
Generic Kernel Image (GKI) :อิมเมจบูตที่ Google รับรอง ซึ่งมีเคอร์เนล GKIที่สร้างขึ้นจาก ซอร์สทรีACKและเหมาะที่จะแฟลชลงในพาร์ติชันบูต ของอุปกรณ์ที่ใช้ Android
- Kernel Module Interface (KMI)
- อินเทอร์เฟซระหว่างเคอร์เนล GKI กับโมดูลของผู้ให้บริการ ซึ่งช่วยให้ โมดูลของผู้ให้บริการอัปเดตได้อย่างอิสระจากเคอร์เนล GKI อินเทอร์เฟซนี้ประกอบด้วยฟังก์ชันเคอร์เนลและข้อมูลส่วนกลางที่ระบุว่าเป็นการพึ่งพาของผู้ให้บริการ/OEM โดยใช้รายการสัญลักษณ์ต่อพาร์ทเนอร์
- โมดูลของผู้ให้บริการ
- โมดูลที่เฉพาะเจาะจงกับฮาร์ดแวร์ซึ่งพัฒนาโดยพาร์ทเนอร์และมีฟังก์ชันการทำงานที่เฉพาะเจาะจงกับ SoC และอุปกรณ์ โมดูลของผู้ให้บริการเป็นโมดูลเคอร์เนลที่โหลดแบบไดนามิกได้ประเภทหนึ่ง
ขั้นตอนถัดไป
หากคุณเพิ่งเริ่มต้นพัฒนาเคอร์เนล Android โปรดเริ่มต้นด้วยการอ่านข้อมูลต่อไปนี้
- เคอร์เนลเสถียรระยะยาว - ข้อมูลเบื้องต้นเกี่ยวกับเคอร์เนล LTS ต้นน้ำซึ่งเป็นข้อมูลป้อนเข้าของ ACK
- เคอร์เนล Android Common Kernel - ข้อมูลเบื้องต้นเกี่ยวกับ ACK
หากคุณเพิ่งเริ่มต้นพัฒนาเคอร์เนล GKI โปรดเริ่มต้นด้วยการอ่าน การพัฒนา GKI