অ্যান্ড্রয়েড ১০ এবং ১১-এ, প্রথম পর্যায়ের র্যামডিস্কে প্রথম পর্যায়ের init বাইনারি (যা fstab এন্ট্রি দ্বারা নির্দিষ্ট করা প্রাথমিক মাউন্টিং সম্পাদন করে) এবং বিক্রেতা fstab ফাইল থাকে। (অ্যান্ড্রয়েড ৯ এবং তার নিচের সংস্করণের মতো, system.img $TARGET_ROOT_OUT এর বিষয়বস্তু থাকে।)
বুট-র্যামডিস্ক (অ-A/B) সহ ডিভাইসগুলির জন্য, প্রথম পর্যায়ে init হল
/initএ অবস্থিত একটি স্ট্যাটিক এক্সিকিউটেবল। এই ডিভাইসগুলিsystem.imgকে/systemহিসাবে মাউন্ট করে, তারপর/systemএ মাউন্টটিকে/এ সরানোর জন্য একটি সুইচ রুট অপারেশন করে। মাউন্টিং সম্পন্ন হওয়ার পরে ramdisk এর বিষয়বস্তু মুক্ত করা হয়।যেসব ডিভাইস রিকভারি ramdisk হিসেবে ব্যবহার করে, তাদের ক্ষেত্রে প্রথম ধাপ init রিকভারি ramdisk-এর মধ্যে
/initএ অবস্থিত। এই ডিভাইসগুলি প্রথমে root কে/first_stage_ramdiskএ স্যুইচ করে পরিবেশ থেকে রিকভারি কম্পোনেন্টগুলি সরিয়ে দেয়, তারপর boot-ramdisk (অর্থাৎ,system.imgকে/systemহিসেবে মাউন্ট করে, সেই মাউন্টটি/এ সরাতে root স্যুইচ করে এবং মাউন্ট করার পরে ramdisk কন্টেন্ট মুক্ত করে) সহ ডিভাইসগুলির মতোই কাজ করে। যদিandroidboot.force_normal_boot=1কার্নেল কমান্ড লাইনে (অথবা Android 12 এবং উচ্চতর সংস্করণ থেকে bootconfig) উপস্থিত থাকে, তাহলে ডিভাইসগুলি রিকভারি মোডে বুট করার পরিবর্তে স্বাভাবিকভাবে (Android-এ) বুট করে।
প্রথম ধাপ init শেষ হওয়ার পর, এটি selinux_setup আর্গুমেন্ট ব্যবহার করে /system/bin/init এক্সিকিউট করে সিস্টেমে SELinux কম্পাইল এবং লোড করে। অবশেষে, init second_stage আর্গুমেন্ট ব্যবহার করে আবার /system/bin/init এক্সিকিউট করে। এই সময়ে, init এর প্রধান ফেজটি init.rc স্ক্রিপ্ট ব্যবহার করে বুট প্রক্রিয়াটি চালায় এবং চালিয়ে যায়।
নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েড ১০ এর আগে এবং পরে নন-এ/বি ডিভাইসগুলির পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
পার্টিশন লেআউট (অ-A/B ডিভাইস)
নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েড ১০ এর আগে এবং পরে নন-এ/বি ডিভাইসগুলির পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
বুট.আইএমজি
| র্যামডিস্ক (অ্যান্ড্রয়েড ৮.এক্স এবং তার নিচের সংস্করণ) | রুট হিসেবে সিস্টেম (অ্যান্ড্রয়েড ৯) | র্যামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|---|
একটি কার্নেল এবং একটি
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 রয়েছে
সিস্টেম.আইএমজি
| র্যামডিস্ক (অ্যান্ড্রয়েড ৮.এক্স এবং তার নিচের সংস্করণ) | রুট হিসেবে সিস্টেম (অ্যান্ড্রয়েড ৯) | র্যামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|---|
একটি
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 ডিভাইস)
নিম্নলিখিত বিভাগগুলিতে Android 10 এর আগে এবং পরে A/B ডিভাইসের পার্টিশন লেআউটের পার্থক্যগুলি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
বুট.আইএমজি
| রুট হিসেবে সিস্টেম (অ্যান্ড্রয়েড ৯) | র্যামডিস্ক (অ্যান্ড্রয়েড ১০ এবং ১১) |
|---|---|
সাধারণ বুট কার্নেল এবং recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ) ধারণ করে।Recovery-ramdisk শুধুমাত্র পুনরুদ্ধারে বুট করার জন্য ব্যবহৃত হয়। | সাধারণ বুট কার্নেল এবং recovery-ramdisk ( 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)
...