ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
คำถามที่พบบ่อยเกี่ยวกับเคอร์เนล Android
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
เอกสารนี้มีคําถามที่พบบ่อยเกี่ยวกับเคอร์เนล Android หรือที่เรียกว่าเคอร์เนล Generic Kernel Image (GKI) หากคุณไม่คุ้นเคยกับคำศัพท์เกี่ยวกับ GKI และเคอร์เนล GKI โปรดดูภาพรวมของเคิร์นัล
รายการสัญลักษณ์ของอินเทอร์เฟซโมดูลเคอร์เนล (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 ที่ได้รับการรับรอง รวมถึงบังคับใช้ข้อกำหนด GKI สำหรับแต่ละรุ่น ตัวอย่างเช่น การทดสอบ VTS ของ Android 12 สำหรับส่วนหัวของบูต v3 และเพื่อยืนยันว่ามีพาร์ติชันที่จำเป็นในอุปกรณ์ที่ใช้เคอร์เนล 5.10
ฉันจะสร้างไฟล์แฟรกเมนต์ defconfig ของโปรเจ็กต์สำหรับบิลด์อุปกรณ์ได้อย่างไร
อุปกรณ์ที่เป็นไปตามข้อกำหนด GKI จํานวนมากใช้ข้อมูลโค้ดการกําหนดค่าเพื่ออธิบายตัวเลือกการกําหนดค่าที่จําเป็น นอกเหนือจาก gki_defconfig
เพื่อสร้างโมดูลของผู้ให้บริการ
ตัวอย่างที่เป็นส่วนหนึ่งของโค้ดเบส ACK ได้แก่ Cuttlefish และ DB845c
คุณไม่สามารถหลีกเลี่ยงการตรวจสอบตัวเลือกการกําหนดค่าด้วยตนเองเพื่อเพิ่มประสิทธิภาพของข้อมูลโค้ดได้ แต่ scripts/diffconfig
จากแหล่งที่มาของเคอร์เนลมีประโยชน์สําหรับการเปรียบเทียบผลลัพธ์ของ gki_defconfig
กับ gki_defconfig+device.fragment
มีวิธีแก้ปัญหาสำหรับ modprobe ที่ถือว่า - และ _ มีค่าเท่ากันไหม
หน้าแมนของ modprobe มีคำอธิบายดังนี้ "modprobe
เพิ่มหรือนำโมดูลออกจากเคอร์เนล Linux อย่างชาญฉลาด: โปรดทราบว่าไม่มีความแตกต่างระหว่าง _ และ - ในชื่อโมดูล (ระบบจะแปลงเครื่องหมายขีดล่างโดยอัตโนมัติ) เพื่ออำนวยความสะดวก" ทีม GKI ยึดตามรูปแบบมาตรฐานของ Upstream ดังนั้นเครื่องมือของผู้ให้บริการหรือรูปแบบการตั้งชื่อโมดูลต้องคำนึงถึงการยึดตามนี้
ฉันจะเปิดใช้ debugfs เพื่อใช้งานภายในได้อย่างไร
โปรดดูรายละเอียดเกี่ยวกับการเปิดใช้ debugfs ที่หัวข้อฟีเจอร์การแก้ไขข้อบกพร่องที่รบกวนการดาวน์สตรีม
ฉันจะแก้ไข ABI ที่ไม่ตรงกันระหว่างเคอร์เนล GKI ที่เปิดใช้การกำหนดค่าโมดูลที่เฉพาะเจาะจงได้อย่างไร
ABI ที่ไม่ตรงกันระหว่างการกำหนดค่าเคอร์เนล GKI กับการกำหนดค่าโมดูลแสดงถึงการใช้การกำหนดค่าโมดูลโดยนัย ซึ่งการเปิดใช้โมดูลจะทำให้มีการรวมการกำหนดค่าไบนารีไว้ในอิมเมจเคอร์เนลที่ได้ โปรดติดต่อทีมเคอร์เนลของ Android (kernel-team@android.com) เพื่อหาแนวทางแก้ปัญหา หลังจากกำหนดรายการสัญลักษณ์แล้ว ให้สร้างข้อบกพร่องในเครื่องมือติดตามปัญหาและอัปโหลดการเปลี่ยนแปลงรายการสัญลักษณ์
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Android kernel frequently asked questions\n\nThis document contains frequently asked questions about the Android kernel,\nknown also as the Generic Kernel Image (GKI) kernel. If you are unfamiliar with\nGKI and GKI kernel terminology, refer to the\n[Kernel overview](/docs/core/architecture/kernel).\n\nCan Kernel Module Interface (KMI) symbol lists be changed in a stable kernel?\n-----------------------------------------------------------------------------\n\nChanges that don't affect the existing KMI can be added to kernels that are\nfrozen. These changes include new exported functions and symbol list entries.\nFor details, see [Manage symbol lists](/docs/core/architecture/kernel/stable-kmi#managing-symbol-lists).\n\nCan I change structures used by vendor modules in a stable kernel?\n------------------------------------------------------------------\n\nStructures that are part of a KMI interface can't be changed in kernels with a\nfrozen KMI. Prior to KMI freeze, these structures can be changed.\n\nCan I change the kernel as long as I don't break binary or source compatibility?\n--------------------------------------------------------------------------------\n\nChanges that don't affect the KMI can be made as described in [Android-specific\npatches](/docs/core/architecture/kernel/kernel-code#android-specific-patches).\n\nHow does GKI handle kernel configuration?\n-----------------------------------------\n\nFor information on kernel configuration, refer to the\n[Changes to gki_defconfig](/docs/core/architecture/kernel/kernel-code#changes-to-gki-defconfig).\n\nHow do I handle upstream bug fixes for overwrites to existing GKI modules?\n--------------------------------------------------------------------------\n\nIf you create a vendor module based on a driver in\n[Android Common Kernel (ACK)](/docs/core/architecture/kernel/android-common),\nit's up to you to ensure that bug fixes from upstream and ACK are propagated\nto your module. Generally, it's in your best interest to use the GKI kernel and\nGKI modules without modification so these updates are provided consistently\nby Google.\n\nAre there GKI specific tests?\n-----------------------------\n\nThere are [Vendor Test Suite (VTS)](/docs/compatibility/vts) tests that verify\nthat a certified GKI build is installed and also to enforce per-release GKI\nrequirements. For example, there are Android 12 VTS tests for boot header v3\nand to verify the existence of required partitions in a device running a 5.10\nkernel.\n\nHow do I create the project defconfig fragment file for device builds?\n----------------------------------------------------------------------\n\nMany GKI-compliant devices use a config fragment to describe the configuration\noptions needed, in addition to `gki_defconfig`, to build the vendor modules.\nExamples that are part of the ACK codebase include Cuttlefish and DB845c.\nThere's no way to avoid some manual examination of configuration options\nto optimize the fragment, but `scripts/diffconfig` from the kernel sources\nis useful for comparing the results of `gki_defconfig` and\n`gki_defconfig+device.fragment`.\n\nIs there a workaround for modprobe treating - and _ as equivalent?\n------------------------------------------------------------------\n\nThe\n[modprobe man page](https://man7.org/linux/man-pages/man8/modprobe.8.html)\ncontains this description: \"`modprobe` intelligently adds\nor removes a module from the Linux kernel: note that for convenience, there is\nno difference between _ and - in module names (automatic underscore conversion\nis performed).\" The GKI team adheres to the standard upstream convention, so\nvendor tools or module naming conventions must take this adherence into account.\n\nHow do I enable debugfs for internal use?\n-----------------------------------------\n\nFor details on enabling debugfs, see [intrusive downstream debug\nfeatures](/docs/core/architecture/kernel/debugging-with-gki#intrusive-downstream-debug-features).\n\nHow can I resolve mismatched ABIs between the GKI kernel with a specific module configuration enabled?\n------------------------------------------------------------------------------------------------------\n\nMismatched ABIs between the GKI kernel and module configuration represents an\nimplicit module config dependency, where enabling a module causes a binary\nconfig to be built into the resulting kernel image. Reach out to the Android\nkernel team\n([kernel-team@android.com](mailto:kernel-team@android.com)) to determine a path\nforward. After the list of symbols is determined, create a bug in the\n[Issue Tracker](https://issuetracker.google.com/components/1124381) and upload\na change to the symbol list."]]