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

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

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

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

বুটলোডার আনলক করা হচ্ছে

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

get_unlock_ability 1 তে সেট করা না থাকলে ডিভাইসগুলির fastboot flashing unlock কমান্ড অস্বীকার করা উচিত। 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 কোড, ইত্যাদি) যাতে ইচ্ছাকৃতভাবে কোনো সমালোচনামূলক বিভাগ পরিবর্তন করা থেকে বাধা দেয়। ডিভাইসটি লক ক্রিটিক্যাল অবস্থায় থাকলে ওটিএগুলি গুরুত্বপূর্ণ বিভাগগুলি আপডেট করতে ব্যর্থ হবে।

লক করা থেকে আনলক অবস্থায় রূপান্তরের জন্য ডিভাইসের সাথে শারীরিক মিথস্ক্রিয়া প্রয়োজন। এই মিথস্ক্রিয়াটি fastboot flashing unlock কমান্ড চালানোর প্রভাবগুলির মতো কিন্তু ব্যবহারকারীকে ডিভাইসে একটি শারীরিক বোতাম টিপতে হবে। ডিভাইসগুলি শারীরিক মিথস্ক্রিয়া ছাড়াই lock critical থেকে unlock critical করার জন্য প্রোগ্রাম্যাটিকভাবে ট্রানজিশন করার অনুমতি দেয় না এবং ডিভাইসগুলি unlock critical অবস্থায় পাঠানো উচিত নয়।