ภาพรวม

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

พาร์ติชันมาตรฐาน

  • พาร์ติชัน boot พาร์ติชันนี้มีอิมเมจเคอร์เนลและสร้างขึ้นแล้ว ด้วย mkbootimg คุณสามารถใช้พาร์ติชันเสมือนเพื่อแฟลชอิมเมจใดก็ได้ โดยตรงโดยไม่ต้องแฟลชพาร์ติชันการเปิดเครื่องใหม่ พาร์ติชันนี้ยังมี RAM ดิสก์ทั่วไปในอุปกรณ์ที่เปิดตัวก่อน Android 13

    • เคอร์เนล พาร์ติชันเสมือนของ kernel จะเขียนทับเคอร์เนล (zImage, zImage-dtb, Image.gz-dtb) โดยการเขียนอิมเมจเคอร์เนลใหม่ทับภาพเก่า เคอร์เนล หากเคอร์เนลสำหรับการพัฒนาซอฟต์แวร์ที่ระบุใช้ร่วมกันไม่ได้ คุณอาจ ต้องอัปเดตพาร์ติชัน vendor, system หรือ dtb (หากมี) ด้วย โมดูลเคอร์เนลที่เกี่ยวข้อง

    • ramdisk พาร์ติชันเสมือน ramdisk จะเขียนทับ RAM โดยใช้ เขียนรูปภาพ ramdisk ใหม่ทับรูปภาพ ramdisk เดิม

    การดำเนินการเขียนทับจะระบุตำแหน่งเริ่มต้นของอิมเมจที่มีอยู่ ใน eMMC และคัดลอกภาพใหม่ไปยังตำแหน่งนั้น ภาพใหม่ (เคอร์เนลหรือ ramdisk) นั้นอาจมากกว่าไฟล์ที่มีอยู่ เพื่อเพิ่มพื้นที่ว่าง Bootloader สามารถย้ายข้อมูลตามอิมเมจหรือยกเลิกการดำเนินการด้วย ข้อผิดพลาด

  • พาร์ติชัน init_boot พาร์ติชันนี้มี RAM ทั่วไปสำหรับ อุปกรณ์ที่มาพร้อม Android 13 ขึ้นไป

  • พาร์ติชัน system พาร์ติชันนี้มีเฟรมเวิร์ก Android

  • พาร์ติชัน odm พาร์ติชันนี้มีผู้ผลิตดีไซน์ดั้งเดิม (ODM) การปรับแต่งแพ็กเกจการสนับสนุนบอร์ดของผู้ให้บริการ (SoC) ในระบบแบบออนชิป (BSP) การปรับแต่งดังกล่าวช่วยให้ ODM แทนที่หรือปรับแต่งคอมโพเนนต์ SoC ได้ และ ใช้โมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ด, Daemon และ ฟีเจอร์เฉพาะ ODM ในเลเยอร์แอบสแตรกต์ของฮาร์ดแวร์ (HAL) พาร์ติชันนี้ ไม่บังคับ โดยปกติจะใช้ในการปรับแต่งเพื่อให้อุปกรณ์ ใช้อิมเมจผู้ให้บริการรูปเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการ โปรดดูรายละเอียดที่ ODM พาร์ติชัน

  • พาร์ติชัน odm_dlkm พาร์ติชันนี้มีไว้เพื่อจัดเก็บเคอร์เนล ODM โดยเฉพาะ โมดูล การจัดเก็บโมดูลเคอร์เนล ODM ในพาร์ติชัน odm_dlkm (ตรงข้ามกับ กับพาร์ติชัน odm) ทำให้อัปเดตโมดูลเคอร์เนล ODM ได้ โดยไม่ต้องอัปเดตพาร์ติชัน odm

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

  • พาร์ติชัน cache พาร์ติชันนี้จัดเก็บข้อมูลชั่วคราวและไม่บังคับ ในกรณีที่อุปกรณ์ใช้การอัปเดต อย่างราบรื่น พาร์ติชันของแคชไม่จำเป็นต้องมี ที่เขียนจาก Bootloader ได้ แต่ต้องลบข้อมูลได้ พาร์ติชัน ขนาดจะขึ้นอยู่กับประเภทอุปกรณ์และพื้นที่ว่างใน userdata โดยปกติ 50 MB–100 MB ก็เพียงพอแล้ว

  • พาร์ติชัน misc พาร์ติชันการกู้คืนนี้ใช้โดยพาร์ติชันการกู้คืน และ 4 KB ขึ้นไป

  • พาร์ติชัน userdata พาร์ติชันนี้มีแอปที่ผู้ใช้ติดตั้งและ ซึ่งรวมถึงข้อมูลการปรับแต่ง

  • พาร์ติชัน metadata พาร์ติชันนี้ใช้เก็บข้อมูลเมตา คีย์การเข้ารหัสเมื่ออุปกรณ์ใช้ข้อมูลเมตา การเข้ารหัส ขนาดคือ 16 MB ขึ้นไป โดยที่ไม่ได้เข้ารหัสและระบบจะไม่สแนปชอตข้อมูล โดยระบบจะลบข้อมูลเมื่อรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น การใช้งานพาร์ติชันนี้คือ อย่างเคร่งครัด

  • พาร์ติชัน vendor พาร์ติชันนี้มีไบนารีที่ไม่ใช่ ซึ่งเผยแพร่ให้กับ AOSP ได้ หากอุปกรณ์ไม่มีข้อมูลที่เป็นกรรมสิทธิ์ ก็ข้ามพาร์ติชันนี้ได้

  • พาร์ติชัน vendor_dlkm พาร์ติชันนี้มีไว้เพื่อจัดเก็บผู้ให้บริการโดยเฉพาะ โมดูลเคอร์เนล การจัดเก็บโมดูลเคอร์เนลของผู้ให้บริการในพาร์ติชัน vendor_dlkm (ตรงข้ามกับพาร์ติชัน vendor) ทำให้อัปเดตเคอร์เนลได้ โดยไม่ต้องอัปเดตพาร์ติชัน vendor

  • พาร์ติชัน radio พาร์ติชันนี้มีอิมเมจวิทยุและจำเป็นต้องใช้ สำหรับอุปกรณ์ที่มีวิทยุซึ่งมีซอฟต์แวร์เกี่ยวกับวิทยุในรูปแบบ พาร์ติชันเฉพาะ

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

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

พาร์ติชันแบบไดนามิก

อุปกรณ์ที่ใช้ Android 11 ขึ้นไปสามารถรองรับ พาร์ติชันแบบไดนามิก ซึ่งเป็นระบบการแบ่งพาร์ติชันพื้นที่ผู้ใช้สำหรับ Android ที่ ช่วยให้สร้าง ปรับขนาด หรือทำลายพาร์ติชันระหว่างการเชื่อมต่อผ่านอากาศ (OTA) ได้ อัปเดต โปรดดูรายละเอียดที่หัวข้อไดนามิก พาร์ติชัน

กำหนดพาร์ติชันที่สำคัญ

หากอุปกรณ์ต้องใช้พาร์ติชันหรือข้อมูลเฉพาะที่จะเรียกใช้ คุณต้องกำหนด พาร์ติชันหรือข้อมูลเหล่านั้นได้รับการปกป้องอย่างเต็มที่หรือเป็นแบบแฟลชได้ หมายความว่า ให้สร้างอีกครั้ง ระบุ หรือแตกข้อมูลได้โดยใช้คำสั่ง fastboot oem ซึ่งรวมถึงข้อมูลอย่างเช่น การตั้งค่าเฉพาะจากโรงงานต่ออุปกรณ์ หมายเลขซีเรียล ข้อมูลการเทียบมาตรฐาน และอื่นๆ

การเปลี่ยนแปลงใน Android 11

Android 11 มีการเปลี่ยนแปลงมากมายกับพาร์ติชัน รวมถึงข้อจำกัดในการลิงก์ไปยังไลบรารีและตัวแปรรูปภาพใหม่ของ Soong

เลย์เอาต์พาร์ติชัน Android

รูปที่ 1 เลย์เอาต์พาร์ติชันใน Android 11

  • อิมเมจระบบเดียว (SSI) รูปภาพเชิงแนวคิดใหม่ที่มีฟังก์ชัน system และ system_ext รูปภาพ เมื่อพาร์ติชันเหล่านี้เป็นเรื่องปกติสำหรับชุดหนึ่งๆ ของอุปกรณ์เป้าหมาย อุปกรณ์เหล่านั้นสามารถแชร์ SSI และข้ามการสร้าง system และ system_ext รูปภาพ

  • พาร์ติชัน system_ext พาร์ติชันใหม่ที่ใช้ทรัพยากร system ได้ และอาจรวมถึงโมดูลระบบที่มีลักษณะดังนี้

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

    • แพ็กเกจโมดูลเฉพาะ OEM หรือ SoC เราขอแนะนำให้เลิกรวมกลุ่มโมดูลดังกล่าว เพื่อให้ติดตั้งลงในพาร์ติชัน product หรือ vendor ได้

  • พาร์ติชัน system อิมเมจระบบทั่วไปที่ใช้สำหรับผลิตภัณฑ์ OEM พ เราขอแนะนำให้ย้ายโมดูลที่เป็นกรรมสิทธิ์ออกจากพาร์ติชัน system ไม่ว่าจะโดย หรือทำการอัปสตรีมให้กับ AOSP หรือย้ายไปยังพาร์ติชัน system_ext

  • พาร์ติชัน product พาร์ติชันนี้สามารถใช้อินเทอร์เฟซที่ได้รับอนุญาตเพื่อ ติดตั้งโมดูลเฉพาะผลิตภัณฑ์ที่ไม่ได้รวมกับโมดูลอื่นๆ พาร์ติชัน

การเปลี่ยนแปลง VNDK

ชุดเครื่องมือพัฒนาซอฟต์แวร์แบบเนทีฟสำหรับผู้ให้บริการ (VNDK) เป็นชุดไลบรารีที่ติดตั้งในพาร์ติชัน system และ เฉพาะสำหรับผู้ให้บริการในการใช้ HAL ของตนเอง

  • ใน Android 10 และต่ำกว่า พาร์ติชัน vendor จะลิงก์กับไลบรารี VNDK ได้ใน พาร์ติชัน system แต่ลิงก์กับไลบรารีอื่นๆ ใน system ไม่ได้ พาร์ติชัน โมดูลเนทีฟในพาร์ติชัน product จะลิงก์กับไลบรารีใดก็ได้ ในพาร์ติชัน system

  • ใน Android 11 ขึ้นไป product และ vendor พาร์ติชันจะลิงก์กับไลบรารี VNDK ในพาร์ติชัน system ได้ แต่จะลิงก์ไม่ได้ ลิงก์ไปยังไลบรารีอื่นๆ ในพาร์ติชัน system

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

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

  • ใน Android 10 หรือต่ำกว่า โมดูลระบบจะสร้างตัวแปรหลักโดยอัตโนมัติ และสร้างตัวแปรผู้ให้บริการโดยกําหนด vendor_available: true ในตัวแปร Android.bp ไฟล์ การทำเช่นนี้จะทำให้โมดูลของผู้ให้บริการลิงก์ไปยังโมดูลของระบบได้ ไลบรารี VNDK ซึ่งเป็นรายละเอียดปลีกย่อยของผู้ให้บริการของไลบรารี system ยังสามารถ สร้างตัวแปรของผู้ให้บริการสำหรับโมดูลของผู้ให้บริการโดยการกำหนด vendor_available: true ในไฟล์ Android.bp (โปรดดู ตัวอย่าง)

  • ใน Android 11 โมดูลระบบยังสามารถ สร้างผลิตภัณฑ์ย่อย (นอกเหนือจากตัวแปรหลักและตัวแปรของผู้ให้บริการ) โดยใช้ กำลังกำหนด vendor_available: true

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