কোনও ইউএসবি ড্রাইভ থেকে অ্যান্ড্রয়েড ফোন বুট করা কি সম্ভব?


17

বাস চালিত ইউএসবি ড্রাইভ ** থেকে অ্যান্ড্রয়েড ফোন * বুট করার কোনও উপায় আছে কি? যদি তা হয় তবে এটি অর্জনের পদক্ষেপগুলি কী কী?

* যেমন ইউএসবি ওটিজি কার্যকারিতা সহ এক।

** যেমন একটি ফ্ল্যাশ ড্রাইভ।

উত্তর:


23

নির্ধারিত লক্ষ্যটি কী এবং কেন তা ব্যাখ্যা করুন?

অ্যান্ড্রয়েড ফোনগুলির নিজস্ব বুট-লোডার রয়েছে এবং অন্য উপায়ে ওভাররাইড করা যায় না।

এটি কোনও পিসির বিআইওএসের মতো নয় যেখানে আপনি নির্দিষ্ট ডিভাইস যেমন নেটওয়ার্ক পিএক্সই, ইউএসবি, প্রাথমিক / মাধ্যমিক এইচডিডি থেকে বুটের ক্রমটি স্যুইচ করতে পারেন ..

সম্পাদনা:

নীচের মন্তব্যের পরে, এবং ওপির প্রশ্নের সাথে সম্পর্কিত

বাস চালিত ইউএসবি ড্রাইভের মাধ্যমে অ্যান্ড্রয়েড ফোন (যেমন ইউএসবি ওটিজি কার্যকারিতা সহ একটি) বুট করার কোনও উপায় আছে কি?

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

এল কে কার্নেলটি এমএসএম চিপসেটের জন্য স্নাপড্রাগন (স্ন্যাপড্রাগন) এর কোয়ালকমের ডি-ফ্যাক্টো স্ট্যান্ডার্ড এবং এটি সনি, মটোরোলা, এলজি, স্যামসাংয়ের মতো নির্মাতারা গ্রহণ করেছেন এবং এওএসপি উত্সের অধীনে পাওয়া যাবে bootable/bootloader

যদি ( ভলিউম ডাউন কী টিপানো হয়? ) তবে

  • /recoveryপার্টিশন থেকে চেইন-লোড কার্নেলটি স্মৃতিতে নির্দিষ্ট ঠিকানায় প্রবেশ করুন এবং এতে ঝাঁপিয়ে পড়ুন এবং পুনরুদ্ধারের পরিবেশটি আনতে সম্পাদন শুরু করুন

আর

  • /systemপার্টিশন থেকে চেইন-লোড কার্নেলটি মেমরির নির্দিষ্ট ঠিকানায় চলে যায় এবং এতে ঝাঁপিয়ে পড়ে এবং অ্যান্ড্রয়েড পরিবেশ আনতে কার্যকর করা শুরু করে।

শেষ যদি.

যেহেতু lk এর মধ্যে কার্নেলটি বেশ সীমাবদ্ধ, বিবেচনা করে যে কার্নেলের বাইনারি চিত্রটি চিপের মধ্যে পুড়ে গেছে এবং সুতরাং এটির পরিবর্তনের কোনও উপায় নেই । এবং এছাড়াও উল্লেখ করা উচিত যে LK রয়েছে fastbootঝলকানি প্রস্তুতি প্রোটোকল /boot, /recovery, /systemএবং /dataপার্টিশন। বুট করার দুটি ক্রম রয়েছে, প্রাথমিক বুট এবং গৌণ বুট যেমন রয়েছে:

  • প্রাথমিক বুট -> এলকে (যুক্তির ফলাফলের উপর নির্ভর করে)
  • সেকেন্ডারি বুটে যান -> /bootবা/recovery

পার্শ্ব নোট: স্যামসুং যখন মোডিংয়ের কথা আসে তখন তাদের প্যাকেজে পিবিএল / এসবিএল (যথাক্রমে প্রাথমিক বুট লোডার এবং মাধ্যমিক বুট লোডার) খুব পছন্দ করে। স্যামসুংয়ের কথাটি হ'ল, কিছু হ্যান্ডসেটগুলিতে, পিবিএল এবং এসবিএল এনক্রিপ্ট করা হতে পারে (স্যামসাং ওয়েভ জিটি-এস 8500 এর একটি উদাহরণ, যেখানে বুট লোডারগুলির মধ্যে ডিআরএমের কারণে এটি অ্যান্ড্রয়েডকে পোর্ট করা প্রায় অসম্ভব ছিল যা একটি দুঃস্বপ্ন ছিল was এটি মোকাবেলা করা এবং এটি অত্যন্ত কঠিন করে তোলা, তবুও, এটি FOTA কোডে শোষণের মাধ্যমে কাজ করার পদ্ধতি!)

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

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

আপনি যদি কৌতূহলী হন তবে উপরের এলকেতে কোয়ালকম এন্ট্রিটি যা ছোট সি উত্সর একটি অংশ যা এআরএম অ্যাসেমব্লিকে অন্তর্ভুক্ত করেছে এবং এতে জেলিবিনের এওএসপি উত্সটিতে পাওয়া গেছেbootable/bootloader/legacy/usbloader/main.c

int boot_linux_from_flash(void)
{
    boot_img_hdr *hdr = (void*) raw_header;
    unsigned n;
    ptentry *p;
    unsigned offset = 0;
    const char *cmdline;

    if((p = flash_find_ptn("boot")) == 0) {
        cprintf("NO BOOT PARTITION\n");
        return -1;
    }

    if(flash_read(p, offset, raw_header, 2048)) {
        cprintf("CANNOT READ BOOT IMAGE HEADER\n");
        return -1;
    }
    offset += 2048;

    if(memcmp(hdr->magic, BOOT_MAGIC, BOOT_MAGIC_SIZE)) {
        cprintf("INVALID BOOT IMAGE HEADER\n");
        return -1;
    }

    n = (hdr->kernel_size + (FLASH_PAGE_SIZE - 1)) & (~(FLASH_PAGE_SIZE - 1));
    if(flash_read(p, offset, (void*) hdr->kernel_addr, n)) {
        cprintf("CANNOT READ KERNEL IMAGE\n");
        return -1;
    }
    offset += n;

    n = (hdr->ramdisk_size + (FLASH_PAGE_SIZE - 1)) & (~(FLASH_PAGE_SIZE - 1));
    if(flash_read(p, offset, (void*) hdr->ramdisk_addr, n)) {
        cprintf("CANNOT READ RAMDISK IMAGE\n");
        return -1;
    }
    offset += n;

    dprintf("\nkernel  @ %x (%d bytes)\n", hdr->kernel_addr, hdr->kernel_size);
    dprintf("ramdisk @ %x (%d bytes)\n\n\n", hdr->ramdisk_addr, hdr->ramdisk_size);

    if(hdr->cmdline[0]) {
        cmdline = (char*) hdr->cmdline;
    } else {
        cmdline = board_cmdline();
        if(cmdline == 0) {
            cmdline = "mem=50M console=null";
        }
    }
    cprintf("cmdline = '%s'\n", cmdline);

    cprintf("\nBooting Linux\n");

    create_atags(ADDR_TAGS, cmdline,
                 hdr->ramdisk_addr, hdr->ramdisk_size);

    boot_linux(hdr->kernel_addr);
    return 0;
}

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

ঠিক ... আকর্ষণীয় - এরকম কেস এর আগে কখনও শুনেনি - যাইহোক - কেন? চিন্তার জন্য খাদ্য, যেখানে আপনি একটি যেমন পাসকোড প্রবেশ করবে? অ্যান্ড্রয়েড আইসিএসের ওপরের দিকে পুরো ভলিউম আইআইআরসি এনক্রিপ্ট করার ক্ষমতা রয়েছে - আপনি কি এটি সন্ধান করেন নি?
t0mm13b

পাসকোডটি ড্রাইভে অন্তর্নির্মিত কীপ্যাড ব্যবহার করে প্রবেশ করানো হবে। (আপনি যদি এটির অর্থ বোঝেন না তবে আমি উল্লিখিত ড্রাইভগুলি দেখুন)) এবং হ্যাঁ, আমি অ্যান্ড্রয়েডের অন্তর্নির্মিত এনক্রিপশনটি দেখেছি, তবে (ক) এটি কোনও ত্রুটি ছাড়াই নেই (দেখুন, যেমন সুরক্ষা)। stackexchange.com/q/10529 ; v.gd/6hOcmd ), (খ) এটা সব ফোনে কাজ করে না, এমনকি যারা আছে ছাত্রশিবির + + প্রস্তুতকারকদের থেকে পাওয়া ROM- র বিষয়বস্তু (যেমন কিছু এক্সপেরিয়া মডেলের), এবং (গ) অন্যান্য হয় সম্ভাব্য ব্যবহারের ক্ষেত্রে যার জন্য ইউএসবি ভর স্টোরেজ ডিভাইস থেকে ফোন / ট্যাবলেটটি বুট করতে সক্ষম হওয়াই বাঞ্ছনীয়।
সাম্পাব্লুকপার

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

2
সংক্ষেপে - এটি করার শূন্য উপায় আছে , আপনি ভুলে যাবেন বলে মনে হচ্ছে যে বুটলোডারের সাথে সম্পর্কিত আমার মন্তব্যে জোর দেওয়া এবং স্মার্টফোনে BIOS এর কোনওটিই নেই যে .... শুধু বলছিলেন।
t0mm13b

7

তবে এটি এক অর্থেই সম্ভব। @ T0mm13b এর উত্তরে উল্লিখিত সীমাবদ্ধতার পরিপ্রেক্ষিতে এটি বোঝা যায় যে উল্লিখিত বুট লোডার (lk) এটি করতে অক্ষম। সুতরাং, আমরা fastboot(পরীক্ষার জন্য) থেকে একটি কাস্টম কার্নেল বুট করি , যা বুট হয়, ওটিজি কার্যকারিতা সক্ষম করে এবং একবার সংযুক্ত থাকা ওটিজি ডিভাইসে কোনও বৈধ কার্নেল পাওয়া যায়, মেমরিতে থাকা চেইনলোডগুলি এবং এটির নিয়ন্ত্রণ দিয়ে যায়। এটি সম্ভবত TWRP এর মতো আধুনিক কাস্টম পুনরুদ্ধারগুলিতেও সংহত করা যেতে পারে যা উভয়টিতে ওটিজি এবং (কিছু ক্ষেত্রে) মাল্টিরোম সমর্থন রয়েছে।

এটি প্রকৃতপক্ষে একটি Nexus 9 ট্যাবলেটে উবুন্টু বুট করতে ব্যবহৃত হয়েছে, এই পদ্ধতিটি ব্যবহার করে:

  1. fastboot boot <otg_chainloader_kernel>
  2. <otg_chainloader_kernel> বুট করে এবং ওটিজি সক্ষম করে এবং ওটিজি ডিভাইস সংযুক্ত হওয়ার জন্য অপেক্ষা করে।
  3. ডিভাইসটি পিসি থেকে সংযোগ বিচ্ছিন্ন হয়ে গেছে এবং ইউএসবি ফ্ল্যাশ ড্রাইভ বুটযোগ্য উবুন্টু চিত্রটি এটি ওটিজির মাধ্যমে সংযুক্ত রয়েছে is
  4. <otg_chainloader_kernel> ওটিজি ডিভাইসে একটি বৈধ লিনাক্স কার্নেল সনাক্ত করে এবং মেমরিতে চেইনলোড করার পরে এটির নিয়ন্ত্রণ নিয়ন্ত্রণ করে।

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

উত্স: এক্সডিএ-বিকাশকারী নেক্সাস 9 সাবফরম


অ্যান্ড্রয়েডের জন্য এটি করা কি সম্ভব যেহেতু আমি ইনস্টল না করেই এন পূর্বরূপটি বুট করতে পারি
সুসি ডোগা

@ সুসিডোগা, আমার ধারণা টিডব্লিউআরপি মাল্টিমরোম ওটিজি বুট সমর্থন করে? এটি উপরের কৌশলটি AFAIK ব্যবহার করে, কেবল সমস্ত fastbootএস ছাড়াই । kexec-hardbootTWRP MultiROM দ্বারা ব্যবহৃত কার্নেল জন্য প্যাচ মূলত OTG-Chainloader-Kernelসম্পর্কে আমি আলাপ।
তমোঘনা চৌধুরী

এখন আপনি এই অনুশীলনটি চেষ্টা করতে পারেন কোনও ডিভাইসের উপরও এটি নির্ভর করে। নেক্সাস 9 এবং নেক্সাস প্লেয়ারের টিডব্লিউআরপি রয়েছে তবে মাল্টিমরোম জিনিস এগুলিতে কাজ করে না (x64 / এআরএম 64 ইস্যু?) বর্তমান Nexii সম্পর্কেও আইডিকে।
তমোঘনা চৌধুরী

0

এটি দৃশ্যমান এবং আমি আমার এসার আইকনিয়া ট্যাবলেটে এটি করেছি !!!!

আপনার পিসিতে একটি ফ্ল্যাশ ড্রাইভ সংযুক্ত করুন এবং ফ্যাট 32 এ ফর্ম্যাট করতে আপনার ফ্ল্যাশ ড্রাইভে আইসো / ডিডি পোর্ট করতে রফাস ব্যবহার করুন

এটি ওটিজে এবং আপনার ফোন / ট্যাবলেটে সংযুক্ত করুন .. পাওয়ার কীটি ধরে রাখুন এবং ভলিউমটি আলতো চাপুন যদি এটি বুট না করে তবে পাওয়ার কীটি ধরে রাখুন এবং ভলিউমটি ট্যাপ করুন

তারপরে ভলিউম কীগুলি ব্যবহার করে ইউডিস্ক (আপনার ফ্ল্যাশ ড্রাইভ ব্র্যান্ড) বা SATA- এ চলে যাবে; ইউডিস্ক (এটি আপনার ইউএসবি ব্র্যান্ড হতে পারে না, এটি ইউএসবি স্টোরেজ বলতে পারে) এবং নিশ্চিত করতে পাওয়ার কীটি ক্লিক করুন

ঠিক আছে, মেনুতে বুট করার সময় আমার মাঝামাঝি সমস্যা ছিল, তাই আমি কোনওভাবে বুট করতে কার্নেলটি এড়াতে সক্ষম হয়েছি এবং এর মাধ্যমে অ্যান্ড্রয়েড বুট করা বন্ধ করে দিয়েছি

আমি মনে করি এটি এর মতো ছিল: আমি পিসির সাথে সংযুক্ত হয়েছি, তারপরে ট্যাবলেট থেকে সমস্ত অ্যাসেসেক্ট মুছে ফেলেছি, তবে অ্যান্ড্রয়েড ফোল্ডারটি অনুলিপি করছি

কার্নেলটি সরানো হয়েছিল এবং বুটের পরে ইউএসবি হাবের সাথে পিসির সাথে সংযুক্ত হয়ে যায়

আশা করি আমি সাহায্য করেছি :)


এটি অবশ্যই কিছু ব্যতিক্রমী এসসি হতে পারে, ইউইএফআই সমর্থন করতে পারে। অ্যান্ড্রয়েড ডিভাইসে এই দিনগুলিতে ব্যবহার করা হয়নি এমন অনেক এসসি আপনাকে বুট অর্ডার কনফিগার করতে দেয়।
ইরফান লতিফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.