বিল্ডে যোগ করা ফাইল সিস্টেম অবজেক্ট ও পরিষেবার জন্য প্রায়ই আলাদা, অনন্য আইডির প্রয়োজন হয়, যা Android ID (AID) নামে পরিচিত। বর্তমানে, ফাইল ও পরিষেবার মতো অনেক রিসোর্স অপ্রয়োজনীয়ভাবে কোর (Android-নির্ধারিত) AID ব্যবহার করে; অনেক ক্ষেত্রে আপনি এর পরিবর্তে OEM (OEM-নির্ধারিত) AID ব্যবহার করতে পারেন।
Android-এর আগের ভার্সন (Android 7.x ও তার আগের যেকোনও ভার্সন) ফাইল সিস্টেমের ক্ষমতা এবং/অথবা কাস্টম OEM AID নির্দিষ্ট করতে ডিভাইস-নির্দিষ্ট android_filesystem_config.h
ফাইল ব্যবহার করে AID
মেকানিজম এক্সটেন্ড করেছে। তবে, এই
সিস্টেমটি খুব সহজবোধ্য ছিল না কারণ এটি OEM AID-এর জন্য সুন্দর নাম ব্যবহার করার সুবিধা দেয় না,
এর জন্য আপনাকে ব্যবহারকারী ও গ্রুপ ফিল্ডের জন্য কাঁচা সংখ্যাসূচক মান নির্দিষ্ট করতে হয় এবং সংখ্যাসূচক AID-এর সাথে
সহজ নাম অ্যাসোসিয়েট করার কোনও উপায় থাকে না।
Android-এর নতুন ভার্সন (Android 8.0 ও তার পরবর্তী যেকোনও ভার্সন) ফাইল সিস্টেমের ক্ষমতা বাড়ানোর জন্য নতুন পদ্ধতি ব্যবহার করে। এই নতুন পদ্ধতিতে নিম্নলিখিত সুবিধা পাওয়া যাবে:
- কনফিগারেশন ফাইলের জন্য একাধিক সোর্স লোকেশন (এক্সটেনসিবল বিল্ড কনফিগারেশন চালু করে)।
- OEM AID ভ্যালুর বিল্ড-টাইম স্যানিটি চেকিং।
- কাস্টম OEM AID হেডার তৈরি করা যা প্রয়োজন অনুযায়ী সোর্স ফাইলে ব্যবহার করা যেতে পারে।
- আসল OEM AID ভ্যালুর সাথে ফ্রেন্ডলি নামের অ্যাসোসিয়েশন। ব্যবহারকারী ও গ্রুপের জন্য সংখ্যা নয় এমন স্ট্রিং আর্গুমেন্ট কাজ করে, অর্থাৎ "২৯০১"-এর পরিবর্তে "foo"।
অতিরিক্ত উন্নতির মধ্যে 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 ওপেন সোর্স প্রজেক্ট (AOSP) থেকে
android_ids[] অ্যারে সরিয়ে দিয়েছে। AID-ফ্রেন্ডলি সব নাম, Bionic android_ids[] অ্যারে জেনারেট করার সময়
system/core/libcutils/include/private/android_filesystem_config.h
হেডার ফাইল থেকে জেনারেট করা হয়। যেকোনও
define মিল AID_* টুলিংয়ের মাধ্যমে বেছে নেওয়া হয়
এবং * ছোট হাতের নাম হয়ে যায়।
যেমন, private/android_filesystem_config.h-এ:
#define AID_SYSTEM 1000হয়ে যায়:
- বন্ধুত্বপূর্ণ নাম: সিস্টেম
- uid: 1000
- gid: 1000
নতুন AOSP কোর AID যোগ করতে, #define-কে
android_filesystem_config.h হেডার ফাইলে যোগ করুন। বিল্ড করার সময় AID
জেনারেট করা হয় এবং ব্যবহারকারী ও গ্রুপ আর্গুমেন্ট ব্যবহার করে এমন ইন্টারফেসের জন্য
উপলভ্য করা হয়। টুলিং যাচাই করে দেখে যে নতুন AID, APP বা OEM
রেঞ্জের মধ্যে নেই; এছাড়াও, এটি সেইসব রেঞ্জে হওয়া পরিবর্তনকে সম্মান করে এবং পরিবর্তন হলে বা OEM-এর রিজার্ভ করা নতুন রেঞ্জ হলে অটোমেটিক
আবার কনফিগার করা উচিত।
AID কনফিগার করা
নতুন AIDs মেকানিজম চালু করতে, BoardConfig.mk ফাইলে
TARGET_FS_CONFIG_GEN সেট করুন। এই ভেরিয়েবলে কনফিগারেশন
ফাইলের একটি তালিকা থাকে, যা আপনাকে প্রয়োজন মতো ফাইল যোগ করতে দেয়।
কনভেনশন অনুযায়ী, কনফিগারেশন ফাইল config.fs নামটি ব্যবহার করে, তবে
আপনি যেকোনও নাম ব্যবহার করতে পারেন। config.fs ফাইলগুলি
Python
ConfigParser ini ফর্ম্যাটে আছে এবং এতে একটি ক্যাপস বিভাগ (ফাইল সিস্টেমের ক্ষমতা কনফিগার করার জন্য) এবং একটি AIDs বিভাগ (OEM AIDs কনফিগার করার জন্য) অন্তর্ভুক্ত রয়েছে।
ক্যাপ সেকশন কনফিগার করা
ক্যাপস বিভাগে বিল্ডের মধ্যে ফাইল সিস্টেম অবজেক্টে ফাইল সিস্টেম ক্যাপাবিলিটি সেট করা যায় (ফাইল সিস্টেমকেও এই ফাংশনালিটি কাজ করতে হবে)।
Android-এ রুট হিসেবে কোনও স্থিতিশীল পরিষেবা চালালে
Compatibility Test Suite (CTS)
ফেল করে, তাই কোনও
প্রসেস বা পরিষেবা চালানোর সময় কোনও ক্ষমতা বজায় রাখার জন্য আগে ক্ষমতা সেট-আপ করতে হত, তারপর চালানোর জন্য
setuid/setgid-কে উপযুক্ত AID-তে ব্যবহার করতে হত। ক্যাপ থাকলে, আপনাকে
এইসব প্রয়োজনীয়তা পূরণ করতে হবে না, কার্নেল আপনার হয়ে এটি করে দেবে। main()-এর হাতে কন্ট্রোল
দেওয়া হলে, আপনার প্রসেসের কাছে আগে থেকেই প্রয়োজনীয় ক্ষমতা থাকে, যাতে আপনার পরিষেবা ননরুট ব্যবহারকারী ও গ্রুপ ব্যবহার করতে পারে (প্রিভিলেজড পরিষেবা শুরু করার জন্য এটিই
পছন্দসই উপায়)।
ক্যাপস বিভাগে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:
| বিভাগ | মান | সংজ্ঞা |
|---|---|---|
[path] |
কনফিগার করার জন্য ফাইল সিস্টেম পাথ। / দিয়ে শেষ হওয়া পাথকে dir হিসেবে বিবেচনা করা হয়,
অন্যথায় এটি ফাইল।
বিভিন্ন ফাইলে একই [path] সহ একাধিক বিভাগ নির্দিষ্ট করা হলে তা একটি সমস্যা। Python-এর <= 3.2 ভার্সনে, একই ফাইলে এমন বিভাগ থাকতে পারে যা আগের বিভাগকে ওভাররাইড করে;
Python 3.2-এ, এটি কঠোর মোডে সেট করা আছে। |
|
mode |
অক্টাল ফাইল মোড | অন্তত ৩ সংখ্যার একটি সঠিক অক্টাল ফাইল মোড। ৩ নির্দিষ্ট করা থাকলে, এটি ০ দিয়ে প্রিফিক্স করা হয়, অন্যথায় মোডটি যেমন আছে তেমনই ব্যবহার করা হয়। |
user |
AID_<user> | সঠিক AID-এর জন্য C define অথবা বন্ধুত্বপূর্ণ নাম
(যেমন, AID_RADIO ও radio দুটিই গ্রহণযোগ্য)। কাস্টম AID
সংজ্ঞায়িত করতে, AID বিভাগ
কনফিগার করা দেখুন। |
group |
AID_<group> | ব্যবহারকারীর মতোই। |
caps |
ক্যাপ* | bionic/libc/kernel/uapi/linux/capability.h-এ
ঘোষিত নাম,
যেখানে শুরুতে CAP_ নেই। ছোট ও বড় হাতের অক্ষর মিশিয়ে লেখা যাবে। ক্যাপগুলি এগুলিও হতে পারে
র:
|
ব্যবহারের উদাহরণ দেখতে, ফাইল সিস্টেমের ক্ষমতা ব্যবহার করা দেখুন।
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-এ উল্লেখ করা আছে।
বিকল্পগুলি হল:
|
ব্যবহারের উদাহরণ দেখতে, 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 কোডে, আপনার সংশ্লিষ্ট
Makefile-এ oemaids_headers যোগ করুন এবং #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 ভ্যালুর সাথে একটি সহজ নাম যুক্ত করার সুবিধা রয়েছে। আপনি ব্যবহারকারী এবং গ্রুপের জন্য নন-নিউমেরিক স্ট্রিং আর্গুমেন্ট ব্যবহার করতে পারেন, অর্থাৎ, "2901"-এর পরিবর্তে "vendor_foo"।
AID থেকে সহজ নামে কনভার্ট করা
OEM AID-এর জন্য, Android 8.x-এ
getpwnam ও একই ধরনের ফাংশন সহ
oem_#### ব্যবহার করতে হয়, সেইসাথে
getpwnam-এর মাধ্যমে লুক-আপ ম্যানেজ করা হয় এমন জায়গাতেও (যেমন
init স্ক্রিপ্ট)। Android 9-এ, আপনি
Android ID (AID) থেকে ফ্রেন্ডলি নাম এবং ফ্রেন্ডলি নাম থেকে Android ID (AID)-এ পরিবর্তন করার জন্য
Bionic-এ getpwnam এবং getgrnam ফ্রেন্ড ব্যবহার করতে পারবেন।
ফাইল সিস্টেমের ক্ষমতা ব্যবহার করা
ফাইল সিস্টেম সংক্রান্ত ক্ষমতা চালু করতে, 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-তে চালু করা মডুলার কনফিগারেশন সিস্টেম দ্বারা প্রতিস্থাপিত করা হলেও, আপনি চাইলে এখনও পুরনো পদ্ধতি ব্যবহার করতে পারবেন। নিম্নলিখিত বিভাগগুলি বিস্তারিতভাবে ব্যাখ্যা করে যে কীভাবে ওভাররাইড ফাইল তৈরি এবং অন্তর্ভুক্ত করতে হয় এবং ফাইল সিস্টেম কনফিগার করতে হয়।
ওভাররাইড ফাইল জেনারেট করা
আপনি build/tools/fs_config-এ fs_config_generate টুল ব্যবহার করে
/system/etc/fs_config_dirs এবং
/system/etc/fs_config_files অ্যালাইন করা বাইনারি ফাইল
জেনারেট করতে পারবেন। টুলটি
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-এ সেগুলি ইনস্টল করতে পারে। বিল্ড সিস্টেম
$(TARGET_DEVICE_DIR)-এ
কাস্টম android_filesystem_config.h সার্চ করে, যেখানে BoardConfig.mk আছে।
এই ফাইল অন্য কোথাও থাকলে, সেই লোকেশনকে পয়েন্ট করার জন্য board config variable
TARGET_ANDROID_FILESYSTEM_CONFIG_H সেট করুন।
ফাইল সিস্টেম কনফিগার করা
Android 6.0 এবং তার পরবর্তী যেকোনও ভার্সনে ফাইল সিস্টেম কনফিগার করতে:
$(TARGET_DEVICE_DIR)/android_filesystem_config.hফাইল তৈরি করুন।- বোর্ড কনফিগারেশন ফাইলে (যেমন,
$(TARGET_DEVICE_DIR)/device.mk)fs_config_dirsএবং/অথবাfs_config_files-কেPRODUCT_PACKAGES-এ যোগ করুন।
ওভাররাইড করার উদাহরণ
এই উদাহরণে device/vendor/device ডিরেক্টরিতে ওয়েক লক সাপোর্ট যোগ করার জন্য
system/bin/glgps ডেমন ওভাররাইড করার প্যাচ দেখানো হয়েছে। নিম্নলিখিত বিষয়গুলি
মনে রাখবেন:
- প্রতিটি স্ট্রাকচার এন্ট্রি হল মোড, uid, gid, ক্ষমতা ও নাম।
ম্যানিফেস্ট #defines
(
AID_ROOT,AID_SHELL,CAP_BLOCK_SUSPEND) প্রদান করার জন্যsystem/core/include/private/android_filesystem_config.hঅটোমেটিক অন্তর্ভুক্ত করা হয়। 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
- কিছু অন্তর্ভুক্ত, স্ট্রাকচার ও ইনলাইন সংজ্ঞা সরিয়ে দেয়।
system/core/include/private/android_filesystem_config.hথেকে সরাসরি চালানোর পরিবর্তেlibcutils-এর রেফারেন্স প্রয়োজন। ডিভাইস প্রস্তুতকারকের ব্যক্তিগত এক্সিকিউটেবল যা ফাইল বা ডিরেক্টরি স্ট্রাকচারের জন্য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()ব্যবহার করে কাস্টম টার্গেট এক্সিকিউটেবল সহ ইমপ্লিমেন্টেশনকে অবশ্যই অ্যাক্সেস নিশ্চিত করতে হবে।