พาร์ติชัน ODM

Android 10 รองรับการสร้าง odm พาร์ติชันโดยใช้ระบบบิลด์ของ Android

เกี่ยวกับพาร์ติชัน ODM

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

ใน Android รุ่นต่ำกว่า การปรับแต่งดังกล่าวทำให้ใช้ รูปภาพของผู้ให้บริการสำหรับอุปกรณ์ที่มี SoC เดียวกัน (หรือมี SoC ต่างกัน แต่อยู่ใน ครอบครัวเดียวกัน) ใน Android 10 ขึ้นไป คุณสามารถใช้ แยกพาร์ติชัน odm สำหรับการปรับแต่ง ซึ่งให้คุณดำเนินการต่อไปนี้ได้ ใช้อิมเมจผู้ให้บริการรูปเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการ

ใช้พาร์ติชันผลิตภัณฑ์และ ODM

Android 9 เพิ่มการรองรับการสร้าง product ทำให้สามารถใช้อิมเมจระบบเดียวสำหรับซอฟต์แวร์หลายรายการ SKU ที่มาจากรูปภาพ product.img รูปที่ต่างกัน ในขณะที่ พาร์ติชัน product มีไว้สำหรับ SKU ของซอฟต์แวร์ พาร์ติชัน odm มีไว้สำหรับ SKU ฮาร์ดแวร์

เมื่อใช้พาร์ติชัน ODM และผลิตภัณฑ์เฉพาะ คุณจะใช้ system ได้ เพื่อโฮสต์โค้ดทั่วไปเพื่อใช้ร่วมกันระหว่าง SKU ของซอฟต์แวร์หลายรายการ และ vendor พาร์ติชันเพื่อโฮสต์โค้ด BSP เฉพาะ SoC เพื่อแชร์ อุปกรณ์หลายเครื่องโดยอิงตาม SoC ที่กำหนด

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

คอมโพเนนต์ ODM

พาร์ติชัน odm มีคอมโพเนนต์เฉพาะ ODM ต่อไปนี้ (คล้ายกับพาร์ติชัน vendor) ซึ่งแสดงในตารางต่อไปนี้

คอมโพเนนต์เฉพาะ ODM ตำแหน่ง
โมดูลเคอร์เนลที่โหลดได้ (LKM) /odm/lib/modules/*.ko
ไลบรารีที่มาพร้อมเครื่อง /odm/lib[64]
HAL /odm/lib[64]/hw
นโยบาย SE /odm/etc/selinux
ออบเจ็กต์ VINTF ข้อมูล /odm/etc/vintf
init.rc ไฟล์ /odm/etc/init
พร็อพเพอร์ตี้ของระบบ /odm/build.prop
การวางซ้อนทรัพยากรรันไทม์ (RRO) /odm/overlay/*.apk
แอป /odm/app/*.apk
แอป Priv /odm/priv-app/*.apk
ไลบรารี Java /odm/framework/*.jar
การกำหนดค่าระบบของ Android Framework /odm/etc/sysconfig/* และ /odm/etc/permissions/*

ไม่มีรูปภาพที่กำหนดเอง

ไม่ใช้ กำหนดเอง รูปภาพเนื่องจากไม่มีการรองรับรายการต่อไปนี้

  • การติดตั้งโมดูลไปยังเป้าหมายเฉพาะ รูปภาพที่กำหนดเองรองรับการคัดลอกอาร์ติแฟกต์ลงในรูปภาพ แต่ทำไม่ได้ ติดตั้งโมดูลลงในพาร์ติชันเฉพาะโดยการระบุพาร์ติชันเป้าหมาย เป็นส่วนหนึ่งของกฎการสร้าง
  • เร็วๆ นี้ ไม่สามารถสร้าง custom_images โดยใช้ ระบบการสร้าง Soong
  • การอัปเดต OTA ระบบใช้รูปภาพที่กําหนดเองเป็น อิมเมจ ROM จากโรงงานที่ OTA ไม่ได้

รักษา ABI ระหว่างพาร์ติชัน

พาร์ติชัน odm เป็นส่วนขยายของ vendor พาร์ติชัน เมื่อพิจารณาความเสถียรของอินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน (ABI) โปรด สถาปัตยกรรมต่อไปนี้เป็นหลัก

การรักษา ABI ระหว่างพาร์ติชัน

รูปที่ 1 การรักษา ABI ระหว่างพาร์ติชัน

  • ไม่มีความเสถียรของ ABI ระหว่าง odm ถึง vendor พาร์ติชัน คุณต้องอัปเกรดทั้ง 2 พาร์ติชันพร้อมกัน
  • พาร์ติชัน odm และ vendor อาจขึ้นอยู่กับ กัน แต่พาร์ติชัน vendor ต้องใช้งานได้ โดยไม่มีพาร์ติชัน odm
  • ABI ระหว่าง odm ถึง system เหมือนกับ ABI ระหว่าง vendor ถึง system

การโต้ตอบโดยตรงระหว่างพาร์ติชัน product และ พาร์ติชัน vendor หรือ odm ไม่ใช่ อนุญาต (บังคับใช้โดย SEpolicy)

ติดตั้งใช้งานพาร์ติชัน ODM

ก่อนติดตั้งใช้งานพาร์ติชันใหม่ ให้ตรวจสอบส่วน AOSP ที่เกี่ยวข้อง การเปลี่ยนแปลง

ตั้งค่าพาร์ติชัน ODM

หากต้องการตั้งค่า odm พาร์ติชัน ให้ใส่แฟล็กบิลด์ต่อไปนี้

  • BOARD_ODMIMAGE_PARTITION_SIZEสำหรับขนาดพาร์ติชันคงที่
  • PRODUCT_USE_DYNAMIC_PARTITIONS และ BOARD_ODMIMAGE_PARTITION_RESERVED_SIZEเป็นเวลา พาร์ติชันแบบไดนามิก ขนาด
  • ประเภทระบบไฟล์ BOARD_ODMIMAGE_FILE_SYSTEM_TYPE ที่ใช้สำหรับ รูปภาพ ODM
  • PRODUCT_ODM_PROPERTIES สำหรับ /odm/build.prop สำหรับ ใช้ภายใน $(call inherit-product path/to/device.mk) เช่น PRODUCT_ODM_PROPERTIES += product.abc=ok

ติดตั้งโมดูลไปยังพาร์ติชัน ODM

ใช้แฟล็กบิลด์เหล่านี้เพื่อติดตั้งโมดูลไปยังพาร์ติชัน odm

  • device_specific: trueในAndroid.bp
  • LOCAL_ODM_MODULE := trueในAndroid.mk

เปิดใช้การเปิดเครื่องที่ได้รับการยืนยัน

หากต้องการป้องกันไม่ให้ซอฟต์แวร์ที่เป็นอันตรายแทรกแซงพาร์ติชัน odm เปิดใช้งานการเปิดเครื่องที่ได้รับการยืนยัน Android (AVB) สำหรับพาร์ติชันเหล่านั้น (เช่นเดียวกับที่คุณดำเนินการกับ vendor และ system พาร์ติชัน)

หากต้องการเปิดใช้ AVB ให้ใส่แฟล็กบิลด์ BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS. โปรดดูรายละเอียดเกี่ยวกับการกำหนดค่า AVB ในพาร์ติชันแบบไดนามิก โปรดดู การกำหนดค่า AVB การเปลี่ยนแปลง

ถือว่า /odm เป็นพาร์ติชัน /vendor อื่น

ตรวจสอบว่าระบบจัดการพาร์ติชัน odm เป็น พาร์ติชัน vendor แทนที่ vendor แบบฮาร์ดโค้ดทั้งหมด การอ้างอิงด้วยชุดพาร์ติชันที่มุ่งเน้นฮาร์ดแวร์ (ปัจจุบัน odm และ vendor) โดดเด่น vendor ตำแหน่งอ้างอิงในแพลตฟอร์มประกอบด้วย ไดนามิก Linker แพ็กเกจ และshell/libc