อุปกรณ์ Android ประกอบด้วยพาร์ติชั่นหลายตัวที่ให้บริการฟังก์ชั่นต่างๆ ในกระบวนการบู๊ต
พาร์ติชั่นมาตรฐาน
พาร์
boot
ชันสำหรับเริ่มระบบ พาร์ติชันนี้มีภาพเคอร์เนลและสร้างขึ้นโดยใช้mkbootimg
คุณสามารถใช้พาร์ติชั่นเสมือนเพื่อแฟลชอิมเมจใดก็ได้โดยตรงโดยไม่ต้องแฟลชพาร์ติชั่นสำหรับเริ่มระบบใหม่ พาร์ติชันนี้ยังมี ramdisk ทั่วไปในอุปกรณ์ที่เปิดตัวก่อน Android 13เคอร์เนล พาร์ติชัน
kernel
เสมือนเขียนทับเคอร์เนล (zImage
,zImage-dtb
,Image.gz-dtb
) โดยการเขียนอิมเมจเคอร์เนลใหม่ทับเคอร์เนลอิมเมจเก่า หากเคอร์เนลการพัฒนาที่ให้มาเข้ากันไม่ได้ คุณอาจต้องอัพเดตvendor
,system
หรือdtb
partition (ถ้ามี) ด้วยโมดูลเคอร์เนลที่เกี่ยวข้องแรมดิสก์ พาร์ติชั่น
ramdisk
เสมือนจะเขียนทับ ramdisk โดยการเขียนอิมเมจ ramdisk ใหม่ทับอิมเมจ ramdisk เก่า
การดำเนินการเขียนทับจะกำหนดตำแหน่งเริ่มต้นของรูปภาพที่มีอยู่ใน eMMC และคัดลอกรูปภาพใหม่ไปยังตำแหน่งนั้น รูปภาพใหม่ (เคอร์เนลหรือ ramdisk) อาจใหญ่กว่ารูปภาพที่มีอยู่ เพื่อให้มีพื้นที่ว่าง bootloader สามารถย้ายข้อมูลตามภาพหรือละทิ้งการดำเนินการโดยมีข้อผิดพลาด
พาร์ติชัน
init_boot
พาร์ติชันนี้มี ramdisk ทั่วไปสำหรับอุปกรณ์ที่เปิดใช้ Android 13 ขึ้นไปพาร์ติชัน
system
พาร์ติชันนี้มีกรอบงาน Androidพาร์ติชั่น
odm
พาร์ติชั่นนี้มีการปรับแต่งจากผู้ผลิตการออกแบบดั้งเดิม (ODM) ให้กับแพ็คเกจการสนับสนุนบอร์ดผู้จำหน่าย (BSP) ของระบบบนชิป (SoC) การปรับแต่งดังกล่าวทำให้ ODM สามารถแทนที่หรือปรับแต่งส่วนประกอบ SoC และใช้โมดูลเคอร์เนลสำหรับส่วนประกอบเฉพาะบอร์ด daemon และคุณลักษณะเฉพาะ ODM บนเลเยอร์ที่เป็นนามธรรมของฮาร์ดแวร์ (HAL) พาร์ติชันนี้เป็นทางเลือก โดยทั่วไป จะใช้เพื่อให้มีการปรับแต่งเพื่อให้อุปกรณ์สามารถใช้อิมเมจผู้ขายรายเดียวสำหรับ SKU ของฮาร์ดแวร์หลายรายการ สำหรับรายละเอียด โปรดดูที่ ODM Partitionsodm_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 Partitions
พาร์ติชันแบบไดนามิก
อุปกรณ์ที่ใช้ Android 11 ขึ้นไปสามารถรองรับพาร์ติชั่นไดนามิก ซึ่งเป็นระบบแบ่งพาร์ติชั่น userspace สำหรับ Android ที่เปิดใช้งานการสร้าง ปรับขนาด หรือทำลายพาร์ติชั่นระหว่างการอัปเดตแบบ over-the-air (OTA) สำหรับรายละเอียด โปรดดูที่ Dynamic Partitions
การกำหนดพาร์ติชั่นที่สำคัญ
หากอุปกรณ์ต้องการพาร์ติชั่นหรือข้อมูลเฉพาะในการรัน คุณต้องกำหนดพาร์ติชั่น/ข้อมูลเหล่านั้นให้เป็นแบบป้องกันอย่างสมบูรณ์หรือแบบแฟลชซ้ำได้ ซึ่งหมายความว่าจะสร้างใหม่ จัดเตรียม หรือแยกได้โดยใช้คำสั่ง fastboot oem
ซึ่งรวมถึงข้อมูลต่างๆ เช่น การตั้งค่าเฉพาะจากโรงงานต่ออุปกรณ์ หมายเลขซีเรียล ข้อมูลการสอบเทียบ และอื่นๆ
การเปลี่ยนแปลงใน Android 11
Android 11 มีการเปลี่ยนแปลงมากมายในพาร์ติชั่น รวมถึงข้อจำกัดในการลิงก์ไปยังไลบรารี่และตัวแปรอิมเมจ Soong ใหม่
รูปที่ 1. เลย์เอาต์ของพาร์ติชั่นใน Android 11
อิมเมจระบบเดียว (SSI) อิมเมจแนวคิดใหม่ที่มีอิมเมจ
system
และsystem_ext
เมื่อพาร์ติชั่นเหล่านี้เป็นเรื่องปกติสำหรับชุดอุปกรณ์เป้าหมาย อุปกรณ์เหล่านั้นสามารถแชร์ SSI และข้ามการสร้างsystem
และsystem_ext
พาร์ติชัน
system_ext
พาร์ติชันใหม่ที่สามารถใช้ทรัพยากรsystem
และสามารถรวมโมดูลระบบที่:ขยายโมดูลระบบ AOSP ในพาร์ติชัน
system
เราแนะนำให้อัพสตรีมโมดูลดังกล่าวไปยัง AOSP เพื่อให้สามารถติดตั้งลงในพาร์ติชันsystem
ได้ในภายหลังBundle OEM หรือโมดูลเฉพาะ SoC เราขอแนะนำให้เลิกรวมกลุ่มโมดูลดังกล่าว เพื่อให้สามารถติดตั้งลงในพาร์ติชัน
product
หรือvendor
ได้
พาร์ติชัน
system
อิมเมจระบบทั่วไปที่ใช้สำหรับผลิตภัณฑ์ OEM เราแนะนำให้ย้ายโมดูลที่เป็นกรรมสิทธิ์ออกจากพาร์ติชันsystem
ไม่ว่าจะโดยการอัพสตรีมไปที่ AOSP หรือโดยการย้ายไปยังพาร์ติชันsystem_ext
การแบ่งส่วน
product
พาร์ติชันนี้สามารถใช้อินเทอร์เฟซที่ได้รับอนุญาตเพื่อติดตั้งโมดูลเฉพาะผลิตภัณฑ์ที่ไม่ได้รวมเข้ากับพาร์ติชันอื่น
VNDK เปลี่ยนแปลง
Vendor Native Development Kit (VNDK) คือชุดของไลบรารีที่ติดตั้งในพาร์ติชั่น system
และได้รับการออกแบบมาโดยเฉพาะสำหรับผู้จำหน่ายเพื่อใช้ HAL ของตน
ใน Android 10 และต่ำกว่า พาร์ติชัน
vendor
สามารถลิงก์ไปยังไลบรารี VNDK ในพาร์ติชันsystem
แต่ไม่สามารถลิงก์ไปยังไลบรารีอื่นในพาร์ติชันsystem
ได้ โมดูลเนทีฟในพาร์ติชันproduct
สามารถลิงก์ไปยังไลบรารีใดๆ ในพาร์ติชันsystem
ได้ใน Android 11 ขึ้นไป พาร์ติชัน
product
และvendor
สามารถลิงก์ไปยังไลบรารี VNDK ในพาร์ติชันsystem
ได้ แต่ไม่สามารถลิงก์ไปยังไลบรารีอื่นในพาร์ติชันsystem
ได้
ตัวเลือกสินค้า Soon
ระบบ บิลด์ Soong ใช้รูปแบบรูปภาพเพื่อแยกการพึ่งพาบิลด์ โมดูลเนทีฟ ( /build/soong/cc
) สามารถเปลี่ยนโมดูลกระบวนการของระบบเป็นตัวแปรหลักและโมดูลกระบวนการของผู้ขายเป็นตัวแปรของผู้ขาย โมดูลในตัวแปรรูปภาพหนึ่งไม่สามารถลิงก์ไปยังโมดูลอื่นในตัวเลือกรูปภาพอื่นได้
ใน 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
ไม่พร้อมใช้งานสำหรับโมดูลผลิตภัณฑ์