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