อุปกรณ์ Android มีพาร์ติชันหลายรายการที่ทำหน้าที่ต่างกันในกระบวนการบูต
พาร์ติชันมาตรฐาน
พาร์ติชัน
boot
พาร์ติชันนี้มีอิมเมจเคอร์เนลและสร้างขึ้นโดยใช้mkbootimg
คุณสามารถใช้พาร์ติชันเสมือนเพื่อแฟลชรูปภาพใดรูปภาพหนึ่งโดยตรงโดยไม่ต้องแฟลชพาร์ติชันการบูตใหม่ พาร์ติชันนี้ยังมี RAMdisk ทั่วไปในอุปกรณ์ที่เปิดตัวก่อน Android 13 ด้วยkernel. พาร์ติชัน
kernel
เสมือนจะเขียนทับเคอร์เนล (zImage
,zImage-dtb
,Image.gz-dtb
) โดยการเขียนอิมเมจเคอร์เนลใหม่ทับอิมเมจเคอร์เนลเก่า หากเคอร์เนลสำหรับการพัฒนาซอฟต์แวร์ที่ระบุเข้ากันไม่ได้ คุณอาจต้องอัปเดตพาร์ติชันvendor
,system
หรือdtb
(หากมี) ด้วยโมดูลเคอร์เนลที่เกี่ยวข้องramdisk พาร์ติชันเสมือน
ramdisk
จะแทนที่ RAM ด้วยการเขียนอิมเมจ RAM ใหม่เหนืออิมเมจ RAM เดิม
การดำเนินการเขียนทับจะกำหนดตำแหน่งเริ่มต้นของรูปภาพที่มีอยู่ใน eMMC และคัดลอกรูปภาพใหม่ไปยังตำแหน่งนั้น อิมเมจใหม่ (เคอร์เนลหรือแรมดิสก์) อาจใหญ่กว่าอิมเมจที่มีอยู่ บูตโหลดเดอร์จึงอาจย้ายข้อมูลตามอิมเมจหรือยกเลิกการดำเนินการโดยแสดงข้อผิดพลาดเพื่อให้มีพื้นที่ว่าง
พาร์ติชัน
init_boot
พาร์ติชันนี้มี RAMdisk ทั่วไปสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 13 ขึ้นไปพาร์ติชัน
system
พาร์ติชันนี้มีเฟรมเวิร์ก Androidพาร์ติชัน
odm
พาร์ติชันนี้มีการปรับแต่งจากผู้ผลิตดั้งเดิม (ODM) เป็นแพ็กเกจการสนับสนุนบอร์ดสำหรับผู้ให้บริการ (SoC) ของระบบบนชิป (SoC) การปรับแต่งดังกล่าวช่วยให้ ODM เปลี่ยนหรือปรับแต่งคอมโพเนนต์ SoC รวมถึงติดตั้งใช้งานโมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ดและเดมอน รวมถึงฟีเจอร์เฉพาะ ODM ในเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ได้ พาร์ติชันนี้ไม่บังคับ โดยปกติแล้วจะใช้เพื่อเก็บข้อมูลการปรับแต่งเพื่อให้อุปกรณ์ใช้ภาพจากผู้ให้บริการรายเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการได้ โปรดดูรายละเอียดที่หัวข้อพาร์ติชัน ODMพาร์ติชัน
odm_dlkm
พาร์ติชันนี้มีไว้เพื่อจัดเก็บโมดูลเคอร์เนล ODM โดยเฉพาะ การจัดเก็บโมดูลเคอร์เนล ODM ในพาร์ติชันodm_dlkm
(ซึ่งตรงข้ามกับพาร์ติชันodm
) ทำให้อัปเดตโมดูลเคอร์เนล ODM ได้โดยไม่ต้องอัปเดตพาร์ติชันodm
พาร์ติชัน
recovery
พาร์ติชันนี้จะจัดเก็บอิมเมจการกู้คืน ซึ่งจะบูตในระหว่างกระบวนการ OTA อุปกรณ์ที่รองรับการอัปเดตแบบราบรื่นจะจัดเก็บรูปภาพการกู้คืนเป็นแรมดิสก์ที่อยู่ในรูปภาพboot
หรือinit_boot
ได้ (แทนที่จะเป็นรูปภาพแยกต่างหาก)พาร์ติชัน
cache
พาร์ติชันนี้จะจัดเก็บข้อมูลชั่วคราวและคุณเลือกได้หากอุปกรณ์ใช้การอัปเดตแบบราบรื่น พาร์ติชันแคชไม่จำเป็นต้องเขียนจากบูตโหลดเดอร์ได้ แต่ต้องลบได้ ขนาดของพาร์ติชันจะขึ้นอยู่กับประเภทอุปกรณ์และพื้นที่ว่างในuserdata
โดยปกติแล้ว 50-100 MB ก็เพียงพอแล้วพาร์ติชัน
misc
พาร์ติชันนี้ใช้โดยพาร์ติชันการกู้คืนและมีขนาดใหญ่กว่าหรือเท่ากับ 256 KBพาร์ติชัน
userdata
พาร์ติชันนี้มีแอปและข้อมูลที่ผู้ใช้ติดตั้ง รวมถึงข้อมูลการปรับแต่งพาร์ติชัน
metadata
พาร์ติชันนี้ใช้เพื่อจัดเก็บคีย์การเข้ารหัสข้อมูลเมตาเมื่ออุปกรณ์ใช้การเข้ารหัสข้อมูลเมตา ไฟล์มีขนาดอย่างน้อย 16 MB โดยระบบไม่ได้เข้ารหัสและไม่ได้เก็บสแนปชอตข้อมูล ระบบจะลบข้อมูลดังกล่าวออกเมื่อรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น การใช้งานพาร์ติชันนี้มีข้อจำกัดอย่างมากพาร์ติชัน
vendor
พาร์ติชันนี้มีไบนารีที่กระจายไปยัง AOSP ไม่ได้ หากอุปกรณ์ไม่มีข้อมูลที่เป็นกรรมสิทธิ์ คุณก็ข้ามพาร์ติชันนี้ได้พาร์ติชัน
vendor_dlkm
พาร์ติชันนี้มีไว้สำหรับจัดเก็บข้อบังคับของเคอร์เนลของผู้ให้บริการโดยเฉพาะ การจัดเก็บโมดูลเคอร์เนลของผู้ให้บริการไว้ในพาร์ติชันvendor_dlkm
(ไม่ใช่พาร์ติชันvendor
) จะช่วยให้อัปเดตโมดูลเคอร์เนลได้โดยไม่ต้องอัปเดตพาร์ติชันvendor
พาร์ติชัน
radio
พาร์ติชันนี้มีรูปภาพวิทยุและจำเป็นสำหรับอุปกรณ์ที่มีวิทยุที่มีซอฟต์แวร์เฉพาะวิทยุในพาร์ติชันเฉพาะเท่านั้นพาร์ติชัน
tos
พาร์ติชันนี้จะจัดเก็บอิมเมจไบนารีของระบบปฏิบัติการ Trusty และจะใช้งานได้ก็ต่อเมื่ออุปกรณ์มี Trusty เท่านั้น โปรดดูรายละเอียดที่ข้อกำหนดในการให้บริการ พาร์ติชันพาร์ติชัน
pvmfw
พาร์ติชันนี้จะจัดเก็บเฟิร์มแวร์ของ Virtual Machine ที่ได้รับการปกป้อง (pvmfw) ซึ่งเป็นโค้ดแรกที่ทำงานใน VM ที่ได้รับการปกป้อง ดูรายละเอียดเพิ่มเติมได้ที่เฟิร์มแวร์ของ Virtual Machine ที่ป้องกัน
พาร์ติชันแบบไดนามิก
อุปกรณ์ที่ใช้ Android 11 ขึ้นไปรองรับพาร์ติชันแบบไดนามิก ซึ่งเป็นระบบการแบ่งพาร์ติชันพื้นที่ผู้ใช้สำหรับ Android ที่ช่วยให้คุณสร้าง ปรับขนาด หรือลบพาร์ติชันในระหว่างการอัปเดตผ่านอากาศ (OTA) ได้ โปรดดูรายละเอียดที่หัวข้อพาร์ติชันแบบไดนามิก
กำหนดพาร์ติชันที่สำคัญ
หากอุปกรณ์ต้องใช้พาร์ติชันหรือข้อมูลเฉพาะในการทํางาน คุณต้องกําหนดพาร์ติชันหรือข้อมูลเหล่านั้นว่าได้รับการปกป้องอย่างเต็มรูปแบบหรือสามารถแฟลชอีกครั้ง ซึ่งหมายความว่าสามารถสร้างขึ้นใหม่ ระบุ หรือดึงข้อมูลได้โดยใช้คําสั่ง fastboot oem
ซึ่งรวมถึงข้อมูลต่างๆ เช่น การตั้งค่าเฉพาะสำหรับโรงงานของแต่ละอุปกรณ์ หมายเลขซีเรียล ข้อมูลการปรับเทียบ และอื่นๆ
การเปลี่ยนแปลงใน Android 11
Android 11 มีการเปลี่ยนแปลงจำนวนมากในพาร์ติชัน รวมถึงข้อจำกัดในการลิงก์ไปยังไลบรารีและตัวแปรรูปภาพใหม่ของ Soong
รูปที่ 1 เลย์เอาต์พาร์ติชันใน Android 11
Single System Image (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
) สามารถเปลี่ยนโมดูลการประมวลผลของระบบเป็นตัวแปรหลักและโมดูลการประมวลผลของผู้ให้บริการเป็นตัวแปรของผู้ให้บริการได้ โมดูลในตัวแปรรูปภาพหนึ่งจะลิงก์กับโมดูลอื่นๆ ในตัวแปรรูปภาพอื่นไม่ได้
ใน 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
จะใช้กับโมดูลผลิตภัณฑ์ไม่ได้