การควบคุมการเข้าถึงด้วยดุลยพินิจ (DAC)

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ออบเจ็กต์ระบบไฟล์และบริการที่เพิ่มลงในบิลด์มักต้องการ ID ที่ไม่ซ้ำกันซึ่งแยกจากกัน ซึ่งเรียกว่า Android ID (AID) ปัจจุบัน ทรัพยากรจำนวนมาก เช่น ไฟล์และบริการใช้ AID หลัก (ที่กำหนดโดย Android) โดยไม่จำเป็น ในหลายกรณี คุณสามารถใช้เครื่องช่วยหายใจแบบ OEM (ที่กำหนดโดย OEM) แทนได้

Android เวอร์ชันก่อนหน้า (Android 7.x และต่ำกว่า) ขยายกลไก AIDs โดยใช้ไฟล์ android_filesystem_config.h เฉพาะอุปกรณ์ เพื่อระบุความสามารถของระบบไฟล์และ/หรือ OEM AID ที่กำหนดเอง อย่างไรก็ตาม ระบบนี้ไม่เป็นธรรมชาติ เนื่องจากไม่รองรับการใช้ชื่อที่ดีสำหรับ OEM AID ทำให้คุณต้องระบุตัวเลขดิบสำหรับฟิลด์ผู้ใช้และกลุ่มโดยไม่ต้องเชื่อมโยงชื่อที่จำง่ายกับ AID ที่เป็นตัวเลข

Android เวอร์ชันใหม่กว่า (Android 8.0 ขึ้นไป) รองรับวิธีการใหม่ในการขยายความสามารถของระบบไฟล์ วิธีการใหม่นี้รองรับสิ่งต่อไปนี้:

  • ตำแหน่งต้นทางหลายแห่งสำหรับไฟล์การกำหนดค่า (เปิดใช้งานการกำหนดค่าบิลด์ที่ขยายได้)
  • การตรวจสอบความมีสติของค่า OEM AID
  • การสร้างส่วนหัว OEM AID แบบกำหนดเองที่สามารถใช้ในไฟล์ต้นฉบับได้ตามต้องการ
  • การเชื่อมโยงชื่อที่จำง่ายกับค่า OEM AID จริง รองรับอาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่ม เช่น "foo" แทนที่จะเป็น "2901"

การปรับปรุงเพิ่มเติมรวมถึงการลบอาร์เรย์ android_ids[] ออกจาก system/core/libcutils/include/private/android_filesystem_config.h ตอนนี้อาร์เรย์นี้มีอยู่ใน Bionic เป็นอาร์เรย์ที่สร้างขึ้นโดยส่วนตัวโดยสมบูรณ์ โดยมีการเข้าถึงผ่าน getpwnam() และ getgrnam() (มีผลข้างเคียงจากการสร้างไบนารีที่เสถียรเนื่องจากมีการแก้ไข core AID) สำหรับเครื่องมือและไฟล์ README ที่มีรายละเอียดเพิ่มเติม โปรดดูที่ build/make/tools/fs_config

การเพิ่มรหัส Android (AIDs)

Android 8.0 ลบอาร์เรย์ android_ids[] ออกจาก Android Open Source Project (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: 1,000
  • gid: 1,000

หากต้องการเพิ่ม AOSP core AID ใหม่ เพียงเพิ่ม #define ลงในไฟล์ส่วนหัว android_filesystem_config.h AID จะถูกสร้างขึ้นที่ build และพร้อมใช้งานสำหรับอินเทอร์เฟซที่ใช้อาร์กิวเมนต์ของผู้ใช้และกลุ่ม เครื่องมือตรวจสอบ AID ใหม่ไม่อยู่ในช่วง APP หรือ OEM นอกจากนี้ยังคำนึงถึงการเปลี่ยนแปลงในช่วงเหล่านั้นและควรกำหนดค่าใหม่โดยอัตโนมัติตามการเปลี่ยนแปลงหรือช่วงที่สงวนไว้สำหรับ OEM ใหม่

การกำหนดค่า AIDs

ในการเปิดใช้งานกลไก AIDs ใหม่ ให้ตั้งค่า TARGET_FS_CONFIG_GEN ในไฟล์ BoardConfig.mk ตัวแปรนี้เก็บรายการไฟล์คอนฟิกูเรชัน ช่วยให้คุณสามารถต่อท้ายไฟล์ได้ตามต้องการ

ตามธรรมเนียม ไฟล์คอนฟิกูเรชันใช้ชื่อ config.fs แต่ในทางปฏิบัติ คุณสามารถใช้ชื่อใดก็ได้ ไฟล์ config.fs อยู่ใน รูปแบบ Python ConfigParser ini และรวมถึงส่วน caps (สำหรับการกำหนดค่าความสามารถของระบบไฟล์) และส่วน AID (สำหรับการกำหนดค่า OEM AID)

การกำหนดค่าส่วนแคป

ส่วน caps รองรับการตั้งค่า ความสามารถของระบบไฟล์ บนอ็อบเจ็กต์ระบบไฟล์ภายในบิลด์ (ระบบไฟล์เองต้องสนับสนุนฟังก์ชันนี้ด้วย)

เนื่องจากการเรียกใช้บริการที่เสถียรในฐานะรูทใน Android ทำให้เกิดความล้มเหลวของ ชุดทดสอบความเข้ากันได้ (CTS) ข้อกำหนดก่อนหน้านี้สำหรับการรักษาความสามารถในขณะที่เรียกใช้กระบวนการหรือบริการที่เกี่ยวข้องกับการตั้งค่าความสามารถ จากนั้นจึงใช้ setuid / setgid กับ AID ที่เหมาะสมเพื่อเรียกใช้ ด้วยตัวพิมพ์ใหญ่ คุณสามารถข้ามข้อกำหนดเหล่านี้และให้เคอร์เนลดำเนินการแทนคุณได้ เมื่อการควบคุมถูกส่งไปยัง main() กระบวนการของคุณมีความสามารถที่จำเป็นอยู่แล้ว ดังนั้นบริการของคุณสามารถใช้ผู้ใช้และกลุ่มที่ไม่ใช่รูทได้ (นี่เป็นวิธีที่ต้องการสำหรับการเริ่มบริการที่มีสิทธิพิเศษ)

ส่วนตัวพิมพ์ใหญ่ใช้ไวยากรณ์ต่อไปนี้:

ส่วน ค่า คำนิยาม
[path] เส้นทางระบบไฟล์ที่จะกำหนดค่า เส้นทางที่ลงท้ายด้วย / ถือเป็น dir ไม่เช่นนั้นจะเป็นไฟล์

เป็นข้อผิดพลาดในการระบุหลายส่วนด้วย [path] เดียวกันในไฟล์ที่ต่างกัน ในเวอร์ชัน Python <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่แทนที่ส่วนก่อนหน้า ใน Python 3.2 ถูกตั้งค่าเป็นโหมดเข้มงวด
mode โหมดไฟล์เลขฐานแปด โหมดไฟล์ฐานแปดที่ถูกต้องอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะนำหน้าด้วย 0 มิฉะนั้นจะใช้โหมดตามที่เป็นอยู่
user AID_<ผู้ใช้> ตัว C เป็นผู้ define AID ที่ถูกต้องหรือชื่อที่จำง่าย (เช่น ทั้ง AID_RADIO และ radio เป็นที่ยอมรับได้) ในการกำหนด AID แบบกำหนดเอง โปรดดู ที่ส่วนการกำหนดค่า AID
group AID_<กลุ่ม> เช่นเดียวกับผู้ใช้
caps หมวก* ชื่อตามที่ประกาศใน bionic/libc/kernel/uapi/linux/capability.h โดยไม่มี CAP_ นำหน้า อนุญาตให้ผสมกรณี ตัวพิมพ์ใหญ่สามารถเป็นแบบดิบได้:
  • ไบนารี (0b0101)
  • ฐานแปด (0455)
  • อินท์ (42)
  • เลขฐานสิบหก (0xFF)
แยกตัวพิมพ์ใหญ่หลายตัวโดยใช้ช่องว่าง

สำหรับตัวอย่างการใช้งาน โปรดดูที่ การใช้ความสามารถของระบบไฟล์

การกำหนดค่าส่วน AID

ส่วน AID ประกอบด้วย OEM AID และใช้ไวยากรณ์ต่อไปนี้:

ส่วน ค่า คำนิยาม
[AID_<name>] <name> สามารถมีอักขระในชุดตัวพิมพ์ใหญ่ ตัวเลข และขีดล่าง เวอร์ชันตัวพิมพ์เล็กใช้เป็นชื่อที่เป็นมิตร ไฟล์ส่วนหัวที่สร้างขึ้นสำหรับการรวมโค้ดใช้ AID_<name> ที่แน่นอน

เป็นข้อผิดพลาดในการระบุหลายส่วนด้วย AID_<name> เดียวกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยมีข้อจำกัดเดียวกันกับ [path] )

<name> ต้องขึ้นต้นด้วยชื่อพาร์ติชั่นเพื่อให้แน่ใจว่าจะไม่ขัดแย้งกับแหล่งที่มาอื่น
value <จำนวน> สตริงตัวเลขสไตล์ C ที่ถูกต้อง (ฐานสิบหก ฐานแปด ไบนารี และทศนิยม)

การระบุหลายส่วนด้วยตัวเลือกค่าเดียวกันถือเป็นข้อผิดพลาด

ต้องระบุตัวเลือกค่าในช่วงที่สอดคล้องกับพาร์ติชันที่ใช้ใน <name> รายการพาร์ติชั่นที่ถูกต้องและช่วงที่สอดคล้องกันถูกกำหนดไว้ใน system/core/libcutils/include/private/android_filesystem_config.h ตัวเลือกคือ:
  • พาร์ทิชันผู้จำหน่าย
    • AID_OEM_RESERVED_START(2900) - AID_OEM_RESERVED_END (2999)
    • AID_OEM_RESERVED_2_START(5000) - AID_OEM_RESERVED_2_END (5999)
  • พาร์ติชันระบบ
    • AID_SYSTEM_RESERVED_START(6000) - AID_SYSTEM_RESERVED_END(6499)
  • พาร์ติชั่น ODM
    • AID_ODM_RESERVED_START(6500) - AID_ODM_RESERVED_END(6999)
  • ฉากกั้นสินค้า
    • AID_PRODUCT_RESERVED_START(7000) - AID_PRODUCT_RESERVED_END(7499)
  • พาร์ติชั่น System_ext
    • AID_SYSTEM_EXT_RESERVED_START(7500) - AID_SYSTEM_EXT_RESERVED_END(7999)

สำหรับตัวอย่างการใช้งาน โปรดดูที่ การกำหนดชื่อ OEM AID และ การใช้ OEM AID

ตัวอย่างการใช้งาน

ตัวอย่างต่อไปนี้มีรายละเอียดวิธีกำหนดและใช้ OEM AID และวิธีเปิดใช้งานความสามารถของระบบไฟล์ ชื่อ OEM AID ( [AID_ name ] ) ต้องขึ้นต้นด้วยชื่อพาร์ติชัน เช่น " vendor_ " เพื่อให้แน่ใจว่าจะไม่ขัดแย้งกับชื่อ AOSP ในอนาคตหรือพาร์ติชันอื่นๆ

การกำหนดชื่อ OEM AID

ในการกำหนด OEM AID ให้สร้างไฟล์ 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 ที่กำหนดเองของคุณได้ในรุ่นใหญ่ในบิลด์ใหม่

การใช้ OEM AIDs

หากต้องการใช้ OEM AID ในโค้ด 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
    

เนื่องจากการแม็พภายในจากชื่อที่จำง่ายไปยัง uid ดำเนินการโดย /vendor/etc/passwd และ /vendor/etc/group พาร์ติชันของผู้ขายต้องถูกเมาท์

การเชื่อมโยงชื่อที่เป็นมิตร

Android 9 รองรับการเชื่อมโยงชื่อที่จำง่ายกับค่า OEM AID จริง คุณสามารถใช้อาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่ม เช่น " vendor_ foo" แทน "2901"

แปลงจาก AID เป็นชื่อที่เป็นมิตร

สำหรับ OEM AID นั้น Android 8.x จำเป็นต้องใช้ oem_#### กับ getpwnam และฟังก์ชันที่คล้ายกัน รวมทั้งในสถานที่ที่จัดการการค้นหาผ่าน getpwnam (เช่น สคริปต์ init ) ใน Android 9 คุณสามารถใช้ getpwnam และ getgrnam friends ใน Bionic เพื่อแปลงจาก Android ID (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 สามารถจัดการไดเร็กทอรีและไฟล์ในสองตารางที่แตกต่างกัน คำจำกัดความของโครงสร้างใน 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 มีอยู่ หากไฟล์นี้มีอยู่ที่อื่น ให้ตั้งค่าตัวแปร config ของบอร์ด TARGET_ANDROID_FILESYSTEM_CONFIG_H ให้ชี้ไปที่ตำแหน่งนั้น

การกำหนดค่าระบบไฟล์

ในการกำหนดค่าระบบไฟล์ใน Android 6.0 ขึ้นไป:

  1. สร้างไฟล์ $(TARGET_DEVICE_DIR)/android_filesystem_config.h
  2. เพิ่ม 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 ( 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 filesystem
+** 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
  • ขอสงวนสิทธิ์ในการใช้ SELinux Mandatory Access Controls (MAC) กับไฟล์การกำหนดค่าบนระบบเป้าหมาย การใช้งานที่มีไฟล์สั่งการเป้าหมายที่กำหนดเองโดยใช้ fs_config() จะต้องรับรองการเข้าถึง