डिस्क्रेशनरी ऐक्सेस कंट्रोल (डीएसी)

बिल्ड में जोड़े गए फ़ाइल सिस्टम ऑब्जेक्ट और सेवाओं को अक्सर अलग-अलग, यूनीक आईडी, जिन्हें Android आईडी (एआईडी) कहा जाता है. फ़िलहाल, कई संसाधन जैसे कि फ़ाइलें और सेवाएं ग़ैर-ज़रूरी तौर पर कोर (Android के तय किए गए) AID का इस्तेमाल करती हों; कई ऐसे मामलों में, OEM (OEM के तय किए गए) AID का इस्तेमाल किया जा सकता है.

Android के पिछले वर्शन (Android 7.x और उससे पहले के वर्शन) ने AID की सुविधा बढ़ा दी है खास तौर पर, डिवाइस के लिए android_filesystem_config.h का इस्तेमाल करने वाला सिस्टम फ़ाइल सिस्टम की क्षमताओं और/या कस्टम OEM AIDs के बारे में बताता है. हालांकि, इस यह सिस्टम समझ में नहीं आया, क्योंकि यह OEM AIDs के लिए मान्य नाम इस्तेमाल करने की सुविधा नहीं देता था. आपको उपयोगकर्ता और समूह फ़ील्ड के लिए बिना किसी संख्या वाले 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() वाले ऐक्सेसर. (इसमें कोर AID में स्टेबल बाइनरी बनाने का खराब असर भी दिखता है.) इसके लिए टूलिंग और ज़्यादा जानकारी के साथ एक README फ़ाइल मिलेगी. build/make/tools/fs_config.

Android आईडी (AID) जोड़ना

Android 8.0 ने Android से android_ids[] कलेक्शन को हटा दिया है ओपन सोर्स प्रोजेक्ट (AOSP). AID इस्तेमाल करने वाले सभी नाम, इसके बजाय यहां से जनरेट किए जाते हैं system/core/libcutils/include/private/android_filesystem_config.h बायोनिक android_ids[] अरे जनरेट करते समय, हेडर फ़ाइल. कोई भी AID_* से मेल खाने वाले define को टूलिंग की मदद से चुना जाता है और *, अंग्रेज़ी के छोटे अक्षरों में लिखा जा सकता है.

उदाहरण के लिए, private/android_filesystem_config.h में:

#define AID_SYSTEM 1000

बनने वाला है:

  • दोस्ताना नाम: सिस्टम
  • यूआईडी: 1000
  • जीआईडी: 1000

नया AOSP कोर AID जोड़ने के लिए, बस #define को android_filesystem_config.h हेडर फ़ाइल. सहायता आईडी है बिल्ड पर जनरेट की गई और उपयोगकर्ता और ग्रुप का इस्तेमाल करने वाले इंटरफ़ेस पर उपलब्ध कराई गई आर्ग्युमेंट. टूल से पता चलता है कि नया AID, APP या OEM में शामिल नहीं है रेंज; यह उन रेंज में किए गए बदलावों के मुताबिक भी काम करता है और अपने-आप बदलावों या OEM के ज़रिए रिज़र्व की गई नई रेंज को फिर से कॉन्फ़िगर किया जा सकता है.

AID कॉन्फ़िगर करें

नए AIDs मैकेनिज़्म को चालू करने के लिए, TARGET_FS_CONFIG_GEN को इसमें सेट करें: BoardConfig.mk फ़ाइल. इस वैरिएबल में कॉन्फ़िगरेशन की एक सूची शामिल है फ़ाइलें अपलोड करें, जिससे आप ज़रूरत के हिसाब से फ़ाइलें जोड़ सकते हैं.

कन्वेंशन के मुताबिक, कॉन्फ़िगरेशन फ़ाइलों में config.fs नाम का इस्तेमाल किया जाता है, लेकिन तो आप कोई भी नाम इस्तेमाल कर सकते हैं. config.fs फ़ाइलें इसमें हैं Python ConfigParser ini फ़ॉर्मैट में साइन इन करें और उसमें एक कैप सेक्शन शामिल करें (फ़ाइल कॉन्फ़िगर करने के लिए) और एक AID सेक्शन (OEM AID कॉन्फ़िगर करने के लिए) शामिल हैं.

कैप सेक्शन को कॉन्फ़िगर करना

Caps सेक्शन में सेटिंग की सुविधा काम करती है फ़ाइल बिल्ड (फ़ाइल सिस्टम) में मौजूद फ़ाइल सिस्टम ऑब्जेक्ट पर सिस्टम की क्षमताएं भी ज़रूरी है कि ये सुविधाएं इस फ़ंक्शन के साथ काम करती हों.

क्योंकि Android में रूट के रूप में स्थिर सेवा चलाने से कंपैटबिलिटी टेस्ट सुइट (सीटीएस) असफलता, किसी प्रोग्राम को चलाने के दौरान, उसकी क्षमता को बनाए रखने के लिए पिछली ज़रूरी शर्तें सुविधाओं को सेट करने और फिर उसका उपयोग करके setuid/setgid को सही AID के साथ चलाना है. बड़े अक्षरों का इस्तेमाल करके, इन ज़रूरी शर्तों को छोड़ सकते हैं और कर्नेल से यह काम पूरा कर सकते हैं. जब कंट्रोल यह होता है main() को दी गई हैं. आपकी प्रोसेस में पहले से ही ऐसी क्षमताएं हैं गैर-रूट उपयोगकर्ता और ग्रुप का इस्तेमाल कर सके, ताकि आपकी सेवा गैर-रूट उपयोगकर्ता और ग्रुप का इस्तेमाल कर सके. करने का तरीका बताया गया है).

कैप सेक्शन में इस सिंटैक्स का इस्तेमाल किया जाता है:

सेक्शन वैल्यू परिभाषा
[path] कॉन्फ़िगर करने के लिए फ़ाइल सिस्टम का पाथ. / पर खत्म होने वाले पाथ को डाइर माना जाता है, नहीं तो यह एक फ़ाइल है.

एक जैसे कई सेक्शन बताना गलत है [path] अलग-अलग फ़ाइलों में. Python वर्शन <= 3.2 में, एक ही फ़ाइल में ऐसे सेक्शन हो सकते हैं जो पिछले सेक्शन को ओवरराइड करते हों; Python में 3.2, यह सख्त मोड पर सेट है.
mode ऑक्टल फ़ाइल मोड कम से कम तीन अंकों वाला मान्य ऑक्टल फ़ाइल मोड. अगर 3 बताया गया है, तो के आगे 0 लगा होता है, तो बाकी मोड का इस्तेमाल ऐसे ही किया जाता है.
user एआईडी_<उपयोगकर्ता> मान्य AID या दोस्ताना नाम के लिए, सी define (जैसे, 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 <number> मान्य 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)
  • ओडीएम विभाजन
    • AID_ODM_RESERVED_START(6500) - AID_ODM_RESERVED_END(6999)
  • प्रॉडक्ट विभाजन
    • AID_PRODUCT_RESERVED_START(7000) - AID_PRODUCT_RESERVED_END(7499)
  • System_ext विभाजन
    • AID_सिस्टम_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 AID का इस्तेमाल करें

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 नामों का इस्तेमाल करता है. उदाहरण के लिए:

  • some/init.rc में, chown निर्देश में:
    chown vendor_foo /vendor/some/vendor_foo/file
    
  • some/init.rc के service में:
    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 AIDs, Android 8.x के लिए getpwnam और उससे मिलते-जुलते फ़ंक्शन वाला oem_####, जैसे उन स्थानों में अच्छी तरह से काम करता है, जहां getpwnam के साथ लुकअप को हैंडल किया जाता है (जैसे init स्क्रिप्ट). Android 9 में, ये काम किए जा सकते हैं इसके लिए बायोनिक में getpwnam और getgrnam दोस्तों का इस्तेमाल करें Android आईडी (AIDs) से दोस्ताना नामों में और इसके उलटा नाम में बदलना.

फ़ाइल सिस्टम की क्षमताओं का इस्तेमाल करें

फ़ाइल सिस्टम की क्षमताओं को चालू करने के लिए, 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 कॉल के बिना. इसके अलावा, vendor_foo सेवा की SELinux नीति अब उपलब्ध नहीं है 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 को दो अलग-अलग टेबल में डायरेक्ट्री और फ़ाइलें मैनेज करने की अनुमति दी है. system/core/libcutils/fs_config.c में संरचना की परिभाषाएं नहीं रनटाइम के दौरान सिर्फ़ डायरेक्ट्री और फ़ाइलों को पढ़ने की अनुमति दी जाती है, लेकिन होस्ट इनका इस्तेमाल कर सकता है बिल्ड टाइम के दौरान वही फ़ाइलें, जिनका इस्तेमाल फ़ाइल सिस्टम की इमेज बनाने के लिए किया जाता है ${OUT}/system/etc/fs_config_dirs और ${OUT}/system/etc/fs_config_files.

हालांकि, फ़ाइल सिस्टम को बढ़ाने के ओवरराइड वाले तरीके का इस्तेमाल अब मॉड्यूलर कॉन्फ़िगरेशन सिस्टम लॉन्च किया है, जो Android 8.0 में प्रस्तुत किया गया था, फिर भी आप Android 8.0 तरीका. नीचे दिए सेक्शन में, डेटा जनरेट करने और उसे शामिल करने का तरीका बताया गया है फ़ाइलों को ओवरराइड करें और फ़ाइल सिस्टम को कॉन्फ़िगर करें.

पुरानी फ़ाइलें जनरेट करें

अलाइन की गई बाइनरी फ़ाइलें जनरेट की जा सकती हैं /system/etc/fs_config_dirs और /system/etc/fs_config_files build/tools/fs_config में fs_config_generate टूल. कॉन्टेंट बनाने यह टूल, 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 और उसके बाद वाले वर्शन में कॉन्फ़िगर करने के लिए:

  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 को बदलने के लिए एक पैच दिखाता है डीमन करके, वेक लॉक की सुविधा जोड़ें device/vendor/device डायरेक्ट्री. बनाए रखें इन बातों का ध्यान रखें:

  • हर स्ट्रक्चर में मोड, uid, gid, क्षमताएं, और नाम शामिल हैं. system/core/include/private/android_filesystem_config.h है मेनिफ़ेस्ट #परिभाषित करने के लिए अपने आप शामिल किया गया (AID_ROOT, AID_SHELL, CAP_BLOCK_SUSPEND).
  • android_device_files[] सेक्शन में, ये कार्रवाइयां शामिल हैं तय न होने पर system/etc/fs_config_dirs का ऐक्सेस रोकें, यह डायरेक्ट्री में कॉन्टेंट की कमी को रोकने के लिए, डीएसी से जुड़ी अतिरिक्त सुरक्षा के तौर पर काम करती है ओवरराइड करता है. हालांकि, यह कमज़ोर सुरक्षा है; अगर किसी के पास पूरा कंट्रोल है, /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.
  • इन पर SELinux मैंडेट ऐक्सेस कंट्रोल (MAC) लागू करने का अधिकार सुरक्षित रखता है टारगेट सिस्टम पर कॉन्फ़िगरेशन फ़ाइलें होती हैं, जिन्हें लागू करने की प्रक्रिया में कस्टम शामिल है fs_config() का इस्तेमाल करने वाले एक्ज़ीक्यूटेबल के लिए ऐक्सेस पक्का करना ज़रूरी है.