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