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

อุปกรณ์ Android มีพาร์ติชันหลายรายการหรือส่วนที่เฉพาะเจาะจงของพื้นที่เก็บข้อมูล ที่ใช้เพื่อจัดเก็บส่วนที่เฉพาะเจาะจงของซอฟต์แวร์ของอุปกรณ์ แต่ละพาร์ติชัน มีอิมเมจพาร์ติชัน (ไฟล์ IMG) หรือสแนปชอตของซอฟต์แวร์ทั้งหมดสำหรับ พาร์ติชัน รูปที่ 1 แสดงเลย์เอาต์ของพาร์ติชันหลักในอุปกรณ์

เลย์เอาต์ของพาร์ติชันหลัก

รูปที่ 1 เลย์เอาต์ของพาร์ติชันหลัก

พาร์ติชันแบ่งออกเป็น 3 หมวดหมู่ ดังนี้

  • พาร์ติชันระบบคือพาร์ติชันที่จะอัปเดตเมื่ออัปเดตระบบปฏิบัติการ และฟีเจอร์อื่นๆ system, boot และ init_boot เป็นพาร์ติชันหลักของระบบ

  • พาร์ติชันของผู้ให้บริการมีโค้ดเฉพาะอุปกรณ์และฮาร์ดแวร์ที่อาจ ไม่ได้รับการอัปเดตหลังจากเผยแพร่ครั้งแรก พาร์ติชัน vendor, vendor_boot และ odm เป็นพาร์ติชันหลัก

  • พาร์ติชันที่อัปเดตไม่ได้คือพาร์ติชันที่เนื้อหาไม่อัปเดต หรืออัปเดตด้วยข้อมูลผู้ใช้

โค้ดในพาร์ติชันระบบและพาร์ติชันของผู้ให้บริการสามารถโต้ตอบกันได้โดยใช้อินเทอร์เฟซที่เสถียร ซึ่งเรียกว่าอินเทอร์เฟซของผู้ให้บริการ (VINTF)

พาร์ติชันระบบ

ต่อไปนี้คือรายการพาร์ติชันระบบทั้งหมดและการใช้งาน

  • boot พาร์ติชัน พาร์ติชันนี้มีรูปภาพเคอร์เนลทั่วไป (GKI) พาร์ติชันนี้ยังมี ramdisk ทั่วไปในอุปกรณ์ที่เปิดตัวใน Android 12 และต่ำกว่าด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับ Ramdisk ทั่วไปได้ที่ เนื้อหาของอิมเมจ Ramdisk ทั่วไป

  • พาร์ติชัน init_boot (Android 13 ขึ้นไป) พาร์ติชันนี้มี ramdisk ทั่วไป ใน Android 11 และ 12 แรมดิสก์ทั่วไปจะอยู่ในพาร์ติชัน boot

  • system พาร์ติชัน พาร์ติชันนี้มีอิมเมจระบบที่ใช้ สำหรับผลิตภัณฑ์ OEM

  • system_ext พาร์ติชัน พาร์ติชันนี้มีทรัพยากรของระบบและโมดูลระบบที่เป็นกรรมสิทธิ์ซึ่งขยายอิมเมจระบบทั่วไปในพาร์ติชัน system

  • system_dlkm พาร์ติชัน พาร์ติชันนี้มีโมดูล GKI ดูข้อมูลเพิ่มเติมเกี่ยวกับพาร์ติชันนี้ได้ที่ใช้พาร์ติชันโมดูล GKI

  • product พาร์ติชัน พาร์ติชันนี้มีโมดูลเฉพาะผลิตภัณฑ์ ซึ่งไม่ได้รวมอยู่ในพาร์ติชันอื่นๆ

  • pvmfw พาร์ติชัน พาร์ติชันนี้จัดเก็บเฟิร์มแวร์เครื่องเสมือนที่ได้รับการปกป้อง (pvmfw) ซึ่งเป็นโค้ดแรกที่ทำงานใน VM ที่ได้รับการปกป้อง ดูข้อมูลเพิ่มเติมได้ที่เฟิร์มแวร์ของเครื่องเสมือนที่ได้รับการปกป้อง

  • generic_bootloader พาร์ติชัน พาร์ติชันนี้มี Bootloader ทั่วไป

พาร์ติชันของผู้ให้บริการ

ต่อไปนี้คือรายการพาร์ติชันของผู้ให้บริการทั้งหมดและการใช้งาน

  • vendor_boot พาร์ติชัน พาร์ติชันนี้มีโค้ดการบูต เฉพาะผู้ให้บริการ ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชันการบูตของผู้ให้บริการ

  • recovery พาร์ติชัน พาร์ติชันนี้จะจัดเก็บอิมเมจการกู้คืน ซึ่งจะ บูตในระหว่างกระบวนการอัปเดตผ่านอากาศ (OTA) อุปกรณ์ที่รองรับการอัปเดตที่ราบรื่นจะจัดเก็บอิมเมจการกู้คืนเป็น ramdisk ที่อยู่ในอิมเมจ boot หรือ init_boot ดูข้อมูลเพิ่มเติมเกี่ยวกับการอัปเดตที่ราบรื่นได้ที่การอัปเดต A/B (ราบรื่น)

  • vbmeta พาร์ติชัน พาร์ติชันนี้มีข้อมูลการบูตที่ยืนยันแล้ว สำหรับพาร์ติชันทั้งหมด ข้อมูลนี้จะยืนยันว่าอิมเมจที่ติดตั้งในแต่ละพาร์ติชันเชื่อถือได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การเปิดเครื่องที่ได้รับการยืนยันได้ที่ การเปิดเครื่องที่ได้รับการยืนยัน

  • vendor พาร์ติชัน พาร์ติชันนี้มีไบนารีที่เฉพาะเจาะจงสำหรับผู้ให้บริการ และไม่เป็นแบบทั่วไปพอที่จะเผยแพร่ไปยัง AOSP

  • vendor_dlkm พาร์ติชัน พาร์ติชันนี้มีโมดูลเคอร์เนลของผู้ให้บริการ การจัดเก็บโมดูลเคอร์เนลของผู้ให้บริการในพาร์ติชันนี้ แทนที่จะจัดเก็บในพาร์ติชัน vendor จะช่วยให้คุณอัปเดตโมดูลเคอร์เนล ได้โดยไม่ต้องอัปเดตพาร์ติชัน vendor ดูข้อมูลเพิ่มเติมได้ที่พาร์ติชัน DKLM ของผู้ให้บริการและ ODM

  • odm พาร์ติชัน พาร์ติชันนี้มีการปรับแต่งของผู้ผลิตการออกแบบดั้งเดิม (ODM) สำหรับแพ็กเกจการสนับสนุนบอร์ด (BSP) ของผู้จำหน่ายระบบวงจรรวมบนชิป (SoC) การปรับแต่งดังกล่าวช่วยให้ ODM สามารถแทนที่หรือปรับแต่งคอมโพเนนต์ SoC และ ใช้โมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ด, Daemon และ ฟีเจอร์เฉพาะของ 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 พาร์ติชัน พาร์ติชันนี้ใช้โดยพาร์ติชันการกู้คืนและมีขนาด 4 KB ขึ้นไป

  • tos พาร์ติชัน พาร์ติชันนี้มีอิมเมจไบนารีของ Trusty OS และจะใช้ก็ต่อเมื่ออุปกรณ์มี Trusty เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ พาร์ติชัน Trusty OS (TOS)

ผลิตภัณฑ์ย่อยของ Soong

ระบบบิลด์ Soong ใช้รูปภาพย่อยเพื่อแยกทรัพยากร Dependency ของบิลด์ โมดูลเนทีฟ (/build/soong/cc) สามารถเปลี่ยนโมดูลกระบวนการของระบบ ให้เป็นโมดูลกระบวนการหลักและโมดูลกระบวนการของผู้ให้บริการให้เป็น โมดูลกระบวนการของผู้ให้บริการได้ โมดูลในอิมเมจเวอร์ชันหนึ่งจะลิงก์กับโมดูลอื่นๆ ใน อิมเมจเวอร์ชันอื่นไม่ได้

ใน Android 12 ขึ้นไป โมดูลระบบที่มี vendor_available: true จะสร้างตัวแปรของผู้ให้บริการนอกเหนือจากตัวแปรหลัก ต้องกำหนด product_available: true เพื่อสร้างผลิตภัณฑ์ย่อย ไลบรารี VNDK บางรายการที่ไม่มี product_available: true จะไม่พร้อมใช้งานสำหรับโมดูลผลิตภัณฑ์