কীভাবে রম পোর্টিংয়ের জন্য বুট.আইএমজি আনপ্যাক এবং সম্পাদনা করবেন?


14

আমি সম্প্রতি আমার অলভিউ পি 5 এর জন্য এই রমটি ডাউনলোড করেছি (অ্যালভিউ পি 5 জিওনি জিএন 700 ডাব্লু / ফ্লাই আইকিউ 441 / কিউমোবাইল নয়ার এ 8 এর সমতুল্য)। এটি প্রিমোনেক্স রম নামে পরিচিত এবং এটি ফোনের জিওনি সংস্করণে তৈরি করা হয়েছে।

  • প্রথমত, আমি এটি এটি ইনস্টল করার চেষ্টা করেছি তবে এটি বুট স্ক্রিনে আটকে গেছে।
  • কিছু গবেষণার পরে আমি জানতে পেরেছিলাম যে এটি boot.imgফাইলটিতে সমস্যা হতে পারে এবং আমি কীভাবে এটি বের করতে বা সম্পাদনা করব তা আমি জানি না ...

কেউ আমাকে বলতে পারেন কীভাবে এটি করতে হয়?

উত্তর:


12

সরঞ্জাম নির্বাচন

আমি এখানে যে পদ্ধতিটি উপস্থাপন করছি তা সায়ানোজেনমডের অ্যান্ড্রয়েড উত্স কোডের উপর নির্ভর করে।

যদিও গুগলের AOSP কেবল টুল উপলব্ধ বিল্ডboot.img ফাইল, CyanogenMod এছাড়াও যোগ করা unpackbootimgআপনি করতে সক্ষম হবেন টুল প্যাকমুক্ত করুন। এই সরঞ্জামটি সায়ানোজেনমডের জন্য কোনওভাবেই বিশেষভাবে নকশাকৃত মনে হয় না, তাই বেশিরভাগ সম্ভাবনা হ'ল এটি অন্যান্য রমগুলির জন্যও কাজ করবে।

boot.imgফাইল আনপ্যাক করার জন্য অপেক্ষাকৃত বড় সংখ্যক বিকল্প রয়েছে যা সমস্ত কম বা কম একই কাজ করে।

মূলত, এই আনপ্যাক সরঞ্জামটি boot.imgফাইলের সামগ্রীটি বের করে এবং এমন mkbootimgএকটি ফাইল তৈরি করতে আপনাকে গুগলের সরঞ্জামটিতে যেতে হবে এমন একটি প্যারামিটারের সেট প্রদর্শন করবে যার কনফিগারেশন (মূলত কার্নেল প্যারামিটার এবং মেমরি ঠিকানা) মূলটির সাথে মিলবে।

এখানে কয়েকটি উদাহরণ রয়েছে, আমি ব্যক্তিগতভাবে সেগুলি পরীক্ষা করিনি তাই কোনওরকম সুপারিশ করতে পারে না এবং আমি কেবল তাদের রেফারেন্সের জন্য উপস্থাপন করি:

  • কয়েকটি ওপেন সোর্স বা স্ক্রিপ্ট ভিত্তিক:

    • স্পষ্টতই অ্যান্ড্রয়েড কিচেনটিকে বোঝানো হয়েছিল অ্যান্ড্রয়েড বিকাশকারীদের জন্য একরকম সুইস আর্মি ছুরি। মূল লেখক আনুষ্ঠানিকভাবে প্রকল্পটি রক্ষণাবেক্ষণ বন্ধ করেছেন, আরও কয়েক জন ব্যবহারকারী এটিকে জাভিলোনাস বা সেন্টিমোটকের মতো তৈরি করেছেন
    • সিজাইম সম্পূর্ণ অনপ্যাকিং এবং পুনরায় প্যাকিংয়ের প্রক্রিয়াটিকে আরও সোজা করার জন্য তার টুলসেটে শেল স্ক্রিপ্ট র‌্যাপার যুক্ত করে স্বাচ্ছন্দ্যকে লক্ষ্য করে।
    • osm0sis প্রকল্পটির নিজস্ব বিবরণ অনুযায়ী সায়ানোজেনমডের সরঞ্জামগুলির একটি কাঁটাচামচ "কাঁটাচামচ এবং আপডেট" করেছে oses এই প্রকল্পটি সত্যই এখনও বজায় রয়েছে বলে মনে হচ্ছে যা এই অঞ্চলে খুব বেশি সাধারণ নয়, তবে সায়ানোজেনমডের মূল সরঞ্জামগুলির সাথে প্রকৃত সুবিধা আমার কাছে অস্পষ্ট।
  • কিছু বিনামূল্যে ক্লোজ সোর্স মালিকানা বাইনারি হয়:

    • কুইস্মাunmkbootimg প্রায়শই সহায়তা ফোরামগুলিতে উপস্থিত হয় এবং অদ্ভুত মামলাগুলি পরিচালনা করতে সহায়তা করে, mkbootimgউত্স কোডে কিছু সংশোধন করার প্রয়োজন হলে "মানব পাঠযোগ্য" ইংরেজী সুপারিশ আউটপুট করে এবং চিত্রটি পুনর্নির্মাণের জন্য সঠিক কমান্ড-লাইন প্রদর্শন করে বলে মনে হয়।
    • জিয়াওলুরmkbootimg_tools মনে হয় বেশিরভাগ সময় উল্লিখিত হয় boot.imgএবং এটি ডিভাইস ট্রি ফাইলটি আনপ্যাক এবং পুনঃস্থাপন করতে দেয় dt.img। আসলে এটা GitHub থেকে হোস্ট করা হয় দ্বারা বোকা বানানো যাবে না: এটা হল একটি বদ্ধ উৎস মালিকানা বাইনারি এবং শুধুমাত্র কম্পাইল বাইনেরিতে তাদের সংগ্রহস্থলের পাওয়া যায় (আসলে আমি এমনকি দোকান থেকে একটি উৎস-কোড সংগ্রহস্থলের ব্যবহার সঠিক সুদ সম্পর্কে হতাশ করছি বাইনারি ব্লব, তবে বিভিন্ন লোক, বিভিন্ন মন ...)।
    • এক্সডিএ ফোরামে সিএনেক্সাস সরঞ্জামগুলির একটি নির্বাচন সহ একটি সংরক্ষণাগার সরবরাহ করে।
    • ইউনিক্স.এসই-এর এই উত্তরটি আপাতদৃষ্টিতে অদৃশ্য হয়ে যাওয়া অ্যান্ড্রয়েড সিরিয়াল পোর্ট প্রকল্পের কয়েকটি সরঞ্জামের প্রস্তাব দেয় । ফাইলের নামগুলি তবে আমাকে ভাবতে পরিচালিত করে যে এগুলি সায়ানোজেনমডের সরঞ্জামগুলির পুরানো প্রাক বিল্ট সংস্করণ হওয়া উচিত (প্রকল্পটি বন্ধ হয়ে যাচ্ছে, ডকুমেন্টেশন বা সমর্থন নেই)।

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

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

সরঞ্জাম ইনস্টলেশন

boot.imgপ্যাকিং এবং আনপ্যাকিংয়ের জন্য সায়ানোজেনমড টুলসেট সংকলন করা বেশ সোজা।

  • যদি আপনি ইতিমধ্যে সম্পূর্ণ অ্যান্ড্রয়েড সোর্স কোড ট্রি ইনস্টল করেছেন (আপনি এই বিষয়ে আরও তথ্য পেতে আমার অন্যান্য উত্তরটি পরীক্ষা করতে পারেন ), system/core/mkbootimg/ডিরেক্টরিতে যান (একটি অনুস্মারক হিসাবে, গুগলের এওএসপি উত্স কোড কেবল boot.imgফাইলটি তৈরির সরঞ্জাম সরবরাহ করে , তারা তা করে না যেকোন আনপ্যাকিং সরঞ্জাম সরবরাহ করুন),
  • যদি আপনার অন্য প্রয়োজন না হয় এবং এর প্রয়োজন নাও থাকে তবে একটি সহজ এবং দ্রুত সমাধান হ'ল কেবল সায়ানোজেনমডের অ্যান্ড্রয়েড_সিস্টেম_কোর্ডার ক্লোন করা :

    git clone https://github.com/CyanogenMod/android_system_core.git
    cd android_system_core/mkbootimg/
    

একবার সঠিক ডিরেক্টরিতে, সংকলন এবং ইনস্টল করুন:

gcc -o ./mkbootimg -I ../include ../libmincrypt/*.c ./mkbootimg.c
gcc -o ./unpackbootimg -I ../include ../libmincrypt/*.c ./unpackbootimg.c
sudo cp ./mkbootimg ./unpackbootimg /usr/bin/

মনে রাখবেন Google সি প্রতিস্থাপন করা হয় mkbootimgসঙ্গে একটি পাইথন সংস্করণ নতুন সংস্করণের কোন সংকলন এই কমান্ড জন্য আর প্রয়োজন হতে পারে, তাই।

এটিকে আপনার ফোনের সাথে যোগাযোগের জন্য আপনার কম্পিউটারে অ্যান্ড্রয়েড সরঞ্জাম ইনস্টল করতে হবে। আপনার প্রয়োজন হবে adb(অ্যান্ড্রয়েড ডিবাগ ব্রিজ, অ্যান্ড্রয়েডের ডিবাগ সাবসিস্টেমের সাথে যোগাযোগের অনুমতি দেওয়ার একটি শেল ইউটিলিটি), adbd(সম্পর্কিত ডেমন) এবং fastboot(আপনার ফোনের বুটলোডার সিস্টেমের সাথে যোগাযোগের অনুমতি দেয় এমন শেল ইউটিলিটি) need

আপনার পছন্দসই লিনাক্স বিতরণ তাদের একক বা পৃথক প্যাকেজগুলিতে সরবরাহ করতে পারে তবে সাধারণত তাদের সর্বদা "অ্যান্ড্রয়েড-সরঞ্জাম" বলা হয়:

  • দেবিয়ান / উবুন্টু: sudo apt-get install android-tools-{adb,adbd,fastboot}
  • ফেডোরা / সেন্টস: sudo yum install android-tools
  • openSUSE- এর: sudo zypper install android-tools

boot.imgফাইলটি আনুন

ROM .zip ফাইল থেকে বা ডিভাইস থেকে সরাসরি boot.img এক্সট্রাক্ট করুন:

  • স্টক রম। জিপ ফাইল থেকে: সুপারএসইউর মতো কিছু অ্যাপ্লিকেশনগুলি বুট.আইএমগটিকে সরাসরি ডিভাইসে পরিবর্তন করতে পারে, স্টকটির পরিবর্তে এ জাতীয় অ্যাপ্লিকেশনগুলি ভেঙে দেয়।
  • ডিভাইস থেকে সরাসরি: কিছু লোক পঠিত ইস্যু ক্ষতিগ্রস্ত নেতৃস্থানীয় প্রতিবেদন boot.img। আইএমও, এই সমস্যাগুলি সম্ভবত দুর্বল ইউএসবি কেবল বা ইউএসবি হাবের ব্যবহারের সাথে যুক্ত এবং সরাসরি ফোন কম্পিউটারে সরাসরি সংযোগ করার জন্য ভাল মানের কেবল ব্যবহার করে এড়ানো যায়। আপনার রুট মোডে এডিবি চালানোর দক্ষতাও প্রয়োজন (ব্যবহৃত রমের উপর নির্ভর করে এটি তুচ্ছ বা নাও হতে পারে)।

প্রথম পদ্ধতিটি অত্যন্ত সুস্পষ্ট: যে কোনও জিপ সফ্টওয়্যার দিয়ে .zip ফাইলটি বের করুন, boot.imgসংরক্ষণাগারের গোড়ায় ফাইলটি ঠিক সেখানে থাকা উচিত।

দ্বিতীয় পদ্ধতির জন্য, আপনাকে প্রথমে স্টোরেজ ডিভাইসটির (দুর্ভাগ্যক্রমে ডিভাইস-নির্দিষ্ট) পথ নির্ধারণ boot.imgকরতে হবে যেখানে এর সামগ্রী পুনরুদ্ধার করা যেতে পারে। আমি এর দুটি পদ্ধতি জানি:

  • ls /dev/block/platform/*/by-name/(যেখানে *কভার এখনও অন্য ডিভাইস নির্দিষ্ট ফোল্ডার নাম, সম্ভাবনাগুলি নীচের শুধুমাত্র ডিরেক্টরি হয় platform/), অনুসন্ধানে সঠিক নাম প্ল্যাটফর্ম নির্ভরশীল কিন্তু স্বাভাবিক ইন্দ্রিয় তোলে (কিছু উদাহরণ: boot, LNX"লিনাক্স") জন্য (আদ্যক্ষরা)। এই ডিরেক্টরিটিতে থাকা ফাইলগুলি আসলে প্রতীকী লিঙ্ক এবং কিছু লোক নিজেই লক্ষ্যবস্তুতে যেতে বিরক্ত করে, তবে আমি উচ্চ স্তরের নাম ভিত্তিক পথটি আটকে রাখার পরামর্শ দিচ্ছি যা আরও বেশি সময় ধরে ত্রুটির প্রবণতা বজায় রয়েছে। সুতরাং আপনি একটি পথ মত শেষ হবে /dev/block/platform/sdhci-tegra.3/by-name/LNX
  • কিছু (পুরানো?) ডিভাইসে, এর আউটপুট তদন্ত করে সঠিক ডিভাইসটি পাওয়া যায় cat /proc/mtd। আপনি যদি ডিভাইসটিকে লেবেলের সাথে mtd2সম্পর্কিত দেখেন "boot"তবে আপনি পাথটি ব্যবহার করবেন /dev/mtd2

এখন:

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

যদি এটি ইতিমধ্যে সম্পন্ন না হয়ে থাকে তবে আমি কম্পিউটারের পক্ষ থেকে এডিবি সার্ভারটি ম্যানুয়ালি শুরু করার পরামর্শ দিচ্ছি, এটি আপনাকে নিম্নলিখিত এডিবি কমান্ডের আচরণকে প্রভাবিত না করে ডিভাইসের পাশের আরএসএ কীটি সরাসরি যাচাই করার অনুমতি দেবে:

adb start-server

তারপরে ADB কে রুট মোডে স্যুইচ করুন:

adb root

অবশেষে, আপনার এই boot.imgজাতীয় কমান্ড ব্যবহার করে ডিভাইস থেকে সরাসরি ফাইলটি বের করতে সক্ষম হওয়া উচিত (উত্স এবং গন্তব্য পথ এবং নামগুলি উদাহরণ হিসাবে দেওয়া হয়, সেগুলি আপনার প্রয়োজনীয়তা এবং পছন্দগুলির সাথে মানিয়ে নিন):

adb pull /dev/block/platform/sdhci-tegra.3/by-name/LNX ./boot.img

কমান্ডটি সম্পূর্ণ পার্টিশনটি, ব্যবহৃত এবং মুক্ত স্থান উভয়ই অনুলিপি করবে, সুতরাং আশ্চর্য হবেন না যে ফলাফল boot.imgফাইলটি মূল boot.imgস্টক রম .zip ফাইলের সাথে আসা মূল ফাইলের চেয়ে বড় হবে , সামগ্রীটি নিজেই একই রকম থাকবে।

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

আসল boot.imgফাইলটি আনপ্যাক করুন

boot.imgপূর্বে সংকলিত কমান্ডটি ব্যবহার করে ফাইলটি আনপ্যাক করুন :

unpackbootimg -i ./boot.img

এটি আপনাকে boot.imgস্টকের ক্ষেত্রে সঠিক কাঠামোর সাথে একটি নতুন পুনর্নির্মাণ করতে প্রয়োজনীয় বেশ কয়েকটি তথ্য আউটপুট দেবে boot.img। তবে, আপনার নোটপ্যাডে তাড়াহুড়া করবেন না যেহেতু সায়ানোজেনমডগুলি পরে upackbootimgএকইভাবে আমরা ব্যবহার করব এমন কয়েকটি ফাইলে একই তথ্য সংরক্ষণ করে।

এই কমান্ডটি ইনপুট ফাইলের নামের সাথে যুক্ত হওয়া প্রত্যয় সহ বেশ কয়েকটি ফাইল উত্পন্ন করে:

  • *-second: এটি দ্বিতীয়-পর্যায়ের বুটলোডার, alচ্ছিক এবং শেষ ব্যবহারকারীর ফোনে খুব কমই ব্যবহৃত হয়। যদি এই ফাইলটি খালি থাকে (সর্বাধিক সাধারণ ক্ষেত্রে) তবে ফোনের বুটলোডার সরাসরি লিনাক্স কার্নেলকে কল করবে।
  • *-zImage: এটি লিনাক্স কার্নেল।
  • *-ramdisk.gzবা *-ramdisk.lz4: ডিভাইসের রুট ডিরেক্টরিটি পপুলেট করতে ব্যবহৃত র‌্যাম ডিস্ক। এক্সটেনশন ব্যবহৃত সংক্ষেপণ আলগোরিদিম উপর নির্ভর করে পৃথক।
  • *-dt: ডিভাইস ট্রি, জনবহুল /dev
  • বাকিগুলি হ'ল ছোট ফাইলগুলি প্রতিটি unpackbootimgআউটপুটে প্রদর্শিত মানগুলির একটি সংরক্ষণ করে । এই মানগুলি লিনাক্স কার্নেল এবং ঠিকানাগুলিতে বুটলোডার বুট করার সময় প্রতিটি বস্তু লোড করতে হবে এমন ঠিকানাগুলিতে প্রেরণের জন্য কমান্ড-লাইন প্যারামিটারটি সংজ্ঞায়িত করে।

প্রায়শই, boot.imgফোনের রুট ডিরেক্টরিতে সামগ্রী সম্পাদনা করতে সক্ষম হওয়ার জন্য একজনকে আনপ্যাক করে । উপরে প্রদর্শিত হিসাবে, এই বিষয়বস্তুটি *-ramdisk.gzবা *-ramdisk.lz4ফাইলে সংরক্ষণ করা হয় এবং এটি নীচের আদেশগুলি ব্যবহার করে বের করা যেতে পারে:

mkdir ./ramdisk
cd ./ramdisk/
gzip -dc ../boot.img-ramdisk.gz | cpio -imd

একটি এলজেড 4 সংক্ষেপিত র‌্যাম ডিস্কের জন্য, শেষ ধাপটি এর সাথে প্রতিস্থাপন করুন lz4 -d ../boot.img-ramdisk.lz4 | cpio -imd

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

নতুন new-boot.imgফাইলটি পুনর্নির্মাণ করুন

সায়ানোজেনমড রম বিল্ডিং প্রক্রিয়াটি ফাইলটি mkbootfsতৈরি করতে একটি অভ্যন্তরীণ সরঞ্জামের উপর নির্ভর করে boot.img(এটি বিল্ড / সরঞ্জাম / রিলিজটুলস / সাধারণ.পিতে ঘটে )। তবে, এই সরঞ্জামটি তৈরির পদক্ষেপগুলি আমার কাছে অকেজো হিসাবে জটিল বলে মনে হচ্ছে, যেখানে সিস্টেম-সরবরাহিত ব্যবহার করা cpioঠিক ততটা সূক্ষ্ম হিসাবে কাজ করে বলে মনে হচ্ছে। দুজনের মধ্যে মূল পার্থক্যটি, mkbootfsস্যুস কোডে (খুব) দ্রুত চেক করার পরে আমার বোঝার অনুসারে মনে হয় যে পরবর্তীটি বিন্দুযুক্ত ফাইল এবং /rootডিরেক্টরিটি আর্কাইভের ডিরেক্টরিতে অন্তর্ভুক্ত না করে কিছু বিচক্ষণতা ব্যবস্থা প্রয়োগ করে যখন cpioনীচে ভিত্তিক পদ্ধতিতে পুরো অনির্বাণে পুরো নির্বাচিত ডিরেক্টরি গাছটি অন্ধভাবে রেখে দেবে।

উপসংহার: খুব অল্প সুবিধার সাথে সংকলন করার জন্য অহেতুক জটিল, সুতরাং আসুন সিস্টেম সরবরাহিত সরঞ্জামগুলিতে থাকি!

ramdiskউপরে নির্মিত ডিরেক্টরি থেকে নতুন র‌্যাম ডিস্ক তৈরি করে শুরু করুন :

find . ! -name . | LC_ALL=C sort | cpio -o -H newc -R root:root | gzip > ../new-boot.img-ramdisk.gz

অথবা, আপনার যদি একটি এলজেড 4 সংরক্ষণাগার তৈরি করতে হয়:

find . ! -name . | LC_ALL=C sort | cpio -o -H newc -R root:root | lz4 > ../new-boot.img-ramdisk.lz4

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

new-boot.imgফাইলটি নিজেই তৈরি করতে এখন পিতামাতার ডিরেক্টরিতে যান ।

cd ..

উপরে যেমন দেখা গেছে, সায়ানোজেনমডের unpackbootimgকমান্ড প্রতিটি প্যারামিটার দ্বারা প্রত্যাশিত একটি ফাইল তৈরি করে mkbootimg। অতএব, আপনাকে যা করতে হবে তা হল mkbootimg -hসমস্ত পরামিতিগুলির একটি তালিকা পেতে একটি জারি করা, তারপরে ম্যাচিং ফাইলটি ব্যবহার করে তাদের প্রত্যেককে উপযুক্ত মান হিসাবে সেট করুন। নোট করুন যে কিছু প্যারামিটারগুলি ফাইলের পথের প্রত্যাশা করে অন্যরা ফাইলের সামগ্রীটি মূল্য হিসাবে প্রাপ্ত করার প্রত্যাশা করে। নীচে ফলাফল কমান্ডের একটি উদাহরণ দেখুন:

mkbootimg --kernel ./boot.img-zImage \
--ramdisk ./new-boot.img-ramdisk.gz \
--second ./boot.img-second \
--cmdline "$(cat ./boot.img-cmdline)" \
--base "$(cat ./boot.img-base)" \
--pagesize "$(cat ./boot.img-pagesize)" \
--dt ./boot.img-dt \
--ramdisk_offset "$(cat ./boot.img-ramdisk_offset)"
--second_offset "$(cat ./boot.img-second_offset)" \
--tags_offset "$(cat ./boot.img-tags_offset)" \
--output ./new-boot.img

এখানে মাত্র দুটি পরামিতি সেট করা নেই:

  • --board: আমার উপলব্ধি অনুসারে, এটি কেবলমাত্র একটি তথ্য ক্ষেত্র যা ফলাফলের চিত্রটিতে একটি মডেল নাম সন্নিবেশ করতে দেয়।
  • --id: এটির কোনও মান প্রত্যাশা নেই, চিত্রটি তৈরি হওয়ার পরে এটি একটি অনন্য সনাক্তকারীকে মুদ্রণ করবে (একটি টাইমস্ট্যাম্প এবং একটি চেকসামের সংমিশ্রণ)।

new-boot.imgডিভাইসে ফাইলটি ফ্ল্যাশ করুন

  • ফাস্টবूट মোডে ডিভাইসটি শুরু করুন (ওরফে বুটলোডার মোড, সাধারণত পাওয়ার এবং ভলিউম আপ বোতাম ধারণ করে)।
  • ইউএসবি কেবলটি সংযুক্ত করুন।
  • ডিভাইসটি সঠিকভাবে সনাক্ত হয়েছে কিনা তা পরীক্ষা করুন:

    sudo fastboot devices
    
  • নতুন রমটি ব্যবহার করে বুট করার চেষ্টা করুন (এটি এখনও ঝলকানি ছাড়াই, সুতরাং সমস্যাটির ক্ষেত্রে আপনি কেবল ফোনটি ট্রেইলে ফিরে পেতে পুনরায় চালু করতে হবে, ./new-boot.imgফাইলটির নামটি আপনার নিজের সাথে প্রতিস্থাপন করুন ):

    sudo fastboot boot ./new-boot.img
    
  • ফোনটি যদি নতুন বুট চিত্রের সাথে সফলভাবে কাজ করে, তবে দ্রুতবूट মোডে ফিরে যান এবং স্থায়ীভাবে এটি ফ্ল্যাশ করুন:

    sudo fastboot flash boot ./new-boot.img
    sudo fastboot reboot
    

উপসংহার

এই পদ্ধতিটি প্রথমে ভয়ঙ্কর মনে হতে পারে তবে আপনি একবার এটি পেয়ে গেলে আপনি দেখতে পাবেন এটি আসলে তা নয়।

"উদ্বেগজনক" দিকটি এসেছে যে কোনও একটি "অ্যান্ড্রয়েড সিস্টেম" নেই: প্রচুর নির্মাতারা এবং রম সরবরাহকারী এমন পরিবর্তন করেন যা একটি সূক্ষ্ম পথের পার্থক্য থেকে সম্পূর্ণ অ-মানক পরিবেশের মধ্যে হতে পারে।

আপনাকে যা করতে হবে তা হল আপনার নির্দিষ্ট ডিভাইসের ভঙ্গি নির্ধারণ করা এবং তারপরে আপনার কাছে উপযুক্ত কয়েকটি আদেশ কী commands একবার এগুলি পাওয়ার পরে আপনি এগুলি আটকে রাখতে পারেন এবং এমনকি আপনার যদি প্রায়শই প্রয়োজন হয় তবে সহজেই এগুলি স্ক্রিপ্ট করতে পারেন।

আমি স্বেচ্ছায় মাঝে মাঝে তুলনামূলকভাবে নিম্ন-স্তরের বিশদগুলিতে গিয়েছিলাম কারণ এটি আপনাকে আপনার সমস্যাগুলি আরও সহজেই সমস্যার সমাধান করবে make আপনার নতুন boot.imgফাইলটি তৈরি এবং ফ্ল্যাশ করতে আপনি কিছু "সহজ" অস্বচ্ছ ইউটিলিটি ব্যবহার করবেন এবং দেখুন যে আপনার ডিভাইসটি এটি দিয়ে শুরু করতে পারে না, কোন পদক্ষেপটি ভুল হয়েছে তা নির্ধারণ করা আপনার পক্ষে আরও কঠিন। এখানে, প্রতিটি পদক্ষেপে, আপনি মূল boot.imgফাইল থেকে আসা ডেটা বা ফোনে যে তথ্য দেখানো হয় তার সাথে তুলনা করতে সক্ষম হবেন বা উদাহরণস্বরূপ boot.imgফাইলটি মূল বা সদ্য উত্পন্ন যেকোনটি দিয়ে পুনর্নির্মাণের চেষ্টা করবেন এতে কোনও পার্থক্য রয়েছে কিনা তা পরীক্ষা করার জন্য র‌্যাম ডিস্ক ফাইল (এটি সমস্যাটি যদি boot.imgর্যাম ডিস্ক ফাইল তৈরির পদ্ধতি থেকে আসে তবে এটি আপনাকে চিহ্নিত করতে দেয় )।


2

অ্যান্ড্রয়েড কিচেন ব্যবহার করুন এর অধীনে boot.img আনপ্যাক / পুনঃত্যাগ করার একটি বিকল্প রয়েছে Advanced options


দুর্ভাগ্যক্রমে মূল লেখক আনুষ্ঠানিকভাবে অ্যান্ড্রয়েড কিচেন বজায় রাখতে থামিয়েছেন: " এই প্রকল্পটি ২০১৩ সালের অবধি অবসর নিয়েছে, কারণ আমি সমর্থন করার জন্য ডিভাইসের সংখ্যা, চাহিদা, খারাপ স্বাস্থ্য এবং সাহায্যের জন্য ধ্রুবক অনুরোধে অভিভূত হয়েছি "। কয়েকটি কাঁটাচামচ তৈরি করা হয়েছে (আমি আমার উত্তরে কিছু লিঙ্ক দিই), তবে আমি জানি না তারা কতটা সমর্থিত (আমি ইস্যু উত্থাপনের কোনও সুস্পষ্ট পাবলিক উপায় খুঁজে পাইনি বা উদাহরণ হিসাবে কোনও বিবর্তনের অনুরোধ করেছি)।
হোয়াইট উইন্টার ওল্ফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.