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
के तौर पर माउंट करें, उस माउंट को/
पर ले जाने के लिए रूट को स्विच करें, और माउंट करने के बाद रैमडिस्क का कॉन्टेंट खाली करें. अगरandroidboot.force_normal_boot=1
, kernel कमांड लाइन (या Android 12 के बाद के वर्शन के bootconfig) में मौजूद है, तो डिवाइस रिकवरी मोड में बूट होने के बजाय, सामान्य रूप से (Android में) बूट होते हैं.
पहले चरण का init पूरा होने के बाद, यह सिस्टम पर SELinux को कॉम्पाइल और लोड करने के लिए, /system/bin/init
को selinux_setup
आर्ग्युमेंट के साथ चलाता है. आखिर में,
init second_stage
आर्ग्युमेंट के साथ /system/bin/init
को फिर से चलाता है. इस
पॉइंट पर, init का मुख्य चरण चलता है और init.rc
स्क्रिप्ट का इस्तेमाल करके, बूट करने की प्रोसेस को जारी रखता है.
यहां दिए गए सेक्शन में, Android 10 से पहले और बाद में, A/B डिवाइसों के लिए, पार्टीशन लेआउट में हुए बदलावों के बारे में बताया गया है.
विभाजन लेआउट (गैर-A/B डिवाइस)
नीचे दिए गए सेक्शन में, Android 10 से पहले और बाद के वर्शन वाले डिवाइसों के लिए, पार्टिशन लेआउट के बारे में जानकारी दी गई है.
boot.img
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) ... |
search.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 डिवाइसों के लिए, सेगमेंट के लेआउट में हुए बदलावों के बारे में बताया गया है.
बूट करें
सिस्टम को रूट के तौर पर इस्तेमाल करना (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)
...