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

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

বুটলোডারে প্রবেশ করুন

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

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

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

get_unlock_ability এর মান 1 সেট করা না থাকলে ডিভাইসগুলো fastboot flashing unlock কমান্ডটি প্রত্যাখ্যান করবে। যদি এর মান 0 সেট করা থাকে, তবে ব্যবহারকারীকে হোম স্ক্রিনে বুট করে Settings > System > Developer options মেনুটি খুলতে হবে এবং OEM আনলকিং অপশনটি চালু করতে হবে (যা get_unlock_ability এর মান 1 সেট করে)। একবার সেট করার পর, এই মোডটি রিবুট এবং ফ্যাক্টরি ডেটা রিসেটের পরেও অপরিবর্তিত থাকে।

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

fastboot flashing unlock প্রক্রিয়ার সময়, যে সমস্ত র‍্যাম ইতিমধ্যে ওভাররাইট করা হয়নি, সেগুলোকে রিসেট করা উচিত। এই ব্যবস্থাটি পূর্ববর্তী বুট থেকে অবশিষ্ট র‍্যামের বিষয়বস্তু পড়ে ফেলার মতো আক্রমণ প্রতিরোধ করে। একইভাবে, আনলক করা ডিভাইসগুলোর প্রতিটি বুটে র‍্যাম খালি করা উচিত (যদি না এটি একটি অগ্রহণযোগ্য বিলম্ব তৈরি করে), কিন্তু কার্নেলের 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 সেট করতে হবে। অ্যান্ড্রয়েড ১২-এ এই ভেরিয়েবলটি কার্নেল কমান্ড লাইনের পরিবর্তে bootconfig-এ সেট করতে হবে।

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

গুরুত্বপূর্ণ অংশগুলি রক্ষা করুন

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

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