เคอร์เนล 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 และโมดูลของผู้ให้บริการ
รูปที่ 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)
- เคอร์เนลที่ได้รับการสนับสนุนระยะยาว (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 โปรดเริ่มต้นด้วยการอ่านข้อมูลต่อไปนี้
- เคอร์เนลเสถียรระยะยาว - ข้อมูลเบื้องต้นเกี่ยวกับเคอร์เนล LTS ต้นทางที่ป้อนลงใน ACK
- เคอร์เนลทั่วไปของ Android - ข้อมูลพื้นฐานเกี่ยวกับ ACK
หากคุณเพิ่งเริ่มพัฒนาเคอร์เนล GKI โปรดเริ่มต้นด้วยการอ่านการพัฒนา GKI