อุปกรณ์ Android มีพาร์ติชันหรือส่วนต่างๆ ของพื้นที่เก็บข้อมูลที่ใช้เก็บซอฟต์แวร์ของอุปกรณ์ โดยแต่ละพาร์ติชันจะมีภาพพาร์ติชัน (ไฟล์ IMG) หรือสแนปชอตของซอฟต์แวร์ทั้งหมดสำหรับพาร์ติชันนั้น รูปที่ 1 แสดงเลย์เอาต์ของพาร์ติชันหลักในอุปกรณ์
รูปที่ 1 เลย์เอาต์ของพาร์ติชันหลัก
พาร์ติชันแบ่งออกเป็น 3 หมวดหมู่ ได้แก่
พาร์ติชันระบบคือพาร์ติชันที่อัปเดตเมื่ออัปเดตระบบปฏิบัติการและฟีเจอร์อื่นๆ
system
,boot
และinit_boot
คือพาร์ติชันหลักของระบบพาร์ติชันของผู้ให้บริการมีโค้ดเฉพาะอุปกรณ์และฮาร์ดแวร์ที่อาจไม่มีการอัปเดตหลังจากการเผยแพร่ครั้งแรก พาร์ติชัน
vendor
,vendor_boot
และodm
เป็นพาร์ติชันของผู้ให้บริการหลักพาร์ติชันที่อัปเดตไม่ได้คือพาร์ติชันที่เนื้อหาไม่มีการอัปเดตหรืออัปเดตด้วยข้อมูลผู้ใช้
โค้ดในพาร์ติชันระบบและพาร์ติชันของผู้ให้บริการสามารถโต้ตอบโดยใช้อินเทอร์เฟซที่เสถียรซึ่งเรียกว่าอินเทอร์เฟซของผู้ให้บริการ (VINTF)
พาร์ติชันระบบ
ต่อไปนี้คือรายการพาร์ติชันระบบทั้งหมดและการใช้งาน
พาร์ติชัน
boot
พาร์ติชันนี้มีอิมเมจเคอร์เนลทั่วไป (GKI) พาร์ติชันนี้ยังมี RAMdisk ทั่วไปในอุปกรณ์ที่เปิดตัวใน Android 12 และต่ำกว่าด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับ RAM disk ทั่วไปได้ที่เนื้อหารูปภาพ RAM disk ทั่วไปพาร์ติชัน
init_boot
(Android 13 ขึ้นไป) พาร์ติชันนี้มีแรมดิสก์ทั่วไป ใน Android 11 และ 12 แรมดิสก์ทั่วไปจะอยู่ในส่วนแบ่งข้อมูลboot
พาร์ติชัน
system
พาร์ติชันนี้มีอิมเมจระบบที่ใช้สำหรับผลิตภัณฑ์ OEMพาร์ติชัน
system_ext
พาร์ติชันนี้มีทรัพยากรของระบบและโมดูลระบบที่เป็นกรรมสิทธิ์ซึ่งขยายอิมเมจระบบทั่วไปในพาร์ติชันsystem
พาร์ติชัน
system_dlkm
พาร์ติชันนี้มีโมดูล GKI ดูข้อมูลเพิ่มเติมเกี่ยวกับพาร์ติชันนี้ได้ที่ติดตั้งใช้งานพาร์ติชันโมดูล GKIพาร์ติชัน
product
พาร์ติชันนี้อาจมีโมดูลเฉพาะผลิตภัณฑ์ซึ่งไม่ได้รวมอยู่ในพาร์ติชันอื่นๆพาร์ติชัน
pvmfw
พาร์ติชันนี้จะจัดเก็บเฟิร์มแวร์ของ Virtual Machine ที่ได้รับการคุ้มครอง (pvmfw) ซึ่งเป็นโค้ดแรกที่ทำงานใน VM ที่ได้รับการคุ้มครอง ดูข้อมูลเพิ่มเติมได้ที่เฟิร์มแวร์ของ Virtual Machine ที่ป้องกันพาร์ติชัน
generic_bootloader
พาร์ติชันนี้มีบูตโหลดเดอร์ทั่วไป
พาร์ติชันของผู้ให้บริการ
ต่อไปนี้คือรายการพาร์ติชันของผู้ให้บริการทั้งหมดและการใช้งาน
พาร์ติชัน
vendor_boot
พาร์ติชันนี้มีโค้ดบูตเฉพาะผู้ให้บริการ ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชันสำหรับบูตของผู้ให้บริการพาร์ติชัน
recovery
พาร์ติชันนี้จะจัดเก็บอิมเมจการกู้คืน ซึ่งจะบูตในระหว่างกระบวนการอัปเดตผ่านอากาศ (OTA) อุปกรณ์ที่รองรับการอัปเดตแบบราบรื่นจะจัดเก็บอิมเมจการกู้คืนเป็นแรมดิสก์ที่อยู่ในอิมเมจboot
หรือinit_boot
ดูข้อมูลเพิ่มเติมเกี่ยวกับการอัปเดตแบบราบรื่นได้ที่การอัปเดต A/B (แบบราบรื่น)พาร์ติชัน
vbmeta
พาร์ติชันนี้มีข้อมูลการบูตที่ยืนยันแล้วสำหรับพาร์ติชันทั้งหมด ข้อมูลนี้ยืนยันว่าอิมเมจที่ติดตั้งในแต่ละพาร์ติชันเชื่อถือได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการบูตที่ยืนยันแล้วพาร์ติชัน
vendor
พาร์ติชันนี้มีไบนารีที่เจาะจงผู้ให้บริการและไม่ทั่วไปพอที่จะเผยแพร่ไปยัง AOSPพาร์ติชัน
vendor_dlkm
พาร์ติชันนี้มีโมดูลเคอร์เนลของผู้ให้บริการ การจัดเก็บโมดูลเคอร์เนลของผู้ให้บริการในพาร์ติชันนี้แทนพาร์ติชันvendor
จะช่วยให้คุณอัปเดตโมดูลเคอร์เนลได้โดยไม่ต้องอัปเดตพาร์ติชันvendor
ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชัน DKLM ของผู้ให้บริการและ ODMพาร์ติชัน
odm
พาร์ติชันนี้มีการปรับแต่งของผู้ผลิตการออกแบบเดิม (ODM) สำหรับแพ็กเกจการสนับสนุนบอร์ดสําหรับระบบบนชิป (SoC) ของผู้ให้บริการ การปรับแต่งดังกล่าวช่วยให้ ODM เปลี่ยนหรือปรับแต่งคอมโพเนนต์ SoC รวมถึงติดตั้งใช้งานโมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ดและเดมอน รวมถึงฟีเจอร์เฉพาะ ODM ในเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ได้ พาร์ติชันนี้ไม่บังคับ โดยปกติแล้ว พาร์ติชันนี้จะใช้เพื่อเก็บข้อมูลการปรับแต่งเพื่อให้อุปกรณ์ใช้รูปภาพผู้ให้บริการเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการได้ ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชัน ODMพาร์ติชัน
odm_dlkm
พาร์ติชันนี้มีไว้สำหรับจัดเก็บโมดูลเคอร์เนล ODM โดยเฉพาะ การจัดเก็บโมดูลเคอร์เนล ODM ในพาร์ติชันนี้แทนพาร์ติชันodm
จะช่วยให้คุณอัปเดตโมดูลเคอร์เนล ODM ได้โดยไม่ต้องอัปเดตพาร์ติชันodm
ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชัน DKLM ของผู้ให้บริการและ ODMพาร์ติชัน
radio
พาร์ติชันนี้มีรูปภาพวิทยุและจำเป็นสำหรับอุปกรณ์ที่มีวิทยุที่มีซอฟต์แวร์เฉพาะวิทยุในพาร์ติชันเฉพาะเท่านั้น
พาร์ติชันที่อัปเดตไม่ได้
ต่อไปนี้คือรายการของพาร์ติชันที่อัปเดตไม่ได้ทั้งหมดและการใช้งาน
พาร์ติชัน
cache
พาร์ติชันนี้มีข้อมูลชั่วคราวและคุณเลือกได้หากอุปกรณ์ใช้การอัปเดตแบบราบรื่น พาร์ติชันนี้ไม่จำเป็นต้องเขียนจาก Bootloader แต่ต้องลบได้ ขนาดของพาร์ติชันจะขึ้นอยู่กับประเภทอุปกรณ์และพื้นที่ว่างในuserdata
โดยปกติแล้ว 50-100 MB ก็เพียงพอแล้วพาร์ติชัน
userdata
พาร์ติชันนี้มีแอปและข้อมูลของผู้ใช้ที่ติดตั้ง รวมถึงข้อมูลการปรับแต่งพาร์ติชัน
metadata
หากอุปกรณ์ใช้การเข้ารหัสข้อมูลเมตา พาร์ติชันนี้จะมีคีย์การเข้ารหัสข้อมูลเมตา พาร์ติชันนี้มีขนาดใหญ่ตั้งแต่ 16 MB ขึ้นไป ไม่ได้เข้ารหัส และไม่มีการสร้างภาพรวมข้อมูล ระบบจะลบพาร์ติชันนี้ออกเมื่อรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น
กฎและคำแนะนำการอัปเดตพาร์ติชัน
เราขอแนะนำให้อัปเดตพาร์ติชันระบบทั้งหมดพร้อมกัน และอัปเดตพาร์ติชันของผู้ให้บริการทั้งหมดพร้อมกันอีก การอัปเดตชุดพาร์ติชันโดยรวมจะช่วยให้คุณทดสอบเพื่อยืนยันว่าอินเทอร์เฟซระหว่างรูปภาพในแต่ละพาร์ติชันยังคงเสถียร
ไม่ว่าจะอัปเดตพาร์ติชันด้วยวิธีใด คุณก็ต้องอัปเดตพาร์ติชันต่อไปนี้เนื่องจากมีการพึ่งพาที่เชื่อมโยงกันอย่างใกล้ชิดและไม่มี API ที่เสถียร
- พาร์ติชัน
boot
และsystem_dlkm
- พาร์ติชัน
init_boot
,system
,system_ext
และproduct
พาร์ติชันแบบไดนามิก
อุปกรณ์ที่ใช้ Android 11 ขึ้นไปรองรับพาร์ติชันแบบไดนามิก ซึ่งเป็นระบบการแบ่งพาร์ติชันพื้นที่ผู้ใช้สำหรับ Android ที่ช่วยให้คุณสร้าง ปรับขนาด หรือลบพาร์ติชันในระหว่างการอัปเดตผ่านอากาศ (OTA) ได้ ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชันแบบไดนามิก
พาร์ติชัน
misc
พาร์ติชันนี้ใช้โดยพาร์ติชันการกู้คืนและมีขนาดใหญ่กว่าหรือเท่ากับ 256 KBพาร์ติชัน
tos
พาร์ติชันนี้มีอิมเมจไบนารีของระบบปฏิบัติการ Trusty และจะใช้งานได้ก็ต่อเมื่ออุปกรณ์มี Trusty เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชัน Trusty OS (TOS)
ผลิตภัณฑ์ย่อยของ Soong
ระบบการสร้างของ Soong ใช้ตัวแปรรูปภาพเพื่อแยก Dependency ของการสร้าง โมดูลเนทีฟ (/build/soong/cc
) สามารถเปลี่ยนโมดูลการประมวลผลของระบบเป็นตัวแปรหลักและโมดูลการประมวลผลของผู้ให้บริการเป็นตัวแปรของผู้ให้บริการได้ โมดูลในตัวแปรรูปภาพหนึ่งจะลิงก์กับโมดูลอื่นๆ ในตัวแปรรูปภาพอื่นไม่ได้
ใน Android 12 ขึ้นไป โมดูลระบบที่มี vendor_available: true
จะสร้างตัวแปรของผู้ให้บริการนอกเหนือจากตัวแปรหลัก หากต้องการสร้างผลิตภัณฑ์ย่อย คุณต้องกำหนด product_available: true
ไลบรารี VNDK บางรายการที่ไม่มี product_available: true
จะใช้กับโมดูลผลิตภัณฑ์ไม่ได้