ออบเจ็กต์และบริการของระบบไฟล์ที่เพิ่มลงในบิลด์มักจะต้องใช้รหัสที่ไม่ซ้ำกันแยกต่างหาก ซึ่งเรียกว่ารหัส 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 (AOSP) แล้ว ระบบจะสร้างชื่อที่ AID เข้ากันได้ทั้งหมดจากไฟล์ส่วนหัว system/core/libcutils/include/private/android_filesystem_config.h
แทนเมื่อสร้างอาร์เรย์ Bionic android_ids[]
เครื่องมือจะเลือก 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 ใหม่ ให้ตั้งค่า TARGET_FS_CONFIG_GEN
ในไฟล์ BoardConfig.mk
ตัวแปรนี้เก็บรายการไฟล์การกําหนดค่าไว้ ซึ่งช่วยให้คุณเพิ่มไฟล์ต่อท้ายได้ตามต้องการ
โดยปกติแล้ว ไฟล์การกำหนดค่าจะใช้ชื่อ config.fs
แต่ในทางปฏิบัติ คุณจะใช้ชื่อใดก็ได้ ไฟล์ config.fs
อยู่ในรูปแบบ Python ConfigParser ini และมีส่วน caps (สําหรับการกําหนดค่าความสามารถของระบบไฟล์) และส่วน AID (สําหรับการกําหนดค่า AID ของ OEM)
กำหนดค่าส่วนตัวพิมพ์ใหญ่
ส่วน CAPS รองรับการตั้งค่าความสามารถของระบบไฟล์ในออบเจ็กต์ระบบไฟล์ภายในบิลด์ (ระบบไฟล์เองต้องรองรับฟังก์ชันการทำงานนี้ด้วย)
เนื่องจากการเรียกใช้บริการที่เสถียรในฐานะรูทใน Android ทำให้ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ทำงานไม่สำเร็จ ข้อกำหนดก่อนหน้านี้สำหรับการเก็บรักษาความสามารถขณะเรียกใช้กระบวนการหรือบริการเกี่ยวข้องกับการตั้งค่าความสามารถแล้วใช้ setuid
/setgid
กับ AID ที่เหมาะสมเพื่อเรียกใช้ เมื่อใช้แคป คุณจะสามารถข้ามข้อกำหนดเหล่านี้และปล่อยให้เคอร์เนลดำเนินการให้คุณได้ เมื่อมอบการควบคุมให้กับ main()
แล้ว กระบวนการจะมีความสามารถที่ต้องการอยู่แล้ว บริการจึงใช้ผู้ใช้และกลุ่มที่ไม่ใช่ระดับรูทได้ (วิธีนี้คือวิธีที่แนะนำในการเริ่มต้นบริการที่มีสิทธิ์)
ส่วน CAPS ใช้ไวยากรณ์ต่อไปนี้
โซน | ค่า | คำจำกัดความ |
---|---|---|
[path] |
เส้นทางระบบไฟล์ที่จะกําหนดค่า เส้นทางที่ลงท้ายด้วย / จะถือว่าเป็นไดเรกทอรี ส่วนเส้นทางอื่นๆ จะถือว่าเป็นไฟล์
การระบุส่วนที่มี [path] เดียวกันในไฟล์ต่างๆ หลายส่วนเป็นข้อผิดพลาด ใน Python เวอร์ชัน <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่ลบล้างส่วนก่อนหน้า ส่วนใน Python 3.2 ระบบจะตั้งค่าเป็นโหมดที่เข้มงวด |
|
mode |
โหมดไฟล์ฐาน 8 | โหมดไฟล์ฐาน 8 ที่ถูกต้องซึ่งมีตัวเลขอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะใส่ 0 นําหน้า มิเช่นนั้นระบบจะใช้โหมดตามที่เป็นอยู่ |
user |
AID_<user> | C define สำหรับ AID ที่ถูกต้องหรือชื่อที่จำง่าย (เช่น ยอมรับทั้ง AID_RADIO และ radio ) หากต้องการกำหนด AID ที่กําหนดเอง โปรดดูการกําหนดค่าส่วน AID |
group |
AID_<group> | เหมือนกับผู้ใช้ |
caps |
ตัวพิมพ์ใหญ่* | ชื่อตามที่ประกาศใน
bionic/libc/kernel/uapi/linux/capability.h
โดยไม่ใส่ CAP_ นําหน้า อนุญาตให้ใช้ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แคปอาจเป็นค่าต่อไปนี้ก็ได้
ค่าดิบ
|
ดูตัวอย่างการใช้งานได้ที่การใช้ความสามารถของระบบไฟล์
กำหนดค่าส่วน 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
ตัวอย่างการใช้งาน
ตัวอย่างต่อไปนี้มีรายละเอียดเกี่ยวกับวิธีกำหนดและใช้ OEM AID และวิธีเปิดใช้ความสามารถของระบบไฟล์ ชื่อ 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.rc
chown vendor_foo /vendor/some/vendor_foo/file
- ใน
service
ในsome/init.rc
service vendor_foo /vendor/bin/foo_service user vendor_foo group vendor_foo
เนื่องจากการแมปภายในจาก friendly name ไปยัง uid ดําเนินการโดย /vendor/etc/passwd
และ /vendor/etc/group
จึงต้องต่อเชื่อมพาร์ติชันผู้ให้บริการ
เชื่อมโยงชื่อที่จำง่าย
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
การใช้กฎการจับคู่และการแยกวิเคราะห์แยกต่างหากสำหรับไดเรกทอรีและไฟล์ (ซึ่งอาจใช้นิพจน์ทั่วไปเพิ่มเติมได้) ทำให้ 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
)
ตัวอย่างการลบล้าง
ตัวอย่างนี้แสดงแพตช์สำหรับการลบล้าง Daemon system/bin/glgps
เพื่อเพิ่มการรองรับการล็อกให้ตื่นในไดเรกทอรี device/vendor/device
โปรดคำนึงถึงสิ่งต่อไปนี้
- รายการโครงสร้างแต่ละรายการคือโหมด, uid, gid, ความสามารถ และชื่อ
system/core/include/private/android_filesystem_config.h
จะรวมอยู่โดยอัตโนมัติเพื่อระบุ #define ของไฟล์ 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
- ต้องทำสำเนาสาขาส่วนตัวของผู้ผลิตอุปกรณ์
system/core/include/private/android_filesystem_config.h
ที่มีเนื้อหาเพิ่มเติมในเป้าหมายที่มีอยู่เพื่อย้ายไปยังdevice/vendor/device/android_filesystem_config.h
- สงวนสิทธิ์ที่จะใช้การควบคุมการเข้าถึงที่จำเป็น (MAC) ของ SELinux กับไฟล์การกำหนดค่าในระบบเป้าหมาย การใช้งานที่มีไฟล์ปฏิบัติการเป้าหมายที่กำหนดเองโดยใช้
fs_config()
ต้องตรวจสอบการเข้าถึง