Ramdisk পার্টিশন

Android 10 ও 11-এ, প্রথম ধাপের র‍্যামডিস্কে প্রথম ধাপের ইনিট বাইনারি (যা fstab এন্ট্রি দ্বারা নির্দিষ্ট করা প্রাথমিক মাউন্টিং পারফর্ম করে) এবং ভেন্ডর fstab ফাইল থাকে। (Android 9 এবং এর আগের যেকোনও ভার্সনে, system.img-এ $TARGET_ROOT_OUT-এর কন্টেন্ট থাকে।)

  • বুট-র‍্যামডিস্ক (নন-A/B) সহ ডিভাইসের জন্য, ফার্স্ট স্টেজ ইনিট হল একটি স্ট্যাটিক এক্সিকিউটেবল যা /init-এ থাকে। এইসব ডিভাইস system.img-কে /system হিসেবে মাউন্ট করে, তারপর /system-এ মাউন্টকে /-এ সরানোর জন্য একটি সুইচ রুট অপারেশন করে। মাউন্ট করা সম্পূর্ণ হওয়ার পরে র‍্যামডিস্কের কন্টেন্ট খালি করা হয়।

  • যেসব ডিভাইস রিকভারি হিসেবে র‍্যামডিস্ক ব্যবহার করে, সেগুলির ফার্স্ট স্টেজ ইনিট রিকভারি র‍্যামডিস্কের মধ্যে /init লোকেশনে থাকে। এইসব ডিভাইস প্রথমে রুট পরিবর্তন করে /first_stage_ramdisk যাতে এনভায়রনমেন্ট থেকে রিকভারি কম্পোনেন্ট সরানো যায়, তারপর বুট-রামডিস্ক (অর্থাৎ, মাউন্ট system.img হিসেবে /system, রুট পরিবর্তন করে সেই মাউন্টকে /-এ সরানো এবং মাউন্ট করার পরে রামডিস্ক কন্টেন্ট ফ্রি করা) সহ ডিভাইসের মতো একই প্রসেস চালিয়ে যায়। কার্নেল কমান্ড লাইনে (বা Android 12 ও তার পরের যেকোনও ভার্সন থেকে বুটকনফিগ) androidboot.force_normal_boot=1 থাকলে, ডিভাইস সাধারণত (Android-এ) বুট করে, রিকভারি মোডে বুট করে না।

প্রথম পর্যায়ের ইনিট সম্পূর্ণ হওয়ার পরে, এটি সিস্টেমের মধ্যে SELinux কম্পাইল ও লোড করার জন্য selinux_setup আর্গুমেন্ট সহ /system/bin/init এক্সিকিউট করে। সবশেষে, init second_stage আর্গুমেন্ট সহ /system/bin/init আবার এক্সিকিউট করে। এই পয়েন্টে, init-এর মূল ফেজ রান করে এবং init.rc স্ক্রিপ্ট ব্যবহার করে বুট প্রসেস চালিয়ে যায়।

Android 10-এর আগে ও পরে নন-A/B ডিভাইসের পার্টিশন লেআউটের পার্থক্য নিম্নলিখিত বিভাগে বিস্তারিতভাবে বলা হয়েছে।

পার্টিশন লেআউট (A/B নয় এমন ডিভাইস)

Android 10-এর আগে ও পরে নন-A/B ডিভাইসের পার্টিশন লেআউটের পার্থক্য নিম্নলিখিত বিভাগে বিস্তারিতভাবে বলা হয়েছে।

boot.img

Ramdisk
(Android 8.x ও তার আগের যেকোনও ভার্সন)
সিস্টেম অ্যাজ রুট
(Android 9)
Ramdisk
(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)
    ...
    

recovery.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 ডিভাইসের পার্টিশন লেআউটের পার্থক্য নিচে উল্লেখ করা বিভাগগুলিতে বিস্তারিতভাবে বলা হয়েছে।

boot.img

রুট হিসেবে সিস্টেম
(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)
    ...