ডিরেক্টরি, নিয়ম ও sepolicy

এই পৃষ্ঠায় Android 8.0 ও তার পরবর্তী ভার্সনে চলা ডিভাইসের ডিরেক্টরি লেআউট, VNDK নিয়ম ও সংশ্লিষ্ট sepolicy সম্পর্কে বর্ণনা করা হয়েছে।

ডিরেক্টরি লেআউট

ডিজেনারেটেড ডিরেক্টরি লেআউট-এ নিম্নলিখিত ডিরেক্টরি থাকে:

  • /system/lib[64]-এ সব ফ্রেমওয়ার্ক শেয়ার করা লাইব্রেরি থাকে, এর মধ্যে LL-NDK, VNDK এবং শুধু ফ্রেমওয়ার্ক লাইব্রেরি (এর মধ্যে LL-NDK-প্রাইভেট এবং VNDK-SP-তে থাকা লাইব্রেরির মতো একই নামের কিছু লাইব্রেরি) অন্তর্ভুক্ত।
  • /system/lib[64]/vndk-sp একই প্রসেস HAL-এর জন্য VNDK-SP লাইব্রেরি থাকে।
  • /vendor/lib[64]-এ ভেন্ডরের দ্বারা এক্সটেন্ড করা VNDK লাইব্রেরি (DXUA বা DXUX VNDK লাইব্রেরি), একই-প্রসেস HAL ইমপ্লিমেন্টেশন এবং অন্যান্য ভেন্ডর শেয়ার করা লাইব্রেরি থাকে।
  • /vendor/lib[64]/vndk-sp-এ ভেন্ডরদের দ্বারা এক্সটেন্ড করা VNDK-SP লাইব্রেরি থাকতে পারে।

ভেন্ডর মডিউল /system/lib[64] থেকে VNDK লাইব্রেরি লোড করে।

VNDK সংক্রান্ত নিয়ম

এই বিভাগে VNDK নিয়মের একটি বিস্তারিত তালিকা দেওয়া হয়েছে:

  • ফ্রেমওয়ার্ক প্রসেসকে অবশ্যই ভেন্ডর পার্টিশন থেকে নন-SP-HAL শেয়ার করা লাইব্রেরি লোড করলে চলবে না (Android 8.1 থেকে কঠোরভাবে এনফোর্স করা হয়েছে)।
  • ভেন্ডর প্রসেসকে সিস্টেম পার্টিশন থেকে LL-NDK নয়, VNDK-SP নয় এবং VNDK নয় এমন লাইব্রেরি লোড করা যাবে না। (Android O-তে কঠোরভাবে প্রয়োগ করা হয় না, তবে ভবিষ্যতের রিলিজে করা হবে)।
  • ইনস্টল করা VNDK লাইব্রেরি অবশ্যই Google-এর সংজ্ঞায়িত উপযুক্ত VNDK লাইব্রেরির সাবসেট হতে হবে।
  • SP-HAL এবং SP-HAL-Dep-এর বাইরের ডিপেন্ডেন্সি LL-NDK বা Google-এর দ্বারা সংজ্ঞায়িত VNDK-SP লাইব্রেরিতে সীমাবদ্ধ থাকতে হবে।
    • SP-HAL শেয়ার করা লাইব্রেরির ডিপেন্ডেন্সি LL-NDK লাইব্রেরি, Google-এর দ্বারা নির্ধারিত VNDK-SP লাইব্রেরি, অন্যান্য SP-HAL লাইব্রেরি এবং/অথবা অন্যান্য ভেন্ডর শেয়ার করা লাইব্রেরির মধ্যে সীমাবদ্ধ থাকতে হবে যেগুলি SP-HAL-Dep লাইব্রেরি হিসেবে লেবেল করা যেতে পারে।
    • কোনও ভেন্ডর শেয়ার করা লাইব্রেরিকে SP-HAL-Dep লাইব্রেরি হিসেবে লেবেল করা যাবে, যদি সেটি AOSP লাইব্রেরি না হয় এবং এর ডিপেন্ডেন্সি LL-NDK লাইব্রেরি, Google-এর সংজ্ঞায়িত VNDK-SP লাইব্রেরি, SP-HAL লাইব্রেরি এবং/অথবা অন্যান্য SP-HAL-Dep লাইব্রেরির মধ্যে সীমাবদ্ধ থাকে।
  • VNDK-SP অবশ্যই স্বয়ংসম্পূর্ণ হতে হবে। Android 8.0-এ libRS_internal.so-এর জন্য বিশেষ ব্যবস্থা করা হয়েছে, তবে ভবিষ্যতে রিলিজের সময় এটি আবার পর্যালোচনা করা হবে।
  • HIDL নয় এমন ইন্টারফেসের মাধ্যমে কোনও ফ্রেমওয়ার্ক-ভেন্ডর যোগাযোগ নেই, যার মধ্যে (তবে এর মধ্যেই সীমাবদ্ধ নয়) বাইন্ডার, সকেট, শেয়ার করা মেমরি, ফাইল ইত্যাদি অন্তর্ভুক্ত।
  • সিস্টেম পার্টিশনের সাইজ অবশ্যই এত বড় হতে হবে যাতে এতে উপযুক্ত সব VNDK লাইব্রেরির দুটি কপি এবং অনুপযুক্ত ফ্রেমওয়ার্ক শেয়ার করা লাইব্রেরির একটি কপি রাখা যায়।

sepolicy

এই বিভাগে বর্ণিত ফ্রেমওয়ার্ক প্রসেসগুলি sepolicies-এর coredomain-এর সাথে এবং ভেন্ডর প্রসেসগুলি non-coredomain-এর সাথে সম্পর্কিত। যেমন, /dev/binder শুধুমাত্র coredomain-এ অ্যাক্সেস করা যাবে এবং /dev/vndbinder শুধুমাত্র coredomain নয় এমন জায়গায় অ্যাক্সেস করা যাবে।

একই ধরনের নীতি সিস্টেম ও ভেন্ডর পার্টিশনে শেয়ার করা লাইব্রেরির অ্যাক্সেস সীমিত করে। নিচের সারণীতে বিভিন্ন বিভাগের শেয়ার করা লাইব্রেরি অ্যাক্সেস করার অধিকার দেখানো হয়েছে:

বিভাগ পার্টিশন
coredomain থেকে অ্যাক্সেস করা যায়

non-coredomain থেকে অ্যাক্সেস করা যায়
LL-NDK সিস্টেম Y Y
LL-NDK-Private সিস্টেম Y Y
VNDK-SP/VNDK-SP-Private সিস্টেম Y Y
VNDK-SP-Ext ভেন্ডর Y Y
ভেন্ডর নেটিভ ডেভেলপমেন্ট কিট (VNDK) সিস্টেম Y Y
VNDK-Ext ভেন্ডর না Y
FWK-ONLY সিস্টেম Y না
FWK-ONLY-RS সিস্টেম Y না
SP-HAL ভেন্ডর Y Y
SP-HAL-Dep ভেন্ডর Y Y
VND-ONLY ভেন্ডর না Y

LL-NDK-Private এবং VNDK-SP-Private অবশ্যই দুটি ডোমেন থেকেই অ্যাক্সেস করা যাবে কারণ নন-coredomain পরোক্ষভাবে সেগুলি অ্যাক্সেস করবে। একইভাবে, SP-HAL-Dep অবশ্যই coredomain থেকে অ্যাক্সেসযোগ্য হতে হবে কারণ SP-HAL এর উপর নির্ভর করে।

same_process_hal_file label

ভেন্ডর পার্টিশনে নিম্নলিখিত লাইব্রেরি আছে। coredomain ও coredomain নয়, উভয় জায়গা থেকেই এইসব লাইব্রেরি অ্যাক্সেস করা যায় এমন ব্যবস্থা করুন।

  • /vendor/lib[64]/vndk-sp-এ VNDK-SP-Ext
  • /vendor/lib[64] বা /vendor/lib[64]/hw-এ SP-HAL
  • /vendor/lib[64] বা /vendor/lib[64]/hw-এ SP-HAL-Dep

এইসব ফাইলকে স্পষ্টভাবে same_process_hal_file হিসেবে লেবেল করুন, কারণ vendor পার্টিশনে থাকা যেকোনও কিছু ডিফল্ট হিসেবে coredomain অ্যাক্সেস করতে পারে না। ভেন্ডর-নির্দিষ্ট file_contexts ফাইলে নিম্নলিখিত লাইনের মতো লাইন যোগ করুন।

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0