রামডিস্ক পার্টিশন

অ্যান্ড্রয়েড 10 এবং 11-এ, প্রথম পর্যায়ের র‌্যামডিস্কে প্রথম পর্যায়ের init বাইনারি (যা fstab এন্ট্রি দ্বারা নির্দিষ্ট করা প্রাথমিকভাবে মাউন্ট করা হয়) এবং ভেন্ডার fstab ফাইল রয়েছে। (অ্যান্ড্রয়েড 9 এবং তার পরবর্তী সংস্করণের মতো, system.img $TARGET_ROOT_OUT এর বিষয়বস্তু রয়েছে।)

  • একটি boot-ramdisk (Non-A/B) সহ ডিভাইসগুলির জন্য, প্রথম পর্যায়ের init হল একটি স্ট্যাটিক এক্সিকিউটেবল যা /init এ অবস্থিত। এই ডিভাইসগুলি system.img /system হিসাবে মাউন্ট করে, তারপর /system এ মাউন্টকে / সরানোর জন্য একটি সুইচ রুট অপারেশন করে। রামডিস্কের বিষয়বস্তু মাউন্ট করার পরে মুক্ত করা হয়।

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

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

নিম্নলিখিত বিভাগগুলি Android 10 এর আগে এবং পরে নন-A/B ডিভাইসগুলির জন্য পার্টিশন লেআউটের পার্থক্যের বিশদ বিবরণ দেয়৷

পার্টিশন লেআউট (নন-এ/বি ডিভাইস)

নিম্নলিখিত বিভাগগুলি Android 10 এর আগে এবং পরে নন-A/B ডিভাইসগুলির জন্য পার্টিশন লেআউটের পার্থক্যের বিশদ বিবরণ দেয়৷

boot.img

রামডিস্ক
(Android 8.x এবং নিম্ন)
রুট হিসাবে সিস্টেম
(Android 9)
রামডিস্ক
(অ্যান্ড্রয়েড 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

রামডিস্ক
(Android 8.x এবং নিম্ন)
রুট হিসাবে সিস্টেম
(Android 9)
রামডিস্ক
(অ্যান্ড্রয়েড 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 ডিভাইস)

নিম্নলিখিত বিভাগগুলি অ্যান্ড্রয়েড 10-এর আগে এবং পরে A/B ডিভাইসগুলির জন্য পার্টিশন লেআউটের পার্থক্যগুলির বিশদ বিবরণ দেয়৷

boot.img

রুট হিসাবে সিস্টেম
(Android 9)
রামডিস্ক
(অ্যান্ড্রয়েড 10 এবং 11)
সাধারণ বুট কার্নেল এবং রিকভারি-র্যামডিস্ক ( BOARD_USES_RECOVERY_AS_BOOT := true ) ধারণ করে।

Recovery-ramdisk শুধুমাত্র রিকভারিতে বুট করার জন্য ব্যবহার করা হয়।
সাধারণ বুট কার্নেল এবং রিকভারি-র্যামডিস্ক ( BOARD_USES_RECOVERY_AS_BOOT := true ) ধারণ করে।

Recovery-ramdisk রিকভারি এবং অ্যান্ড্রয়েড উভয় ক্ষেত্রেই বুট করতে ব্যবহার করা হয়।
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)
    ...