เคอร์เนล Android อิงตามเคอร์เนล Linux ที่มีการรองรับระยะยาว (LTS) Google รวมเคอร์เนล LTS เข้ากับแพตช์สำหรับ Android โดยเฉพาะเพื่อสร้างสิ่งที่เรียกว่าเคอร์เนล Android ทั่วไป (ACK)
ACK เวอร์ชันใหม่ (เวอร์ชัน 5.4 ขึ้นไป) เรียกอีกอย่างว่าเคอร์เนล GKI เคอร์เนล GKI รองรับการแยกรหัสเคอร์เนลหลักทั่วไปที่ไม่เจาะจงฮาร์ดแวร์และโมดูล GKI ออกจากโมดูลของผู้ให้บริการที่เจาะจงฮาร์ดแวร์
เคอร์เนล GKI จะโต้ตอบกับโมดูลของผู้ให้บริการสำหรับฮาร์ดแวร์โดยเฉพาะซึ่งมีระบบวงจรรวมบนชิป (SoC) และโค้ดสำหรับบอร์ดโดยเฉพาะ การโต้ตอบระหว่างเคอร์เนล GKI กับโมดูลของผู้ให้บริการจะทําได้โดยใช้ Kernel Module Interface (KMI) ซึ่งประกอบด้วยรายการสัญลักษณ์ที่ระบุฟังก์ชันและข้อมูลส่วนกลางที่จําเป็นสําหรับโมดูลของผู้ให้บริการ รูปที่ 1 แสดงเคอร์เนล GKI และสถาปัตยกรรมของข้อบังคับของผู้ให้บริการ
![สถาปัตยกรรม GKI](https://source.android.google.cn/static/docs/core/architecture/images/generic-kernel-image-architecture.png?authuser=5&hl=th)
อภิธานศัพท์เกี่ยวกับเคอร์เนล
ส่วนนี้มีคำศัพท์ที่ใช้ตลอดทั้งเอกสารประกอบของเคิร์กเนล
ประเภทเคอร์เนล
- Android Common Kernel (ACK)
- เคอร์เนลที่ดาวน์สตรีมมาจากเคอร์เนล LTS และมีแพตช์ที่ชุมชน Android สนใจซึ่งยังไม่ได้ผสานรวมเข้ากับเมนไลน์ของ Linux หรือเคอร์เนลที่มีการสนับสนุนระยะยาว (LTS) ACK เวอร์ชันใหม่ (เวอร์ชัน 5.4 ขึ้นไป) เรียกอีกอย่างว่าเคอร์เนล GKI เนื่องจากรองรับการแยกโค้ดเคอร์เนลทั่วไปที่ไม่คำนึงถึงฮาร์ดแวร์และโมดูล GKI ที่ไม่คำนึงถึงฮาร์ดแวร์
- เคอร์เนลของโครงการโอเพนซอร์ส Android (AOSP)
- ดูเคอร์เนลทั่วไปของ Android
- เคอร์เนลฟีเจอร์
- เคอร์เนลที่รับประกันว่าจะมีการใช้ฟีเจอร์ของรุ่นแพลตฟอร์ม ตัวอย่างเช่น ใน Android 12 เคอร์เนลฟีเจอร์ 2 รายการคือ android12-5.4 และ android12-5.10 ฟีเจอร์ของ Android 12 ไม่สามารถพอร์ตไปยังเคอร์เนล 4.19 ได้ ชุดฟีเจอร์จะคล้ายกับอุปกรณ์ที่เปิดตัวด้วย 4.19 ใน Android 11 และอัปเกรดเป็น Android 12
- เคอร์เนลแกนประมวลผลทั่วไป
- ส่วนของเคอร์เนล GKI ที่เหมือนกันในทุกอุปกรณ์
- เคอร์เนลของ Generic Kernel Image (GKI)
- เคอร์เนล ACK เวอร์ชันใหม่กว่า (5.4 ขึ้นไป) (ปัจจุบันมีเฉพาะ aarch64 เท่านั้น) เคอร์เนลนี้มี 2 ส่วน ได้แก่ เคอร์เนล GKI หลักที่มีโค้ดที่ใช้ร่วมกันในอุปกรณ์ทั้งหมดและโมดูล GKI ที่พัฒนาโดย Google ซึ่งสามารถโหลดแบบไดนามิกในอุปกรณ์ได้ (หากมี)
- เคอร์เนลของอินเทอร์เฟซโมดูลเคอร์เนล (KMI)
- ดูเคอร์เนล GKI
- เปิดเคอร์เนล
- เคอร์เนลที่ใช้ได้กับการเปิดตัวอุปกรณ์สำหรับแพลตฟอร์ม Android เวอร์ชันหนึ่งๆ ตัวอย่างเช่น ใน Android 12 เคอร์เนลที่ใช้งานได้ในการเปิดตัวคือ 4.19, 5.4 และ 5.10
- เคอร์เนลที่รองรับระยะยาว (LTS)
- เคอร์เนล Linux ที่รองรับ 2-6 ปี เคอร์เนล LTS จะเผยแพร่ปีละครั้งและเป็นพื้นฐานของ ACK แต่ละรุ่นของ Google
ประเภทสาขา
- ACK สาขาเคอร์เนล KMI
- สาขาที่ใช้สร้างเคอร์เนล GKI เช่น android12-5.10 และ android13-5.15
- Android-mainline
- สาขาการพัฒนาหลักสำหรับฟีเจอร์ Android เมื่อมีการประกาศ LTS เคอร์เนลใหม่ในอัปสตรีม ระบบจะแยก เคอร์เนล GKI ใหม่ที่เกี่ยวข้องออกจาก android-mainline
- เวอร์ชันหลักของ Linux
- สาขาการพัฒนาหลักสำหรับเคอร์เนล Linux เวอร์ชันอัปสตรีม รวมถึงเคอร์เนล LTS
คำศัพท์อื่นๆ
- อิมเมจบูทที่ผ่านการรับรอง
- เคอร์เนลที่ส่งในรูปแบบไบนารี (
boot.img
) และแฟลชลงในอุปกรณ์ รูปภาพนี้ได้รับการรับรองในแง่ที่มีใบรับรองที่ฝังอยู่เพื่อให้ Google ยืนยันได้ว่าอุปกรณ์มาพร้อมกับเคอร์เนลที่ Google รับรอง - โมดูลเคอร์เนลที่โหลดแบบไดนามิก (DLKM)
- โมดูลที่โหลดแบบไดนามิกได้ในระหว่างการบูตอุปกรณ์ โดยขึ้นอยู่กับความต้องการของอุปกรณ์ ทั้ง GKI และข้อบังคับของผู้ให้บริการเป็น DLKM ทั้ง 2 ประเภท DLKM จะเผยแพร่ในรูปแบบ
.ko
และอาจเป็นไดรเวอร์หรือสามารถส่งฟังก์ชันการทำงานของเคอร์เนลอื่นๆ - โปรเจ็กต์ GKI
- โปรเจ็กต์ของ Google ที่จัดการการแยกตัวของเคอร์เนลโดยแยกฟังก์ชันการทำงานของเคอร์เนลหลักทั่วไปออกจากการรองรับ SoC และบอร์ดที่เจาะจงของผู้ให้บริการเป็นโมดูลที่โหลดได้
- อิมเมจเคอร์เนลทั่วไป (GKI)
- อิมเมจการบูตที่ผ่านการรับรองจาก Google ซึ่งมีเคอร์เนล GKI ที่สร้างขึ้นจากซอร์สทรี ACK และเหมาะสำหรับแฟลชลงในพาร์ติชันการบูตของอุปกรณ์ Android
- KMI
- อินเทอร์เฟซระหว่างเคอร์เนล GKI กับโมดูลของผู้ให้บริการ ซึ่งช่วยให้อัปเดตโมดูลของผู้ให้บริการได้โดยไม่ขึ้นอยู่กับเคอร์เนล GKI อินเทอร์เฟซนี้ประกอบด้วยฟังก์ชันเคอร์เนลและข้อมูลส่วนกลางที่ระบุว่าเป็นข้อกำหนดของผู้ให้บริการ/OEM โดยใช้รายการสัญลักษณ์ต่อพาร์ทเนอร์
- โมดูล GKI
- โมดูลเคอร์เนลที่ Google สร้างขึ้นซึ่งสามารถโหลดแบบไดนามิกในอุปกรณ์ได้ (หากมี)
โมดูลเหล่านี้สร้างขึ้นเพื่อเป็นอาร์ติแฟกต์ของเคอร์เนล GKI และส่งพร้อมกับ GKI ในรูปแบบไฟล์
system_dlkm_staging_archive.tar.gz
Google ลงนามในโมดูล GKI โดยใช้คู่คีย์เวลาสร้างเคอร์เนล และใช้ได้กับเคอร์เนล GKI ที่สร้างขึ้นเท่านั้น - โมดูลผู้ให้บริการ
- โมดูลเฉพาะฮาร์ดแวร์ที่พัฒนาโดยพาร์ทเนอร์และมีฟังก์ชันการทำงานเฉพาะ SoC และอุปกรณ์ โมดูลของผู้ให้บริการคือโมดูลเคอร์เนลที่โหลดแบบไดนามิกได้
สิ่งต่อไปที่ควรทำ
- หากคุณเพิ่งเริ่มพัฒนาเคอร์เนล Android คุณอาจต้องเริ่มต้นด้วยการอ่านข้อมูลต่อไปนี้
- เคอร์เนลเสถียรระยะยาว - ข้อมูลเบื้องต้นเกี่ยวกับเคอร์เนล LTS ต้นทางที่ส่งไปยัง ACK
- เคอร์เนลทั่วไปของ Android - ข้อมูลเบื้องต้นเกี่ยวกับ ACK
- หากคุณเพิ่งเริ่มพัฒนาเคอร์เนล GKI ให้เริ่มต้นด้วยการอ่านการพัฒนา GKI