रैम डिस्क पार्टीशन

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 है.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
इसमें सिर्फ़ सामान्य बूट कर्नेल होता है.

एक कर्नेल और ramdisk.img शामिल है.

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 शामिल है.

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

इसमें $TARGET_SYSTEM_OUT और $TARGET_ROOT_OUT का मर्ज किया गया कॉन्टेंट शामिल है.

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

इसमें $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)
    ...
    

पार्टीशन लेआउट (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)
    ...