ออบเจ็กต์และบริการของระบบไฟล์ที่เพิ่มลงในบิลด์มักต้องใช้รหัสที่ไม่ซ้ำกันแยกต่างหาก ซึ่งเรียกว่ารหัส Android (AID) ปัจจุบันทรัพยากรจำนวนมาก เช่น ไฟล์และบริการ ใช้ AID หลัก (ที่ Android กำหนด) โดยไม่จำเป็น ในหลายๆ กรณี คุณสามารถใช้ AID ของ OEM (ที่ OEM กำหนด) แทนได้
Android เวอร์ชันก่อนหน้า (Android 7.x และต่ำกว่า) ขยายกลไก AID
โดยใช้ไฟล์ android_filesystem_config.h
ที่เฉพาะเจาะจงกับอุปกรณ์เพื่อระบุความสามารถของระบบไฟล์และ/หรือ AID ของ OEM ที่กำหนดเอง อย่างไรก็ตาม ระบบนี้ใช้งานยากเนื่องจากไม่รองรับการใช้ชื่อที่จำง่ายสำหรับ AID ของ OEM ซึ่งกำหนดให้คุณต้องระบุตัวเลขดิบสำหรับช่องผู้ใช้และกลุ่มโดยไม่มีวิธีเชื่อมโยงชื่อที่จำง่ายกับ AID ที่เป็นตัวเลข
Android เวอร์ชันใหม่กว่า (Android 8.0 ขึ้นไป) รองรับวิธีการใหม่ในการ ขยายความสามารถของระบบไฟล์ วิธีการใหม่นี้รองรับสิ่งต่อไปนี้
- ตำแหน่งที่มาหลายตำแหน่งสำหรับไฟล์การกำหนดค่า (เปิดใช้การกำหนดค่าการสร้างที่ขยายได้ )
- การตรวจสอบความสมเหตุสมผลของค่า AID ของ OEM ในเวลาสร้าง
- การสร้างส่วนหัว AID ของ OEM ที่กำหนดเองซึ่งสามารถใช้ในไฟล์ต้นฉบับได้ตาม ต้องการ
- การเชื่อมโยงชื่อที่จำง่ายกับค่า AID ของ OEM จริง รองรับ อาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่ม เช่น "foo" แทน "2901"
การปรับปรุงเพิ่มเติม ได้แก่ การนำอาร์เรย์ android_ids[]
ออกจาก
system/core/libcutils/include/private/android_filesystem_config.h ตอนนี้อาร์เรย์นี้อยู่ใน Bionic เป็นอาร์เรย์ที่สร้างขึ้นแบบส่วนตัวทั้งหมด โดยมีตัวเข้าถึงที่มี getpwnam() และ getgrnam() (ซึ่งมีผลข้างเคียงคือสร้างไบนารีที่เสถียรเนื่องจากมีการแก้ไข AID หลัก)
หากต้องการดู
เครื่องมือและไฟล์ README ที่มีรายละเอียดเพิ่มเติม โปรดดู
build/make/tools/fs_config
เพิ่มรหัส Android (AID)
Android 8.0 นำอาร์เรย์ android_ids[] ออกจาก Android
Open Source Project (AOSP) ระบบจะสร้างชื่อที่จำง่ายทั้งหมดของ AID จาก
ไฟล์ส่วนหัว system/core/libcutils/include/private/android_filesystem_config.h
เมื่อสร้างอาร์เรย์ android_ids[] ของ Bionic เครื่องมือจะเลือก
define ที่ตรงกับ AID_* และ * จะกลายเป็นชื่อตัวพิมพ์เล็ก
ตัวอย่างเช่น ใน private/android_filesystem_config.h
#define AID_SYSTEM 1000จะกลายเป็น
- ชื่อที่จำง่าย: system
- uid: 1000
- gid: 1000
หากต้องการเพิ่ม AID หลักของ AOSP ใหม่ เพียงเพิ่ม #define ลงในไฟล์ส่วนหัว
android_filesystem_config.h ระบบจะสร้าง AID ใน เวลาบิลด์และทำให้พร้อมใช้งานสำหรับอินเทอร์เฟซที่ใช้อาร์กิวเมนต์ผู้ใช้และกลุ่ม เครื่องมือจะตรวจสอบว่า AID ใหม่ไม่อยู่ในช่วง APP หรือ OEM
และยังคำนึงถึงการเปลี่ยนแปลงในช่วงเหล่านั้นด้วย และควรทำการกำหนดค่าใหม่โดยอัตโนมัติ
เมื่อมีการเปลี่ยนแปลงหรือช่วงที่ OEM สงวนไว้ใหม่
กำหนดค่า AID
หากต้องการเปิดใช้กลไก AID ใหม่ ให้ตั้งค่า TARGET_FS_CONFIG_GEN ในไฟล์
BoardConfig.mk ตัวแปรนี้เก็บรายการไฟล์การกำหนดค่า
ซึ่งช่วยให้คุณสามารถเพิ่มไฟล์ได้ตามต้องการ
ตามธรรมเนียมแล้ว ไฟล์การกำหนดค่าจะใช้ชื่อ config.fs แต่ใน
ทางปฏิบัติคุณสามารถใช้ชื่อใดก็ได้ config.fs ไฟล์อยู่ในรูปแบบ
Python
ConfigParser ini และมีส่วน caps (สำหรับการกำหนดค่าความสามารถของระบบ
ไฟล์) และส่วน AID (สำหรับการกำหนดค่า AID ของ OEM)
กำหนดค่าส่วน caps
ส่วน caps รองรับการตั้งค่า ความสามารถของระบบ ไฟล์ในออบเจ็กต์ของระบบไฟล์ภายในบิลด์ (ระบบไฟล์ เองก็ต้องรองรับฟังก์ชันการทำงานนี้ด้วย)
เนื่องจากการเรียกใช้บริการที่เสถียรในฐานะผู้ใช้ระดับรากใน Android ทำให้เกิดข้อผิดพลาดใน
ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS)
ข้อกำหนดก่อนหน้าในการคงความสามารถไว้ขณะเรียกใช้
กระบวนการหรือบริการเกี่ยวข้องกับการตั้งค่าความสามารถ จากนั้นใช้
setuid/setgid กับ AID ที่เหมาะสมเพื่อเรียกใช้ เมื่อใช้ caps คุณ
สามารถข้ามข้อกำหนดเหล่านี้และให้เคอร์เนลดำเนินการให้คุณได้ เมื่อมีการส่งการควบคุมไปยัง main() กระบวนการของคุณจะมีความสามารถที่
จำเป็นอยู่แล้วเพื่อให้บริการใช้ผู้ใช้และกลุ่มที่ไม่ใช่ผู้ใช้ระดับรากได้ (นี่เป็นวิธีที่แนะนำในการเริ่มต้นบริการที่มีสิทธิ์)
ส่วน caps ใช้ไวยากรณ์ต่อไปนี้
| ส่วน | ค่า | คำจำกัดความ |
|---|---|---|
[path] |
เส้นทางระบบไฟล์ที่จะกำหนดค่า ระบบจะถือว่าเส้นทางที่ลงท้ายด้วย / เป็นไดเรกทอรี
ส่วนเส้นทางอื่นๆ จะถือว่าเป็นไฟล์
การระบุหลายส่วนที่มี [path] เดียวกันในไฟล์ต่างๆ ถือเป็นข้อผิดพลาด ใน Python เวอร์ชัน <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่ลบล้างส่วนก่อนหน้า
แต่ใน Python
3.2 จะตั้งค่าเป็นโหมดเข้มงวด |
|
mode |
โหมดไฟล์ฐานแปด | โหมดไฟล์ฐานแปดที่ถูกต้องซึ่งมีตัวเลขอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะ เติม 0 ไว้ข้างหน้า ไม่เช่นนั้นจะใช้โหมดตามที่ระบุ |
user |
AID_<user> | `define` ของ C สำหรับ AID ที่ถูกต้องหรือชื่อที่จำง่าย
(เช่น ทั้ง AID_RADIO และ radio ยอมรับได้)define หากต้องการกำหนด AID ที่กำหนดเอง โปรดดู การกำหนดค่าส่วน AID |
group |
AID_<group> | เหมือนกับผู้ใช้ |
caps |
cap* | ชื่อตามที่ประกาศไว้ใน
bionic/libc/kernel/uapi/linux/capability.h
โดยไม่มี CAP_ นำหน้า อนุญาตให้ใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่คละกัน นอกจากนี้ caps ยังเป็นค่าดิบต่อไปนี้ได้ด้วย
|
ดูตัวอย่างการใช้งานได้ที่การใช้ความสามารถของระบบไฟล์
กำหนดค่าส่วน AID
ส่วน AID มี AID ของ OEM และใช้ไวยากรณ์ต่อไปนี้
| ส่วน | ค่า | คำจำกัดความ |
|---|---|---|
[AID_<name>] |
<name> สามารถมีอักขระในชุด
ตัวพิมพ์ใหญ่ ตัวเลข และขีดล่าง ระบบจะใช้เวอร์ชันตัวพิมพ์เล็กเป็นชื่อที่จำง่าย
ไฟล์ส่วนหัวที่สร้างขึ้นสำหรับการรวมโค้ดจะใช้
AID_<name> ที่แน่นอน
การระบุหลายส่วนที่มี AID_<name> เดียวกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ โดยมีข้อจำกัดเดียวกันกับ
[path]) ถือเป็นข้อผิดพลาด
<name> ต้องขึ้นต้นด้วยชื่อพาร์ติชันเพื่อให้แน่ใจ
ว่าชื่อจะไม่ขัดแย้งกับแหล่งที่มาต่างๆ |
|
value |
<number> | สตริงตัวเลขรูปแบบ C ที่ถูกต้อง (ฐานสิบหก ฐานแปด ฐานสอง และฐานสิบ)
การระบุหลายส่วนที่มีตัวเลือกค่าเดียวกันถือเป็นข้อผิดพลาด ต้องระบุตัวเลือกค่าในช่วงที่สอดคล้องกับพาร์ติชัน ที่ใช้ใน <name> รายการพาร์ติชันที่ถูกต้องและช่วงที่สอดคล้องกัน
มีการกำหนดไว้ใน system/core/libcutils/include/private/android_filesystem_config.h
ตัวเลือกมีดังนี้
|
ดูตัวอย่างการใช้งานได้ที่ การกำหนดชื่อ AID ของ OEM และ การใช้ AID ของ OEM
ตัวอย่างการใช้
ตัวอย่างต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีกำหนดและใช้ AID ของ OEM รวมถึงวิธี เปิดใช้ความสามารถของระบบไฟล์ ชื่อ AID ของ OEM ([AID_name]) ต้องขึ้นต้นด้วยชื่อพาร์ติชัน เช่น "vendor_" เพื่อให้แน่ใจว่าชื่อจะไม่ขัดแย้งกับชื่อ AOSP ในอนาคตหรือพาร์ติชันอื่นๆ
กำหนดชื่อ AID ของ OEM
หากต้องการกำหนด AID ของ OEM ให้สร้างไฟล์ config.fs และตั้งค่า
AID ตัวอย่างเช่น ใน device/x/y/config.fs ให้ตั้งค่าต่อไปนี้
[AID_VENDOR_FOO] value: 2900
หลังจากสร้างไฟล์แล้ว ให้ตั้งค่าตัวแปร TARGET_FS_CONFIG_GEN
และชี้ไปยังไฟล์นั้นใน BoardConfig.mk ตัวอย่างเช่น ใน
device/x/y/BoardConfig.mk ให้ตั้งค่าต่อไปนี้
TARGET_FS_CONFIG_GEN += device/x/y/config.fs
ตอนนี้ระบบโดยรวมสามารถใช้ AID ที่กำหนดเองได้ในการสร้างใหม่
ใช้ AID ของ OEM
หากต้องการใช้ AID ของ OEM ในโค้ด C ให้รวม oemaids_headers ไว้ใน Makefile ที่เกี่ยวข้อง
และเพิ่ม #include "generated_oem_aid.h" จากนั้นเริ่มใช้ตัวระบุที่ประกาศไว้
ตัวอย่างเช่น ใน my_file.c ให้เพิ่มสิ่งต่อไปนี้
#include "generated_oem_aid.h" … If (ipc->uid == AID_VENDOR_FOO) { // Do something ...
ในไฟล์ Android.bp ที่เกี่ยวข้อง ให้เพิ่มสิ่งต่อไปนี้
header_libs: ["oemaids_headers"],
หากคุณใช้ไฟล์ Android.mk ให้เพิ่มสิ่งต่อไปนี้
LOCAL_HEADER_LIBRARIES := oemaids_headers
ใช้ชื่อที่จำง่าย
ใน Android 9 คุณสามารถใช้ชื่อที่จำง่ายสำหรับอินเทอร์เฟซที่รองรับชื่อ AID ได้ ตัวอย่างเช่น
- ในคำสั่ง
chownในsome/init.rcchown vendor_foo /vendor/some/vendor_foo/file
- ใน
serviceในsome/init.rcservice vendor_foo /vendor/bin/foo_service user vendor_foo group vendor_foo
เนื่องจาก
/vendor/etc/passwd และ /vendor/etc/group เป็นผู้ดำเนินการแมปภายในจากชื่อที่จำง่ายไปยัง uid จึงต้องมีการติดตั้งพาร์ติชันของผู้จำหน่าย
เชื่อมโยงชื่อที่จำง่าย
Android 9 รองรับการเชื่อมโยงชื่อที่จำง่ายกับค่า AID ของ OEM จริง คุณสามารถใช้อาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่มได้ นั่นคือ "vendor_foo" แทน "2901"
แปลงจาก AID เป็นชื่อที่จำง่าย
สำหรับ
AID ของ OEM, Android 8.x กำหนดให้ใช้
oem_#### กับ getpwnam และฟังก์ชันที่คล้ายกัน รวมถึงในตำแหน่งที่จัดการการค้นหาด้วย getpwnam (เช่น
init สคริปต์) ใน Android 9 คุณสามารถใช้
getpwnam และ getgrnam ใน Bionic เพื่อแปลงจากรหัส Android (AID) เป็นชื่อที่จำง่าย และในทางกลับกัน
ใช้ความสามารถของระบบไฟล์
หากต้องการเปิดใช้ความสามารถของระบบไฟล์ ให้สร้างส่วน caps ในไฟล์
config.fs ตัวอย่างเช่น ใน
device/x/y/config.fs ให้เพิ่มส่วนต่อไปนี้
[system/bin/foo_service] mode: 0555 user: AID_VENDOR_FOO group: AID_SYSTEM caps: SYS_ADMIN | SYS_NICE
หลังจากสร้างไฟล์แล้ว ให้ตั้งค่า TARGET_FS_CONFIG_GEN เพื่อชี้ไปยัง
ไฟล์นั้นใน BoardConfig.mk ตัวอย่างเช่น ใน
device/x/y/BoardConfig.mk ให้ตั้งค่าต่อไปนี้
TARGET_FS_CONFIG_GEN += device/x/y/config.fs
เมื่อมีการเรียกใช้บริการ vendor_foo บริการจะเริ่มต้น
ด้วยความสามารถ CAP_SYS_ADMIN และ CAP_SYS_NICE
โดยไม่มีการเรียก setuid และ setgid นอกจากนี้ นโยบาย SELinux ของบริการ
vendor_foo ไม่จำเป็นต้องมีความสามารถ setuid และ setgid อีกต่อไป และสามารถ
ลบออกได้
กำหนดค่าการลบล้าง (Android 6.x-7.x)
Android 6.0 ย้าย fs_config และคำจำกัดความของโครงสร้างที่เกี่ยวข้อง (system/core/include/private/android_filesystem_config.h) ไปยัง system/core/libcutils/fs_config.c ซึ่งสามารถอัปเดตหรือลบล้างได้โดยไฟล์ไบนารีที่ติดตั้งใน /system/etc/fs_config_dirs และ /system/etc/fs_config_files การใช้กฎการจับคู่และการแยกวิเคราะห์ที่แยกต่างหากสำหรับไดเรกทอรีและไฟล์ (ซึ่งอาจใช้การแสดงออก glob เพิ่มเติม) ช่วยให้ Android จัดการไดเรกทอรีและไฟล์ในตาราง 2 ตารางที่แตกต่างกันได้
คำจำกัดความของโครงสร้างใน system/core/libcutils/fs_config.c ไม่เพียงอนุญาตให้อ่านไดเรกทอรีและไฟล์ในรันไทม์เท่านั้น แต่โฮสต์ยังสามารถใช้ไฟล์เดียวกันในระหว่างเวลาบิลด์เพื่อสร้างอิมเมจระบบไฟล์เป็น ${OUT}/system/etc/fs_config_dirs และ ${OUT}/system/etc/fs_config_files ได้ด้วย
แม้ว่าวิธีการลบล้างในการขยายระบบไฟล์จะถูกแทนที่ด้วย ระบบการกำหนดค่าแบบโมดูลาร์ที่เปิดตัวใน Android 8.0 แล้ว แต่คุณก็ยังใช้วิธีเก่า ได้หากต้องการ ส่วนต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีสร้างและรวม ไฟล์การลบล้าง รวมถึงกำหนดค่าระบบไฟล์
สร้างไฟล์การลบล้าง
คุณสามารถสร้างไฟล์ไบนารีที่จัดแนวแล้ว /system/etc/fs_config_dirs และ /system/etc/fs_config_files ได้โดยใช้เครื่องมือ fs_config_generate ใน build/tools/fs_config เครื่องมือนี้ใช้ฟังก์ชันไลบรารี libcutils (fs_config_generate()) เพื่อจัดการข้อกำหนด DAC ลงในบัฟเฟอร์ และกำหนดกฎสำหรับไฟล์รวมเพื่อกำหนดกฎ DAC
หากต้องการใช้ ให้สร้างไฟล์รวมใน
device/vendor/device/android_filesystem_config.h
ที่ทำหน้าที่เป็นการลบล้าง ไฟล์ต้องใช้รูปแบบ structure fs_path_config ที่กำหนดไว้ใน system/core/include/private/android_filesystem_config.h โดยมีการเริ่มต้นโครงสร้างต่อไปนี้สำหรับสัญลักษณ์ไดเรกทอรีและไฟล์
- สำหรับไดเรกทอรี ให้ใช้
android_device_dirs[] - สำหรับไฟล์ ให้ใช้
android_device_files[]
เมื่อไม่ได้ใช้ android_device_dirs[] และ
android_device_files[] คุณสามารถกำหนด
NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS และ
NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_FILES ได้ (ดู
ตัวอย่าง ด้านล่าง) นอกจากนี้ คุณยังระบุไฟล์การลบล้าง
ได้โดยใช้ TARGET_ANDROID_FILESYSTEM_CONFIG_H ในการกำหนดค่าบอร์ด
โดยมีชื่อไฟล์ฐานบังคับเป็น
android_filesystem_config.h
รวมไฟล์การลบล้าง
หากต้องการรวมไฟล์ ให้ตรวจสอบว่า PRODUCT_PACKAGES มี
fs_config_dirs และ/หรือ fs_config_files เพื่อให้ระบบ
ติดตั้งไฟล์เหล่านั้นลงใน /system/etc/fs_config_dirs และ
/system/etc/fs_config_files ตามลำดับ ระบบบิลด์จะค้นหา android_filesystem_config.h ที่กำหนดเองใน $(TARGET_DEVICE_DIR) ซึ่งเป็นตำแหน่งที่ BoardConfig.mk อยู่
หากไฟล์นี้อยู่ในตำแหน่งอื่น ให้ตั้งค่าตัวแปรการกำหนดค่าบอร์ด
TARGET_ANDROID_FILESYSTEM_CONFIG_H เพื่อชี้ไปยังตำแหน่งนั้น
กำหนดค่าระบบไฟล์
วิธีกำหนดค่าระบบไฟล์ใน Android 6.0 ขึ้นไป
- สร้างไฟล์
$(TARGET_DEVICE_DIR)/android_filesystem_config.h - เพิ่ม
fs_config_dirsและ/หรือfs_config_filesลงในPRODUCT_PACKAGESในไฟล์การกำหนดค่าบอร์ด (เช่น$(TARGET_DEVICE_DIR)/device.mk)
ตัวอย่างการลบล้าง
ตัวอย่างนี้แสดงแพตช์สำหรับการลบล้าง system/bin/glgps
Daemon เพื่อเพิ่มการรองรับ Wake Lock ใน
device/vendor/device ไดเรกทอรี โปรดคำนึงถึงสิ่งต่อไปนี้
- แต่ละรายการโครงสร้างคือโหมด, uid, gid, ความสามารถ และชื่อ
system/core/include/private/android_filesystem_config.hจะรวมโดยอัตโนมัติเพื่อให้ #defines ของไฟล์ Manifest (AID_ROOT,AID_SHELL,CAP_BLOCK_SUSPEND) - ส่วน
android_device_files[]มีการดำเนินการเพื่อ ระงับการเข้าถึงsystem/etc/fs_config_dirsเมื่อไม่ได้ระบุ ซึ่งทำหน้าที่เป็นการป้องกัน DAC เพิ่มเติมเนื่องจากไม่มีเนื้อหาสำหรับการลบล้างไดเรกทอรี อย่างไรก็ตาม การป้องกันนี้ไม่แข็งแกร่ง หากใครบางคนควบคุม/systemได้ โดยทั่วไปแล้วจะทำอะไรก็ได้ตามต้องการ
diff --git a/android_filesystem_config.h b/android_filesystem_config.h
new file mode 100644
index 0000000..874195f
--- /dev/null
+++ b/android_filesystem_config.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+/* This file is used to define the properties of the file system
+** images generated by build tools (eg: mkbootfs) and
+** by the device side of adb.
+*/
+
+#define NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS
+/* static const struct fs_path_config android_device_dirs[] = { }; */
+
+/* Rules for files.
+** These rules are applied based on "first match", so they
+** should start with the most specific path and work their
+** way up to the root. Prefixes ending in * denotes wildcard
+** and will allow partial matches.
+*/
+static const struct fs_path_config android_device_files[] = {
+ { 00755, AID_ROOT, AID_SHELL, (1ULL << CAP_BLOCK_SUSPEND),
"system/bin/glgps" },
+#ifdef NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS
+ { 00000, AID_ROOT, AID_ROOT, 0, "system/etc/fs_config_dirs" },
+#endif
+};
diff --git a/device.mk b/device.mk
index 0c71d21..235c1a7 100644
--- a/device.mk
+++ b/device.mk
@@ -18,7 +18,8 @@ PRODUCT_PACKAGES := \
libwpa_client \
hostapd \
wpa_supplicant \
- wpa_supplicant.conf
+ wpa_supplicant.conf \
+ fs_config_files
ifeq ($(TARGET_PREBUILT_KERNEL),)
ifeq ($(USE_SVELTE_KERNEL), true)
ย้ายข้อมูลระบบไฟล์จากเวอร์ชันก่อนหน้า
เมื่อย้ายข้อมูลระบบไฟล์จาก Android 5.x และเวอร์ชันก่อนหน้า โปรดทราบว่า Android 6.x
- นำการรวม โครงสร้าง และคำจำกัดความแบบอินไลน์บางรายการออก
- ต้องมีการอ้างอิงถึง
libcutilsแทนการเรียกใช้โดยตรง จากsystem/core/include/private/android_filesystem_config.hไฟล์ปฏิบัติการส่วนตัวของผู้ผลิตอุปกรณ์ที่ขึ้นอยู่กับsystem/code/include/private_filesystem_config.hสำหรับโครงสร้างไฟล์หรือ ไดเรกทอรี หรือfs_configต้องเพิ่มการขึ้นต่อกันของไลบรารีlibcutils - ต้องใช้สำเนา Branch แบบส่วนตัวของผู้ผลิตอุปกรณ์ของ
system/core/include/private/android_filesystem_config.hที่มี เนื้อหาเพิ่มเติมในเป้าหมายที่มีอยู่เพื่อย้ายไปยังdevice/vendor/device/android_filesystem_config.h - สงวนสิทธิ์ในการใช้การควบคุมการเข้าถึงแบบบังคับ (MAC) ของ SELinux กับ
ไฟล์การกำหนดค่าในระบบเป้าหมาย การติดตั้งใช้งานที่มีไฟล์ปฏิบัติการเป้าหมายที่กำหนดเอง
โดยใช้
fs_config()ต้องตรวจสอบการเข้าถึง