ফাস্টবুটকে ইউজারস্পেসে সরান

ফাস্টবুট হলো একটি বুটলোডার মডিউল এবং মোডের নাম। অ্যান্ড্রয়েড ১০ এবং এর পরবর্তী সংস্করণগুলো বুটলোডার থেকে ইউজারস্পেসে ফাস্টবুট ইমপ্লিমেন্টেশন স্থানান্তরের মাধ্যমে রিসাইজযোগ্য পার্টিশন সমর্থন করে। এই স্থানান্তর ফ্ল্যাশিং কোডকে একটি রক্ষণাবেক্ষণযোগ্য ও পরীক্ষাযোগ্য সাধারণ স্থানে নিয়ে যেতে সক্ষম করে, যেখানে ফাস্টবুটের শুধুমাত্র ভেন্ডর-নির্দিষ্ট অংশগুলো একটি হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) দ্বারা বাস্তবায়িত হয়। এছাড়াও, অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণগুলো একটি অতিরিক্ত ফাস্টবুট কমান্ডের মাধ্যমে র‍্যামডিস্ক ফ্ল্যাশিং সমর্থন করে।

ফাস্টবুট এবং রিকভারি একীভূত করুন

যেহেতু ইউজারস্পেস ফাস্টবুট এবং রিকভারি একই রকম, তাই আপনি সেগুলোকে একটি পার্টিশন বা বাইনারিতে একীভূত করতে পারেন। এর ফলে কম জায়গা ব্যবহার হয়, সব মিলিয়ে পার্টিশনের সংখ্যা কমে যায় এবং ফাস্টবুট ও রিকভারি তাদের কার্নেল ও লাইব্রেরিগুলো শেয়ার করতে পারে—এভাবে বিভিন্ন সুবিধা পাওয়া যায়।

Fastbootd হলো একটি ইউজারস্পেস ডেমন এবং মোডের নাম। fastbootd সমর্থন করার জন্য, বুটলোডারকে অবশ্যই boot-fastboot নামক একটি নতুন বুট কন্ট্রোল ব্লক (BCB) কমান্ড প্রয়োগ করতে হবে। fastbootd মোডে প্রবেশ করার জন্য, বুটলোডার BCB বার্তার কমান্ড ফিল্ডে boot-fastboot লেখে এবং BCB-এর recovery ফিল্ড অপরিবর্তিত রাখে (যাতে যেকোনো বাধাগ্রস্ত রিকভারি টাস্ক পুনরায় চালু করা যায়)। status , stage , এবং reserved ফিল্ডগুলোও অপরিবর্তিত থাকে। BCB কমান্ড ফিল্ডে boot-fastboot দেখতে পেলেই বুটলোডার রিকভারি ইমেজ লোড করে এবং তাতে বুট করে। এরপর রিকভারি BCB বার্তাটি পার্স করে fastbootd মোডে চলে যায়।

ADB কমান্ড

এই অংশে fastbootd সংহত করার জন্য adb কমান্ডটি বর্ণনা করা হয়েছে। কমান্ডটি সিস্টেম নাকি রিকভারি থেকে চালানো হচ্ছে, তার উপর নির্ভর করে এর ফলাফল ভিন্ন হয়।

আদেশ বর্ণনা
reboot fastboot
  • fastbootd (সিস্টেম)-এ রিবুট হয়।
  • রিবুট (রিকভারি) ছাড়াই সরাসরি fastbootd প্রবেশ করে।

ফাস্টবুট কমান্ড

এই বিভাগে fastbootd একীভূত করার জন্য fastboot কমান্ডগুলো বর্ণনা করা হয়েছে, যার মধ্যে লজিক্যাল পার্টিশন ফ্ল্যাশ ও পরিচালনার জন্য নতুন কমান্ডও অন্তর্ভুক্ত রয়েছে। কিছু কমান্ডের ফলাফল ভিন্ন হয়, যা নির্ভর করে সেগুলো বুটলোডার নাকি fastbootd দ্বারা চালানো হয়েছে তার উপর।

আদেশ বর্ণনা
reboot recovery
  • রিকভারি (বুটলোডার) মোডে রিবুট হয়।
  • রিবুট ছাড়াই সরাসরি রিকভারি মোডে প্রবেশ করে ( fastbootd )।
reboot fastboot fastbootd তে রিবুট হয়।
getvar is-userspace
  • yes ( fastbootd ) ফেরত দেয়।
  • no (বুটলোডার) ফেরত দেয় না।
getvar is-logical: <partition> প্রদত্ত পার্টিশনটি একটি লজিক্যাল পার্টিশন হলে yes রিটার্ন করে, অন্যথায় no '। লজিক্যাল পার্টিশনগুলো নিচে তালিকাভুক্ত সমস্ত কমান্ড সমর্থন করে।
getvar super-partition-name সুপার পার্টিশনের নামটি ফেরত দেয়। সুপার পার্টিশনটি যদি একটি A/B পার্টিশন হয়, তবে নামের সাথে বর্তমান স্লট সাফিক্সটি অন্তর্ভুক্ত থাকে (যদিও এটি সাধারণত তা হয় না)।
create-logical-partition <partition> <size> প্রদত্ত নাম ও আকার অনুযায়ী একটি লজিক্যাল পার্টিশন তৈরি করে। নামটি আগে থেকে লজিক্যাল পার্টিশন হিসেবে বিদ্যমান থাকা যাবে না।
delete-logical-partition <partition> প্রদত্ত লজিক্যাল পার্টিশনটি মুছে ফেলে (কার্যত পার্টিশনটি সম্পূর্ণরূপে বিলুপ্ত করে)।
resize-logical-partition <partition> <size> লজিক্যাল পার্টিশনের বিষয়বস্তু পরিবর্তন না করে এটিকে নতুন আকারে রিসাইজ করে। রিসাইজ করার জন্য পর্যাপ্ত জায়গা না থাকলে এটি ব্যর্থ হয়।
flash <partition> [ <filename> ] ফ্ল্যাশ পার্টিশনে একটি ফাইল লেখে। ডিভাইসটি অবশ্যই আনলক করা অবস্থায় থাকতে হবে।
erase <partition> একটি পার্টিশন মুছে ফেলে (সিকিউর ইরেজ হওয়ার প্রয়োজন নেই)। ডিভাইসটি অবশ্যই আনলক করা অবস্থায় থাকতে হবে।
getvar <variable> | all একটি বুটলোডার ভেরিয়েবল অথবা সমস্ত ভেরিয়েবল প্রদর্শন করে। যদি ভেরিয়েবলটি বিদ্যমান না থাকে, তবে একটি ত্রুটি ফেরত দেয়।
set_active <slot>

প্রদত্ত A/B বুটিং স্লটটিকে active হিসেবে সেট করে। পরবর্তী বুট প্রচেষ্টায়, সিস্টেমটি নির্দিষ্ট স্লট থেকে বুট করে।

A/B সাপোর্টের জন্য, স্লটগুলো হলো পার্টিশনের সদৃশ সেট, যেখান থেকে স্বাধীনভাবে বুট করা যায়। স্লটগুলোর নাম a , b , ইত্যাদি রাখা হয় এবং পার্টিশনের নামের শেষে _a , _b , ইত্যাদি সাফিক্স যোগ করে এদের মধ্যে পার্থক্য করা হয়।

reboot ডিভাইসটি স্বাভাবিকভাবে রিবুট হয়।
reboot-bootloader (অথবা reboot bootloader ) ডিভাইসটিকে বুটলোডারে রিবুট করে।
fastboot fetch vendor_boot <out.img>

ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশিং সমর্থন করার জন্য অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণ ব্যবহার করুন।

সম্পূর্ণ পার্টিশন সাইজ এবং চাঙ্ক সাইজ সংগ্রহ করে। প্রতিটি চাঙ্কের জন্য ডেটা সংগ্রহ করে, তারপর সেই ডেটাগুলোকে একত্রিত করে <out.img> তৈরি করে।

বিস্তারিত জানতে, fastboot fetch vendor_boot <out.img> দেখুন।

fastboot flash vendor_boot:default <vendor-ramdisk.img>

ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশিং সমর্থন করার জন্য অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণ ব্যবহার করুন।

এটি flash কমান্ডের একটি বিশেষ রূপ। এটি fetch vendor_boot ইমেজ ফাংশনটি সম্পাদন করে, ঠিক যেমনটি fastboot fetch কল করলে হতো। এটি যে নতুন vendor_boot ইমেজটি ফ্ল্যাশ করে, তা বুট হেডার ভার্সনটি ভার্সন ৩ নাকি ভার্সন ৪, তার উপর নির্ভর করে।

বিস্তারিত জানতে, fastboot flash vendor_boot:default <vendor-ramdisk.img> দেখুন।

fastboot flash vendor_boot: <foo> <vendor-ramdisk.img> ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশিং সমর্থন করার জন্য অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণ ব্যবহার করুন।

vendor_boot ইমেজটি ফেচ করে। vendor boot হেডারটি ভার্সন ৩ হলে একটি এরর রিটার্ন করে। যদি এটি ভার্সন ৪ হয়, তবে এটি সঠিক vendor ramdisk fragment (যদি উপলব্ধ থাকে) খুঁজে বের করে। এরপর সেটিকে প্রদত্ত ইমেজ দিয়ে প্রতিস্থাপন করে, সাইজ ও অফসেট পুনরায় গণনা করে এবং নতুন vendor_boot image ফ্ল্যাশ করে।

বিস্তারিত জানতে, fastboot flash vendor_boot: <foo> <vendor-ramdisk.img> দেখুন।

ফাস্টবুট এবং বুটলোডার

বুটলোডারটি bootloader , radio এবং boot/recovery পার্টিশনগুলো ফ্ল্যাশ করে, যার পরে ডিভাইসটি ফাস্টবুটে (ইউজারস্পেস) বুট করে এবং অন্য সব পার্টিশন ফ্ল্যাশ করে। বুটলোডারটিতে নিম্নলিখিত কমান্ডগুলো সাপোর্ট থাকা উচিত।

আদেশ বর্ণনা
download ফ্ল্যাশে ইমেজটি ডাউনলোড করে।
flash recovery <image> / flash boot <image> / flash bootloader <image> / recovery/boot পার্টিশন এবং বুটলোডার ফ্ল্যাশ করে।
reboot ডিভাইসটি রিবুট করে।
reboot fastboot ফাস্টবুটে রিবুট হয়।
reboot recovery রিকভারি মোডে রিবুট হয়।
getvar রিকভারি/বুট ইমেজ ফ্ল্যাশ করার জন্য প্রয়োজনীয় একটি বুটলোডার ভেরিয়েবল পায় (যেমন, current-slot এবং max-download-size )।
oem <command> OEM দ্বারা সংজ্ঞায়িত কমান্ড।

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

বুটলোডার ডাইনামিক পার্টিশন ফ্ল্যাশ বা ইরেজ করার অনুমতি দেবে না এবং এই অপারেশনগুলো করার চেষ্টা করা হলে একটি এরর রিটার্ন করবে । রেট্রোফিটেড ডাইনামিক পার্টিশন ডিভাইসগুলোর জন্য, ফাস্টবুট টুল (এবং বুটলোডার) বুটলোডার মোডে থাকাকালীন সরাসরি একটি ডাইনামিক পার্টিশন ফ্ল্যাশ করার জন্য একটি ফোর্স মোড সাপোর্ট করে। উদাহরণস্বরূপ, যদি রেট্রোফিটেড ডিভাইসটিতে system একটি ডাইনামিক পার্টিশন হয়, তাহলে fastboot --force flash system কমান্ডটি ব্যবহার করলে বুটলোডার ( fastbootd এর পরিবর্তে) পার্টিশনটি ফ্ল্যাশ করতে সক্ষম হয়।

অফ-মোড চার্জিং

যদি কোনো ডিভাইস অফ-মোড চার্জিং সমর্থন করে অথবা পাওয়ার সংযোগ দিলে স্বয়ংক্রিয়ভাবে কোনো বিশেষ মোডে বুট হয়, fastboot oem off-mode-charge 0 কমান্ডটির বাস্তবায়নকে অবশ্যই এই বিশেষ মোডগুলোকে বাইপাস করতে হবে, যাতে ডিভাইসটি এমনভাবে বুট হয় যেন ব্যবহারকারী পাওয়ার বাটন টিপেছেন।

ফাস্টবুট ওইএম এইচএএল

বুটলোডার ফাস্টবুটকে সম্পূর্ণরূপে প্রতিস্থাপন করতে হলে, ফাস্টবুটকে অবশ্যই বিদ্যমান সমস্ত ফাস্টবুট কমান্ড পরিচালনা করতে হবে। এই কমান্ডগুলোর মধ্যে অনেকগুলোই OEM-দের তৈরি এবং সেগুলোর ডকুমেন্টেশন থাকলেও একটি কাস্টম ইমপ্লিমেন্টেশনের প্রয়োজন হয়। অনেক OEM-নির্দিষ্ট কমান্ডের ডকুমেন্টেশন নেই । এই ধরনের কমান্ডগুলো পরিচালনা করার জন্য, ফাস্টবুট HAL প্রয়োজনীয় OEM কমান্ডগুলো নির্দিষ্ট করে দেয়। OEM-রা তাদের নিজস্ব কমান্ডও ইমপ্লিমেন্ট করতে পারে।

ফাস্টবুট এইচএএল (fastboot HAL)-এর সংজ্ঞা নিম্নরূপ:

import IFastbootLogger;

/**
 * IFastboot interface implements vendor specific fastboot commands.
 */
interface IFastboot {
    /**
     * Returns a bool indicating whether the bootloader is enforcing verified
     * boot.
     *
     * @return verifiedBootState True if the bootloader is enforcing verified
     * boot and False otherwise.
     */
    isVerifiedBootEnabled() generates (bool verifiedBootState);

    /**
     * Returns a bool indicating the off-mode-charge setting. If off-mode
     * charging is enabled, the device autoboots into a special mode when
     * power is applied.
     *
     * @return offModeChargeState True if the setting is enabled and False if
     * not.
     */
    isOffModeChargeEnabled() generates (bool offModeChargeState);

    /**
     * Returns the minimum battery voltage required for flashing in mV.
     *
     * @return batteryVoltage Minimum battery voltage (in mV) required for
     * flashing to be successful.
     */
    getBatteryVoltageFlashingThreshold() generates (int32_t batteryVoltage);

    /**
     * Returns the file system type of the partition. This is only required for
     * physical partitions that need to be wiped and reformatted.
     *
     * @return type Can be ext4, f2fs or raw.
     * @return result SUCCESS if the operation is successful,
     * FAILURE_UNKNOWN if the partition is invalid or does not require
     * reformatting.
     */
    getPartitionType(string partitionName) generates (FileSystemType type, Result result);

    /**
     * Executes a fastboot OEM command.
     *
     * @param oemCmd The oem command that is passed to the fastboot HAL.
     * @response result Returns the status SUCCESS if the operation is
     * successful,
     * INVALID_ARGUMENT for bad arguments,
     * FAILURE_UNKNOWN for an invalid/unsupported command.
     */
    doOemCommand(string oemCmd) generates (Result result);

};

fastbootd সক্রিয় করুন

একটি ডিভাইসে fastbootd সক্রিয় করতে:

  1. device.mk ফাইলে PRODUCT_PACKAGESfastbootd যোগ করুন: PRODUCT_PACKAGES += fastbootd .

  2. নিশ্চিত করুন যে ফাস্টবুট এইচএএল, বুট কন্ট্রোল এইচএএল এবং হেলথ এইচএএল রিকভারি ইমেজের অংশ হিসেবে প্যাকেজ করা আছে।

  3. fastbootd জন্য প্রয়োজনীয় যেকোনো ডিভাইস-নির্দিষ্ট SEPolicy অনুমতি যোগ করুন। উদাহরণস্বরূপ, কোনো ডিভাইস-নির্দিষ্ট পার্টিশন ফ্ল্যাশ করার জন্য fastbootd এর সেই পার্টিশনে লেখার (write) অ্যাক্সেস প্রয়োজন হয়। এছাড়াও, fastboot HAL বাস্তবায়নের জন্যও ডিভাইস-নির্দিষ্ট অনুমতির প্রয়োজন হতে পারে।

ইউজারস্পেস ফাস্টবুট যাচাই করতে, ভেন্ডর টেস্ট স্যুট (VTS) চালান।

ফ্ল্যাশ ভেন্ডর র‍্যামডিস্ক

অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণগুলোতে একটি অতিরিক্ত ফাস্টবুট কমান্ডের মাধ্যমে র‍্যামডিস্ক ফ্ল্যাশ করার সুবিধা দেওয়া হয়েছে, যা ডিভাইস থেকে সম্পূর্ণ vendor_boot ইমেজটি নিয়ে আসে। এই কমান্ডটি হোস্ট-সাইড ফাস্টবুট টুলকে ভেন্ডর বুট হেডার পড়তে, রিইমেজ করতে এবং নতুন ইমেজটি ফ্ল্যাশ করতে নির্দেশ দেয়।

সম্পূর্ণ vendor_boot ইমেজটি পুল করার জন্য, Android 12-এ ` fetch:vendor_boot কমান্ডটি `fastboot` প্রোটোকল এবং এর `fastbootd` ইমপ্লিমেন্টেশন উভয় ক্ষেত্রেই যোগ করা হয়েছে। উল্লেখ্য যে, `fastbootd` এটি ইমপ্লিমেন্ট করলেও , বুটলোডারটি নিজে তা নাও করতে পারে। OEM-রা তাদের প্রোটোকলের বুটলোডার ইমপ্লিমেন্টেশনে fetch:vendor_boot কমান্ডটি যোগ করতে পারে। তবে, যদি কমান্ডটি বুটলোডার মোডে স্বীকৃত না হয়, তাহলে বুটলোডার মোডে স্বতন্ত্র ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশ করা ভেন্ডর-সমর্থিত কোনো বিকল্প নয়।

বুটলোডার পরিবর্তন

getvar:max-fetch-size এবং fetch:name কমান্ড দুটি fastbootd তে প্রয়োগ করা হয়েছে। বুটলোডারে ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশ করা সমর্থন করার জন্য, আপনাকে অবশ্যই এই দুটি কমান্ড প্রয়োগ করতে হবে।

ফাস্টবুটডি পরিবর্তন

getvar:max-fetch-size হলো max-download-size অনুরূপ। এটি সেই সর্বোচ্চ আকার নির্দিষ্ট করে যা ডিভাইসটি একটি DATA রেসপন্সে পাঠাতে পারে। ড্রাইভার অবশ্যই এই মানের চেয়ে বড় আকারের ডেটা ফেচ করবে না।

fetch:name[:offset[:size]] ডিভাইসটিতে একাধিক যাচাই-বাছাই করে। যদি নিচের সবগুলো শর্ত সত্য হয়, তাহলে ` fetch:name[:offset[:size]] কমান্ডটি ডেটা ফেরত দেয়:

  • ডিভাইসটি একটি ডিবাগযোগ্য বিল্ডে চলছে।
  • ডিভাইসটি আনলক করা আছে (বুট স্টেট কমলা)।
  • ফেচ করা পার্টিশনের নাম হলো vendor_boot
  • size মান 0 < size <= max-fetch-size এর মধ্যে পড়ে।

এগুলো যাচাই করা হলে, fetch:name[:offset[:size]] পার্টিশনের আকার এবং অফসেট ফেরত দেয়। নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

  • fetch:name হলো fetch:name:0 এর সমতুল্য, যা আবার fetch:name:0:partition_size সমতুল্য।
  • fetch:name:offset fetch:name:offset:(partition_size - offset) এর সমতুল্য।

সুতরাং fetch:name[:offset[:size]] = fetch:name:offset:(partition_size - offset)

যখন offset বা partition_size (বা উভয়ই) অনির্দিষ্ট থাকে, তখন ডিফল্ট মানগুলি ব্যবহৃত হয়, যা offset জন্য ০ এবং size জন্য partition_size - offset এর গণনাকৃত মান।

  • অফসেট নির্দিষ্ট করা হয়েছে, আকার অনির্দিষ্ট: size = partition_size - offset
  • কোনটিই নির্দিষ্ট করা হয়নি: উভয়ের জন্য ডিফল্ট মান ব্যবহৃত হয়েছে, size = partition_size - ০।

উদাহরণস্বরূপ, fetch:foo অফসেট 0-তে থাকা সম্পূর্ণ foo পার্টিশনটি ফেচ করে।

চালক পরিবর্তন

ড্রাইভারের পরিবর্তনগুলো কার্যকর করার জন্য ফাস্টবুট টুলে কমান্ড যোগ করা হয়েছে। ফাস্টবুট কমান্ডের সারণীতে প্রতিটি কমান্ডের পূর্ণাঙ্গ সংজ্ঞার সাথে লিঙ্ক দেওয়া আছে।

  • fastboot fetch vendor_boot out.img

    • চাঙ্ক সাইজ নির্ধারণ করতে getvar max-fetch-size কল করা হয়।
    • সম্পূর্ণ পার্টিশনের আকার নির্ধারণ করতে getvar partition-size:vendor_boot[_a] কল করা হয়।
    • প্রতিটি চাঙ্কের জন্য fastboot fetch vendor_boot[_a]:offset:size কমান্ডটি কল করা হয়। (চাঙ্কের আকার vendor_boot আকারের চেয়ে বড়, তাই সাধারণত একটিই চাঙ্ক থাকে।)
    • ডেটাগুলোকে একত্রিত করে out.img ফাইলে পরিণত করে।
  • fastboot flash vendor_boot:default vendor-ramdisk.img

    এটি flash কমান্ডের একটি বিশেষ রূপ। এটি vendor_boot ইমেজটি ফেচ করে, ঠিক যেমনটি fastboot fetch কল করলে হতো।

    • যদি ভেন্ডর বুট হেডার ভার্সন ৩ হয়, তবে এটি নিম্নলিখিত কাজগুলো করে:
      • ভেন্ডর র‍্যামডিস্ককে প্রদত্ত ইমেজ দ্বারা প্রতিস্থাপন করে।
      • নতুন vendor_boot ইমেজটি ফ্ল্যাশ করে।
    • যদি ভেন্ডর বুট হেডারটি ভার্সন ৪ হয়, তবে এটি নিম্নলিখিত কাজগুলো করে:
      • সম্পূর্ণ ভেন্ডর র‍্যামডিস্কটিকে প্রদত্ত ইমেজ দ্বারা প্রতিস্থাপন করে, যাতে প্রদত্ত ইমেজটি vendor_boot ইমেজের একমাত্র ভেন্ডর র‍্যামডিস্ক ফ্র্যাগমেন্ট হয়ে ওঠে।
      • ভেন্ডর র‍্যামডিস্ক টেবিলে আকার এবং অফসেট পুনরায় গণনা করে।
      • নতুন vendor_boot ইমেজটি ফ্ল্যাশ করে।
  • fastboot flash vendor_boot:foo vendor-ramdisk.img

    vendor_boot image ফেচ করে, যেন fastboot fetch কল করা হয়েছে।

    • ভেন্ডর বুট হেডারটি ভার্সন ৩ হলে, এটি একটি ত্রুটি দেখায়।
    • যদি ভেন্ডর বুট হেডারটি ভার্সন ৪ হয়, তবে এটি নিম্নলিখিত কাজগুলো করে:

      • ramdisk_<var>&lt;foo></var> নামের ভেন্ডর র‍্যামডিস্ক ফ্র্যাগমেন্টটি খুঁজে বের করে। যদি খুঁজে না পাওয়া যায়, অথবা একাধিক মিল থাকলে, একটি ত্রুটি ফেরত দেয়।
      • ভেন্ডর র‍্যামডিস্ক ফ্র্যাগমেন্টটিকে প্রদত্ত ইমেজ দ্বারা প্রতিস্থাপন করে।
      • ভেন্ডর র‍্যামডিস্ক টেবিলে প্রতিটি সাইজ ও অফসেট পুনরায় গণনা করে।
      • নতুন vendor_boot ইমেজটি ফ্ল্যাশ করে।
    • যদি <foo> নির্দিষ্ট করা না থাকে, তবে এটি ramdisk_ খোঁজার চেষ্টা করে।

mkbootimg

অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণগুলিতে ভেন্ডর র‍্যামডিস্ক ফ্র্যাগমেন্টের নামকরণের জন্য default নামটি সংরক্ষিত। যদিও fastboot flash vendor_boot:default এর অর্থ একই থাকে, আপনার র‍্যামডিস্ক ফ্র্যাগমেন্টের নাম ' default ' রাখা যাবে না

SELinux পরিবর্তন

ভেন্ডর র‍্যামডিস্ক ফ্ল্যাশ করার সুবিধা যোগ করতে fastbootd.te তে একটি পরিবর্তন আনা হয়েছে।