एंड्रॉइड 10 और 11 में, पहले चरण के रैमडिस्क में पहले चरण की init बाइनरी (जो fstab प्रविष्टियों द्वारा निर्दिष्ट प्रारंभिक माउंटिंग करता है) और विक्रेता fstab फ़ाइलें शामिल हैं। (एंड्रॉइड 9 और उससे पहले के संस्करण की तरह, system.img
में $TARGET_ROOT_OUT
की सामग्री शामिल है।)
बूट-रैमडिस्क (गैर-ए/बी) वाले उपकरणों के लिए, पहला चरण init
/init
पर स्थित एक स्थिर निष्पादन योग्य है। ये डिवाइसsystem.img
/system
के रूप में माउंट करते हैं, फिर माउंट को/system
पर/
पर ले जाने के लिए एक स्विच रूट ऑपरेशन करते हैं। माउंटिंग पूरी होने के बाद रैमडिस्क की सामग्री को मुक्त कर दिया जाता है।उन उपकरणों के लिए जो रिकवरी को रैमडिस्क के रूप में उपयोग करते हैं, पहला चरण init रिकवरी रैमडिस्क के भीतर
/init
पर स्थित होता है। ये डिवाइस पर्यावरण से पुनर्प्राप्ति घटकों को हटाने के लिए पहले रूट को/first_stage_ramdisk
पर स्विच करते हैं, फिर बूट-रैमडिस्क वाले डिवाइस के समान ही आगे बढ़ते हैं (अर्थात,system.img
/system
के रूप में माउंट करें, उस माउंट को/
पर ले जाने के लिए रूट को स्विच करें, और माउंटिंग के बाद निःशुल्क रैमडिस्क सामग्री)। यदिandroidboot.force_normal_boot=1
कर्नेल कमांड लाइन (या एंड्रॉइड 12 से बूटकॉन्फिग) में मौजूद है, तो डिवाइस पुनर्प्राप्ति मोड में बूट करने के बजाय सामान्य रूप से (एंड्रॉइड में) बूट होते हैं।
प्रथम चरण init समाप्त होने के बाद, यह सिस्टम पर SELinux को संकलित और लोड करने के लिए selinux_setup
तर्क के साथ /system/bin/init
निष्पादित करता है। अंत में, init /system/bin/init
second_stage
तर्क के साथ फिर से निष्पादित करता है। इस बिंदु पर, init का मुख्य चरण चलता है और init.rc
स्क्रिप्ट का उपयोग करके बूट प्रक्रिया जारी रखता है।
निम्नलिखित अनुभाग एंड्रॉइड 10 से पहले और बाद में गैर-ए/बी उपकरणों के लिए विभाजन लेआउट में अंतर का विवरण देते हैं।
विभाजन लेआउट (गैर-ए/बी डिवाइस)
निम्नलिखित अनुभाग एंड्रॉइड 10 से पहले और बाद में गैर-ए/बी उपकरणों के लिए विभाजन लेआउट में अंतर का विवरण देते हैं।
बूट.आईएमजी
रैमडिस्क (एंड्रॉइड 8.x और इससे पहले का संस्करण) | जड़ के रूप में प्रणाली (एंड्रॉइड 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
रैमडिस्क (एंड्रॉइड 8.x और इससे पहले का संस्करण) | जड़ के रूप में प्रणाली (एंड्रॉइड 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) ... |
विभाजन लेआउट (ए/बी डिवाइस)
निम्नलिखित अनुभाग एंड्रॉइड 10 से पहले और बाद में ए/बी उपकरणों के लिए विभाजन लेआउट में अंतर का विवरण देते हैं।
बूट.आईएमजी
जड़ के रूप में प्रणाली (एंड्रॉइड 9) | रैमडिस्क (एंड्रॉइड 10 और 11) |
---|---|
सामान्य बूट कर्नेल और रिकवरी-रैमडिस्क शामिल है ( 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) ... |
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)
...