ออบเจ็กต์ระบบไฟล์และบริการที่เพิ่มลงในการสร้างมักจะต้องมีรหัสที่ไม่ซ้ำกันแยกต่างหาก ซึ่งเรียกว่ารหัส 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
กลายเป็น
- ชื่อที่จำง่าย: ระบบ
- 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
อยู่ใน
รูปแบบ ConfigParser ini ของ Pythonและมีส่วน caps (สำหรับการกำหนดค่าความสามารถของระบบไฟล์) และส่วน AIDs (สำหรับการกำหนดค่า AIDs ของ OEM)
กำหนดค่าส่วนขีดจำกัด
ส่วน caps รองรับการตั้งค่าความสามารถของระบบไฟล์ในออบเจ็กต์ระบบไฟล์ภายในบิลด์ (ตัวระบบไฟล์เองก็ต้องรองรับฟังก์ชันนี้ด้วย)
เนื่องจากการเรียกใช้บริการที่เสถียรในฐานะรูทใน Android ทำให้ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ล้มเหลว ข้อกำหนดก่อนหน้านี้ในการคงความสามารถไว้ขณะเรียกใช้กระบวนการหรือบริการเกี่ยวข้องกับการตั้งค่าความสามารถ แล้วใช้ setuid
/setgid
กับ AID ที่เหมาะสมเพื่อเรียกใช้ โดยการใช้ Caps คุณ
สามารถข้ามข้อกำหนดเหล่านี้และให้เคอร์เนลจัดการให้คุณได้ เมื่อส่งต่อการควบคุมไปยัง main()
กระบวนการของคุณจะมีขีดความสามารถที่จำเป็นอยู่แล้วเพื่อให้บริการใช้ผู้ใช้และกลุ่มที่ไม่ใช่รูทได้ (นี่เป็นวิธีที่แนะนำในการเริ่มต้นบริการที่มีสิทธิ์)
ส่วนการจำกัดการใช้จ่ายใช้ไวยากรณ์ต่อไปนี้
ส่วน | ค่านิยม | คำจำกัดความ |
---|---|---|
[path] |
เส้นทางระบบไฟล์ที่จะกำหนดค่า เส้นทางที่ลงท้ายด้วย / จะถือว่าเป็นไดเรกทอรี
ไม่เช่นนั้นจะเป็นไฟล์
การระบุหลายส่วนที่มี [path] เดียวกันในไฟล์ต่างๆ ถือเป็นข้อผิดพลาด ใน Python เวอร์ชัน <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่ลบล้างส่วนก่อนหน้า ใน Python 3.2 จะตั้งค่าเป็นโหมดเข้มงวด |
|
mode |
โหมดไฟล์ฐานแปด | โหมดไฟล์ฐานแปดที่ถูกต้องซึ่งมีอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะนำหน้าด้วย 0 มิฉะนั้นจะใช้โหมดตามที่ระบุ |
user |
AID_<user> | ทั้ง C define สำหรับ AID ที่ถูกต้องหรือชื่อที่เข้าใจง่าย
(เช่น ทั้ง AID_RADIO และ radio ใช้ได้) หากต้องการ
กําหนด AID ที่กําหนดเอง ให้ดูการกําหนดค่า
ส่วน AID |
group |
AID_<group> | เหมือนกับผู้ใช้ |
caps |
cap* | ชื่อตามที่ประกาศไว้ใน
bionic/libc/kernel/uapi/linux/capability.h
โดยไม่มี CAP_ นำหน้า อนุญาตให้ใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผสมกัน โดยแคปชันอาจเป็น
แบบดิบ
|
ดูตัวอย่างการใช้งานได้ที่การใช้ความสามารถของระบบไฟล์
กำหนดค่าส่วน AID
ส่วน AID มี AID ของ OEM และใช้ไวยากรณ์ต่อไปนี้
ส่วน | ค่านิยม | คำจำกัดความ |
---|---|---|
[AID_<name>] |
<name> มีอักขระในชุด
ตัวพิมพ์ใหญ่ ตัวเลข และขีดล่างได้ ระบบจะใช้เวอร์ชันตัวพิมพ์เล็กเป็น
ชื่อที่จำง่าย ไฟล์ส่วนหัวที่สร้างขึ้นสำหรับการรวมโค้ดจะใช้
AID_<name>
การระบุหลายส่วนที่มี AID_<name> เดียวกันถือเป็นข้อผิดพลาด (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยมีข้อจำกัดเดียวกันกับ[path] )
<name> ต้องขึ้นต้นด้วยชื่อพาร์ติชันเพื่อให้แน่ใจว่าไม่ขัดแย้งกับแหล่งที่มาอื่นๆ |
|
value |
<หมายเลข> | สตริงตัวเลขรูปแบบ 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.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
เนื่องจาก /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
)
ตัวอย่างการลบล้าง
ตัวอย่างนี้แสดงแพตช์สำหรับการลบล้าง daemon system/bin/glgps
เพื่อเพิ่มการรองรับ 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
การอ้างอิงไลบรารี - ต้องใช้สำเนาสาขาแบบส่วนตัวของผู้ผลิตอุปกรณ์ของ
system/core/include/private/android_filesystem_config.h
ที่มี เนื้อหาเพิ่มเติมในเป้าหมายที่มีอยู่เพื่อย้ายไปยังdevice/vendor/device/android_filesystem_config.h
- ขอสงวนสิทธิ์ในการใช้การควบคุมการเข้าถึงที่จำเป็น (MAC) ของ SELinux กับ
ไฟล์การกำหนดค่าในระบบเป้าหมาย การติดตั้งใช้งานที่มี
ไฟล์ปฏิบัติการเป้าหมายที่กำหนดเองโดยใช้
fs_config()
ต้องตรวจสอบว่ามีการเข้าถึง