বুটলোডার লক ও আনলক করা

ডিফল্ট হিসেবে, বেশিরভাগ Android ডিভাইস লক করা বুটলোডার সহ শিপ করা হয়, যার অর্থ হল ব্যবহারকারীরা বুটলোডার বা ডিভাইস পার্টিশন ফ্ল্যাশ করতে পারবেন না। প্রয়োজন হলে, আপনি (এবং ডেভেলপার বিকল্প চালু করা ডিভাইস ব্যবহারকারীরা) নতুন ইমেজ ফ্ল্যাশ করার জন্য বুটলোডার আনলক করতে পারবেন।

বুটলোডার মোডে যান

fastboot কমান্ড ইস্যু করতে, আপনাকে অবশ্যই বুটলোডার মোডে থাকতে হবে। এটি করার একটি উপায় হল adb কমান্ড adb reboot bootloader পাঠানো। এছাড়াও, কিছু ফোন ডিভাইস বুট করার সময় একটি কী কম্বিনেশন (সাধারণত ভলিউম কমানোর বোতাম) প্রেস করে বুটলোডারে রিবুট করার অনুমতি দেয়।

বুটলোডার আনলক করা

বুটলোডার মোডে আসার পরে, বুটলোডার আনলক করতে এবং পার্টিশন রিফ্ল্যাশ করার জন্য চালু করতে, ডিভাইসে fastboot flashing unlock কমান্ড চালান। সেট করার পরে, রিবুট করার পরেও আনলক মোড বজায় থাকে।

fastboot flashing unlock কমান্ডটি ডিভাইসের প্রত্যাখ্যান করা উচিত, যদি না get_unlock_ability 1 হিসেবে সেট করা থাকে। 0-এ সেট করা থাকলে, ব্যবহারকারীকে হোম স্ক্রিনে বুট করতে হবে, সেটিংস > সিস্টেম > ডেভেলপার বিকল্প মেনু খুলতে হবে এবং OEM আনলক করা বিকল্প চালু করতে হবে (যা get_unlock_ability-কে 1-এ সেট করে)। সেট করার পরে, এই মোড রিবুট ও ফ্যাক্টরি ডেটা রিসেট জুড়ে বজায় থাকে।

fastboot flashing unlock কমান্ড পাঠানো হলে, ডিভাইসটি ব্যবহারকারীদের প্রম্পট করে সতর্ক করবে যে তারা অননুমোদিত ছবি ব্যবহারের কারণে সমস্যার সম্মুখীন হতে পারে। ব্যবহারকারী সতর্কতার ব্যাপারে সম্মতি জানানোর পরে, অননুমোদিত ডেটা অ্যাক্সেস আটকাতে ডিভাইসকে ফ্যাক্টরি ডেটা রিসেট করতে হবে। বুটলোডার ডিভাইসটি সঠিকভাবে রিফরম্যাট করতে না পারলেও সেটি রিসেট করতে পারবে। রিসেট করার পরেই পারসিস্টেন্ট ফ্ল্যাগ সেট করা যাবে যাতে ডিভাইস রিফ্ল্যাশ করা যায়।

fastboot flashing unlock প্রসেস চলাকালীন, আগে থেকে ওভাররাইট করা হয়নি এমন সব RAM রিসেট করতে হবে। এই ব্যবস্থা এমন অ্যাটাক প্রতিরোধ করে যা আগের বুট থেকে অবশিষ্ট RAM কন্টেন্ট পড়ে। একইভাবে, আনলক করা ডিভাইসকে প্রতিটি বুটে RAM খালি করতে হবে (যদি এটি গ্রহণযোগ্য বিলম্ব তৈরি না করে), কিন্তু কার্নেলের জন্য ব্যবহৃত অঞ্চলটি ramoops খালি রাখতে হবে।

বুটলোডার লক করা

বুটলোডার লক করতে এবং ডিভাইস রিসেট করতে, ডিভাইসে fastboot flashing lock কমান্ড রান করুন। রিটেলের জন্য তৈরি করা ডিভাইসগুলি লক করা অবস্থায় (get_unlock_ability রিটার্নিং 0 সহ) শিপ করতে হবে, যাতে অ্যাটাকাররা নতুন সিস্টেম বা বুট ইমেজ ইনস্টল করে ডিভাইসকে বিপন্ন করতে না পারে।

লক ও আনলক করার প্রপার্টি সেট করুন

ডিভাইসে ফ্ল্যাশিং আনলক কাজ করে কিনা তার উপর ভিত্তি করে ro.oem_unlock_supported প্রপার্টি বিল্ড টাইমে সেট করতে হবে।

  • ডিভাইস ফ্ল্যাশিং আনলক করার সুবিধা থাকলে, ro.oem_unlock_supported-কে 1 হিসেবে সেট করুন।
  • ডিভাইসে ফ্ল্যাশিং আনলক কাজ না করলে, ro.oem_unlock_supported 0 হিসেবে সেট করুন।

ডিভাইস ফ্ল্যাশিং আনলক করার সুবিধা থাকলে, বুটলোডারকে কার্নেল কমান্ড লাইন ভেরিয়েবল সেট করে লক স্ট্যাটাস দেখাতে হবে। androidboot.flash.locked লক করা থাকলে 1 এবং আনলক করা থাকলে 0 ভ্যালু সেট করতে হবে। Android 12-এ এই ভেরিয়েবলটি অবশ্যই কার্নেল কমান্ড লাইনের পরিবর্তে বুটকনফিগে সেট করতে হবে।

dm-verity কাজ করে এমন ডিভাইসের ক্ষেত্রে, ro.boot.flash.locked-এর ভ্যালু 0 হিসেবে সেট করতে ro.boot.verifiedbootstate ব্যবহার করুন ; যাচাই করা বুট স্টেট কমলা রঙের হলে এটি বুটলোডার আনলক করে দেয়।

গুরুত্বপূর্ণ বিভাগ সুরক্ষিত রাখা

ডিভাইসে গুরুত্বপূর্ণ বিভাগ লক ও আনলক করার সুবিধা থাকতে হবে, যা বুটলোডারে ডিভাইস বুট করার জন্য প্রয়োজনীয় যেকোনও কিছু হিসেবে সংজ্ঞায়িত করা হয়। এই ধরনের বিভাগে ফিউজ, সেন্সর হাবের জন্য ভার্চুয়াল পার্টিশন, ফার্স্ট-স্টেজ বুটলোডার এবং আরও অনেক কিছু অন্তর্ভুক্ত থাকতে পারে। গুরুত্বপূর্ণ বিভাগ লক করতে, আপনাকে এমন একটি মেকানিজম ব্যবহার করতে হবে যা ডিভাইসে রান করছে এমন কোড (কার্নেল, রিকভারি ইমেজ, OTA কোড ইত্যাদি) থেকে কোনও গুরুত্বপূর্ণ বিভাগকে ইচ্ছাকৃতভাবে পরিবর্তন করা প্রতিরোধ করে। ডিভাইস লক করা গুরুত্বপূর্ণ অবস্থায় থাকলে, OTA-এর মাধ্যমে গুরুত্বপূর্ণ অংশ আপডেট করা যাবে না।

লক করা থেকে আনলক করা অবস্থায় পরিবর্তন করার জন্য ডিভাইসের সাথে ফিজিক্যাল ইন্টার‍্যাকশন প্রয়োজন। এই ইন্টার‍্যাকশনটি fastboot flashing unlock কমান্ড রান করার প্রভাবের মতো হলেও, এর জন্য ব্যবহারকারীকে ডিভাইসে ফিজিক্যাল বোতাম প্রেস করতে হয়। ডিভাইসগুলিকে ম্যানুয়ালি ইন্টার‍্যাক্ট না করে প্রোগ্রাম অনুযায়ী lock_critical থেকে unlock_critical-এ পরিবর্তন করার অনুমতি দেওয়া উচিত নয় এবং ডিভাইসগুলি unlock_critical অবস্থায় শিপ করা উচিত নয়।