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