অ্যান্ড্রয়েড ১০ এবং ১১-তে, প্রথম পর্যায়ের র্যামডিস্কে প্রথম পর্যায়ের ইনিট বাইনারি (যা fstab এন্ট্রি দ্বারা নির্দিষ্ট আর্লি মাউন্টিং সম্পাদন করে) এবং ভেন্ডর fstab ফাইলগুলো থাকে। (অ্যান্ড্রয়েড ৯ এবং তার নিচের সংস্করণগুলোর মতো, system.img $TARGET_ROOT_OUT এর বিষয়বস্তু থাকে।)
যেসব ডিভাইসে বুট-র্যামডিস্ক থাকে (নন-এ/বি), সেগুলোর ক্ষেত্রে প্রথম ধাপের init হলো
/initএ অবস্থিত একটি স্ট্যাটিক এক্সিকিউটেবল। এই ডিভাইসগুলোsystem.img/systemহিসেবে মাউন্ট করে, তারপর/systemএ থাকা মাউন্টটিকে //সরানোর জন্য একটি সুইচ রুট অপারেশন সম্পাদন করে। মাউন্টিং সম্পন্ন হওয়ার পর র্যামডিস্কের বিষয়বস্তু মুক্ত করে দেওয়া হয়।যেসব ডিভাইস র্যামডিস্ক হিসেবে রিকভারি ব্যবহার করে, সেগুলোর ক্ষেত্রে প্রথম ধাপের ইনিট (init) রিকভারি র্যামডিস্কের মধ্যে
/initএ অবস্থিত থাকে। এই ডিভাইসগুলো প্রথমে পরিবেশ থেকে রিকভারির উপাদানগুলো অপসারণ করার জন্য রুটকে/first_stage_ramdiskএ সুইচ করে, তারপর বুট-র্যামডিস্কযুক্ত ডিভাইসগুলোর মতোই কাজ করে (অর্থাৎ,system.img/systemহিসেবে মাউন্ট করে, সেই মাউন্টটিকে/সরানোর জন্য রুটকে সুইচ করে, এবং মাউন্ট করার পর র্যামডিস্কের কন্টেন্টগুলো মুক্ত করে)। যদি কার্নেল কমান্ড লাইনে (অথবা অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণগুলোর bootconfig-এ)androidboot.force_normal_boot=1উপস্থিত থাকে, তাহলে ডিভাইসগুলো রিকভারি মোডে বুট না করে স্বাভাবিকভাবে (অ্যান্ড্রয়েডে) বুট করে।
প্রথম ধাপের init শেষ হওয়ার পর, এটি সিস্টেমে SELinux কম্পাইল ও লোড করার জন্য selinux_setup আর্গুমেন্ট সহ /system/bin/init এক্সিকিউট করে। সবশেষে, init আবার second_stage আর্গুমেন্ট সহ /system/bin/init এক্সিকিউট করে। এই পর্যায়ে, init-এর মূল পর্বটি চলে এবং init.rc স্ক্রিপ্টগুলো ব্যবহার করে বুট প্রক্রিয়াটি চালিয়ে যায়।
নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েড ১০-এর আগে ও পরের নন-এ/বি ডিভাইসগুলির পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
পার্টিশন লেআউট (নন-এ/বি ডিভাইস)
নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েড ১০-এর আগে ও পরের নন-এ/বি ডিভাইসগুলির পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
boot.img
| রামডিস্ক (অ্যান্ড্রয়েড ৮.x এবং তার নিচের সংস্করণ) | সিস্টেম মূল হিসাবে (অ্যান্ড্রয়েড ৯) | রামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|---|
এতে একটি কার্নেল এবং একটি
ramdisk.img
-/
- init.rc
- init
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
| এতে শুধুমাত্র একটি সাধারণ বুট কার্নেল রয়েছে। | এতে একটি কার্নেল এবং
ramdisk.img
-/
- init
- vendor fstab files
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
পুনরুদ্ধার.ছবি
এতে একটি রিকভারি কার্নেল এবং একটি রিকভারি ramdisk.img রয়েছে।
সিস্টেম.ইমেজ
| রামডিস্ক (অ্যান্ড্রয়েড ৮.x এবং তার নিচের সংস্করণ) | সিস্টেম মূল হিসাবে (অ্যান্ড্রয়েড ৯) | রামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|---|
এতে একটি
system.img
-/
- bin/
- etc
- vendor -> /vendor
- ...
|
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
পার্টিশন লেআউট (এ/বি ডিভাইস)
নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েড ১০-এর আগে ও পরের A/B ডিভাইসগুলির পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
boot.img
| সিস্টেম মূল হিসাবে (অ্যান্ড্রয়েড ৯) | রামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|
এতে সাধারণ বুট কার্নেল এবং রিকভারি-র্যামডিস্ক রয়েছে ( BOARD_USES_RECOVERY_AS_BOOT := true )।রিকভারি-র্যামডিস্ক শুধুমাত্র রিকভারি মোডে বুট করার জন্য ব্যবহৃত হয়। | এতে সাধারণ বুট কার্নেল এবং রিকভারি-র্যামডিস্ক রয়েছে ( BOARD_USES_RECOVERY_AS_BOOT := true )।রিকভারি-র্যামডিস্ক রিকভারি এবং অ্যান্ড্রয়েড উভয় মোডে বুট করতে ব্যবহৃত হয়।
ramdisk.img
-/
- init -> /system/bin/init
- first_stage_ramdisk
- vendor fstab files
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
সিস্টেম.ইমেজ
$TARGET_SYSTEM_OUT এবং $TARGET_ROOT_OUT এর একত্রিত বিষয়বস্তু ধারণ করে।
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...