ภาพรวมของพาร์ติชัน

อุปกรณ์ 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 จะใช้กับโมดูลผลิตภัณฑ์ไม่ได้