คำถามที่พบบ่อยเคอร์เนล Android

เอกสารนี้ประกอบด้วยคำถามที่พบบ่อยเกี่ยวกับเคอร์เนล Android หรือที่เรียกว่าเคอร์เนล Generic Kernel Image (GKI) หากคุณไม่คุ้นเคยกับคำศัพท์เคอร์เนล GKI และ GKI โปรดดู ภาพรวมเคอร์เนล

รายการสัญลักษณ์ Kernel Module Interface (KMI) สามารถเปลี่ยนในเคอร์เนลที่เสถียรได้หรือไม่

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

ฉันสามารถเปลี่ยนโครงสร้างที่ใช้โดยโมดูลผู้จำหน่ายในเคอร์เนลที่เสถียรได้หรือไม่

โครงสร้างที่เป็นส่วนหนึ่งของอินเทอร์เฟซ KMI ไม่สามารถเปลี่ยนแปลงในเคอร์เนลที่มี KMI ที่ถูกแช่แข็งได้ ก่อนที่จะหยุด KMI โครงสร้างเหล่านี้สามารถเปลี่ยนแปลงได้

ฉันสามารถเปลี่ยนเคอร์เนลได้หรือไม่ตราบใดที่ฉันไม่ทำลายความเข้ากันได้ของไบนารี/ซอร์ส

การเปลี่ยนแปลงที่ไม่ส่งผลกระทบต่อ KMI สามารถทำได้ตามที่อธิบายไว้ใน แพตช์เฉพาะ Android

GKI จัดการการกำหนดค่าเคอร์เนลอย่างไร

สำหรับข้อมูลเกี่ยวกับการกำหนดค่าเคอร์เนล โปรดดูที่ การเปลี่ยนแปลง gki_defconfig

ฉันจะจัดการการแก้ไขข้อบกพร่องอัปสตรีมสำหรับการเขียนทับโมดูล GKI ที่มีอยู่ได้อย่างไร

หากคุณสร้างโมดูลผู้จำหน่ายตามไดรเวอร์ใน Android Common Kernel (ACK) ขึ้นอยู่กับคุณเพื่อให้แน่ใจว่าการแก้ไขข้อบกพร่องจากอัปสตรีมและ ACK ได้รับการเผยแพร่ไปยังโมดูลของคุณ โดยทั่วไป คุณควรใช้เคอร์เนล GKI และโมดูล GKI โดยไม่มีการแก้ไข ดังนั้น Google จึงจัดให้มีการอัปเดตเหล่านี้อย่างสม่ำเสมอ

มีการทดสอบเฉพาะของ GKI หรือไม่?

มีการทดสอบ Vendor Test Suite (VTS) ที่ตรวจสอบว่ามีการติดตั้ง GKI build ที่ได้รับการรับรองแล้ว และเพื่อบังคับใช้ข้อกำหนด GKI ต่อรุ่นด้วย ตัวอย่างเช่น มีการทดสอบ Android 12 VTS สำหรับส่วนหัวการบูต v3 และเพื่อตรวจสอบการมีอยู่ของพาร์ติชันที่จำเป็นในอุปกรณ์ที่ใช้เคอร์เนล 5.10

ฉันจะสร้างไฟล์แฟรกเมนต์ defconfig ของโปรเจ็กต์สำหรับบิลด์อุปกรณ์ได้อย่างไร

อุปกรณ์ที่สอดคล้องกับ GKI จำนวนมากใช้ส่วนการกำหนดค่าเพื่ออธิบายตัวเลือกการกำหนดค่าที่จำเป็น นอกเหนือจาก gki_defconfig เพื่อสร้างโมดูลผู้ขาย ตัวอย่างที่เป็นส่วนหนึ่งของฐานรหัส ACK ได้แก่ Cuttlefish และ DB845c ไม่มีทางที่จะหลีกเลี่ยงการตรวจสอบตัวเลือกการกำหนดค่าด้วยตนเองเพื่อปรับแฟรกเมนต์ให้เหมาะสม แต่ scripts/diffconfig จากแหล่งเคอร์เนลมีประโยชน์สำหรับการเปรียบเทียบผลลัพธ์ของ gki_defconfig และ gki_defconfig+device.fragment

มีวิธีแก้ไขปัญหาสำหรับ modprobe ที่รักษา - และ _ เทียบเท่าหรือไม่

หน้าคู่มือ modprobe มีคำอธิบายนี้: " modprobe เพิ่มหรือลบโมดูลออกจากเคอร์เนล Linux อย่างชาญฉลาด: โปรดทราบว่าเพื่อความสะดวก ไม่มีความแตกต่างระหว่าง _ และ - ในชื่อโมดูล (ดำเนินการแปลงขีดล่างอัตโนมัติ)" ทีมงาน GKI ปฏิบัติตามแบบแผนมาตรฐานขั้นต้น ดังนั้นเครื่องมือของผู้ขายหรือแบบแผนการตั้งชื่อโมดูลจึงต้องคำนึงถึงการปฏิบัติตามนี้ด้วย

ฉันจะเปิดใช้งาน debugfs สำหรับการใช้งานภายในได้อย่างไร

สำหรับรายละเอียดเกี่ยวกับการเปิดใช้งาน debugfs โปรดดู คุณลักษณะการแก้ไขข้อบกพร่องดาวน์สตรีมที่ล่วงล้ำ

ฉันจะแก้ไข ABI ที่ไม่ตรงกันระหว่างเคอร์เนล GKI โดยเปิดใช้งานการกำหนดค่าโมดูลเฉพาะได้อย่างไร

ABI ที่ไม่ตรงกันระหว่างเคอร์เนล GKI และการกำหนดค่าโมดูลแสดงถึงการพึ่งพาการกำหนดค่าโมดูลโดยนัย โดยที่การเปิดใช้งานโมดูลจะทำให้การกำหนดค่าไบนารี่ถูกสร้างขึ้นในอิมเมจเคอร์เนลผลลัพธ์ ติดต่อทีมเคอร์เนล Android ( kernel-team@android.com ) เพื่อกำหนดเส้นทางไปข้างหน้า หลังจากกำหนดรายการสัญลักษณ์แล้ว ให้สร้างจุดบกพร่องใน ตัวติดตามปัญหา และอัปโหลดการเปลี่ยนแปลงไปยังรายการสัญลักษณ์

ฉันมีอุปกรณ์ที่รองรับ GKI 1.0 ในภาคสนามที่ใช้เคอร์เนล 5.4 ที่เปิดตัวพร้อมกับ Android 11 และ 12 มีตัวเลือกการอัปเกรดเคอร์เนลอะไรบ้าง และฉันจะทดสอบอุปกรณ์เหล่านี้เมื่ออัปเกรดเป็น Android 12 และ 13 ได้อย่างไร

โปรดดู เมทริกซ์ความเข้ากันได้ สำหรับรายการเวอร์ชันเคอร์เนลที่รองรับสำหรับเวอร์ชันเรียกใช้และอัปเกรด ต่อไปนี้เป็นตัวอย่างการอัปเกรดสองตัวอย่าง

ตัวอย่างที่ 1: ผู้ใช้ที่มีอุปกรณ์ที่เปิดตัวด้วย Android 11 พร้อมเคอร์เนล android11-5.4 ( GKI 1.0 ) สามารถเลือกตัวเลือกใดก็ได้เหล่านี้เมื่ออัปเกรดเป็น Android 12:

  • อัปเกรดเป็นเคอร์เนล android12-5.10 GKI 2.0 (แนะนำอย่างยิ่ง)

  • เก็บเคอร์เนล android11-5.4 ไว้

  • อัปเกรดเป็นเคอร์เนล android12-5.4

ตัวอย่างที่ 2: ผู้ใช้ที่มีอุปกรณ์ที่เปิดตัวด้วย Android 12 ที่มีเคอร์เนล android12-5.4 หรือ android12-5.10 จะเลือกตัวเลือกใดก็ได้เหล่านี้เมื่ออัปเกรดเป็น Android 13

  • อัปเกรดเป็นเคอร์เนล android13-5.10 หรือ android13-5.15 GKI 2.0 (แนะนำอย่างยิ่ง)

  • เก็บเคอร์เนล android12-5.4 GKI 1.0 ไว้

  • เก็บเคอร์เนล android12-5.10 GKI 2.0 ไว้

สำหรับการทดสอบการปฏิบัติตามข้อกำหนด Treble โดยเฉพาะ เราขอแนะนำให้คุณทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • แทนที่เคอร์เนลพันธมิตรด้วยเคอร์เนล GKI 1.0 ที่ผ่านการรับรอง ( android11-5.4 หรือ android12-5.4 )

  • จัดส่งด้วยเคอร์เนล GKI 2.0 ที่ได้รับการรับรอง ( android12-5.10 , android13-5.10 หรือ android13-5.15 ) ขึ้นอยู่กับการเลือกของคุณ

คุณสามารถดาวน์โหลดบิลด์ GKI 2.0 ได้จาก บิลด์ Generic Kernel Image (GKI)