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