อุปกรณ์ Android มีหลายพาร์ติชั่นที่ทำหน้าที่ต่างกันในกระบวนการบู๊ต
พาร์ติชันมาตรฐาน
boot
บูต พาร์ติชันนี้มีเคอร์เนลอิมเมจและสร้างขึ้นโดยใช้mkbootimg
คุณสามารถใช้พาร์ติชันเสมือนเพื่อแฟลชภาพใดภาพหนึ่งได้โดยตรงโดยไม่ต้องกระพริบพาร์ติชันสำหรับเริ่มระบบใหม่ พาร์ติชันนี้ยังประกอบด้วย Ramdisk ทั่วไปในอุปกรณ์ที่เปิดตัวก่อน Android 13เคอร์เนล พาร์ติ
kernel
เสมือนเขียนทับเคอร์เนล (zImage
,zImage-dtb
,Image.gz-dtb
) โดยการเขียนอิมเมจเคอร์เนลใหม่เหนืออิมเมจเคอร์เนลเก่า หากเคอร์เนลการพัฒนาที่ให้มาเข้ากันไม่ได้ คุณอาจต้องอัปเดตvendor
system
หรือพาร์ติชันdtb
(ถ้ามี) ด้วยโมดูลเคอร์เนลที่เกี่ยวข้องแรมดิสก์ พาร์ติชัน
ramdisk
เสมือนจะเขียนทับ ramdisk โดยการเขียนอิมเมจ ramdisk ใหม่ไว้เหนืออิมเมจ ramdisk เก่า
การดำเนินการเขียนทับจะกำหนดตำแหน่งเริ่มต้นของรูปภาพที่มีอยู่ใน eMMC และคัดลอกรูปภาพใหม่ไปยังตำแหน่งนั้น อิมเมจใหม่ (เคอร์เนลหรือ ramdisk) อาจใหญ่กว่าอิมเมจที่มีอยู่ เพื่อเพิ่มพื้นที่ bootloader สามารถย้ายข้อมูลตามรูปภาพหรือละทิ้งการดำเนินการโดยมีข้อผิดพลาด
พาร์ติชัน
init_boot
พาร์ติชันนี้มี ramdisk ทั่วไปสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 13 ขึ้นไปพาร์ติชัน
system
พาร์ติชันนี้มีเฟรมเวิร์ก Androidพาร์ติชัน
odm
พาร์ติชันนี้ประกอบด้วยการปรับแต่งจากผู้ผลิต (ODM) การออกแบบดั้งเดิมสำหรับแพ็คเกจสนับสนุนบอร์ด (BSP) ของผู้จำหน่ายระบบบนชิป (SoC) การปรับแต่งดังกล่าวช่วยให้ ODM สามารถแทนที่หรือปรับแต่งส่วนประกอบ SoC และใช้โมดูลเคอร์เนลสำหรับส่วนประกอบเฉพาะของบอร์ด daemons และคุณลักษณะเฉพาะของ ODM บน Hardware Abstraction Layers (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 ที่ช่วยให้สามารถสร้าง ปรับขนาด หรือทำลายพาร์ติชันระหว่างการอัปเดตแบบ over-the-air (OTA) สำหรับรายละเอียด โปรดดูที่ พาร์ติชันแบบไดนามิก
การกำหนดพาร์ติชันที่สำคัญ
หากอุปกรณ์ต้องการพาร์ติชั่นหรือข้อมูลเฉพาะเพื่อรัน คุณต้องกำหนดพาร์ติชั่น/ข้อมูลเหล่านั้นให้มีการป้องกันอย่างสมบูรณ์หรือแบบแฟลชใหม่ได้ ซึ่งหมายความว่าพาร์ติชั่นหรือข้อมูลเหล่านี้สามารถสร้างใหม่ได้ จัดเตรียม หรือแยกได้โดยใช้คำสั่ง 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
ได้ในภายหลังรวมโมดูล 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
ได้
ซูงผลิตภัณฑ์หลากหลายรูปแบบ
ระบบ Soong build ใช้รูปแบบรูปภาพเพื่อแยกการขึ้นต่อกันของ build โมดูลดั้งเดิม ( /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
ไม่สามารถใช้ได้กับโมดูลผลิตภัณฑ์