বাস চালিত ইউএসবি ড্রাইভ ** থেকে অ্যান্ড্রয়েড ফোন * বুট করার কোনও উপায় আছে কি? যদি তা হয় তবে এটি অর্জনের পদক্ষেপগুলি কী কী?
* যেমন ইউএসবি ওটিজি কার্যকারিতা সহ এক।
** যেমন একটি ফ্ল্যাশ ড্রাইভ।
বাস চালিত ইউএসবি ড্রাইভ ** থেকে অ্যান্ড্রয়েড ফোন * বুট করার কোনও উপায় আছে কি? যদি তা হয় তবে এটি অর্জনের পদক্ষেপগুলি কী কী?
* যেমন ইউএসবি ওটিজি কার্যকারিতা সহ এক।
** যেমন একটি ফ্ল্যাশ ড্রাইভ।
উত্তর:
নির্ধারিত লক্ষ্যটি কী এবং কেন তা ব্যাখ্যা করুন?
অ্যান্ড্রয়েড ফোনগুলির নিজস্ব বুট-লোডার রয়েছে এবং অন্য উপায়ে ওভাররাইড করা যায় না।
এটি কোনও পিসির বিআইওএসের মতো নয় যেখানে আপনি নির্দিষ্ট ডিভাইস যেমন নেটওয়ার্ক পিএক্সই, ইউএসবি, প্রাথমিক / মাধ্যমিক এইচডিডি থেকে বুটের ক্রমটি স্যুইচ করতে পারেন ..
নীচের মন্তব্যের পরে, এবং ওপির প্রশ্নের সাথে সম্পর্কিত
বাস চালিত ইউএসবি ড্রাইভের মাধ্যমে অ্যান্ড্রয়েড ফোন (যেমন ইউএসবি ওটিজি কার্যকারিতা সহ একটি) বুট করার কোনও উপায় আছে কি?
জেনেরিক বুট-লোডার (* যা চিপ-সেটে থাকে) ইউএসবি ইত্যাদি সম্পর্কে কোন জ্ঞান রাখে না, কারণ এলকে (লিটল কার্নেল) পুনরুদ্ধারের জন্য চেইন-লোড বা সরাসরি অ্যান্ড্রয়েড পরিবেশে বুট করার জন্য কীস্ট্রোকগুলি আটকে রাখার বিষয়ে বেশি উদ্বিগ্ন (এই উদাহরণে ভোল + ডাউন কী ধরে রাখার সময়) - সিউডো কোডে ( এটি এলকের প্রসঙ্গ / দিক থেকে এবং এছাড়াও, পার্টিশনগুলি কীভাবে পড়তে হবে সম্পর্কিত মেমরি ঠিকানাগুলি এই এলকে-তে কঠোরভাবে কোডড থাকে তাই এটি হবে কিভাবে যুক্তি প্রক্রিয়া করতে জানেন! )
এল কে কার্নেলটি এমএসএম চিপসেটের জন্য স্নাপড্রাগন (স্ন্যাপড্রাগন) এর কোয়ালকমের ডি-ফ্যাক্টো স্ট্যান্ডার্ড এবং এটি সনি, মটোরোলা, এলজি, স্যামসাংয়ের মতো নির্মাতারা গ্রহণ করেছেন এবং এওএসপি উত্সের অধীনে পাওয়া যাবে 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 এর উত্তরে উল্লিখিত সীমাবদ্ধতার পরিপ্রেক্ষিতে এটি বোঝা যায় যে উল্লিখিত বুট লোডার (lk) এটি করতে অক্ষম। সুতরাং, আমরা fastboot
(পরীক্ষার জন্য) থেকে একটি কাস্টম কার্নেল বুট করি , যা বুট হয়, ওটিজি কার্যকারিতা সক্ষম করে এবং একবার সংযুক্ত থাকা ওটিজি ডিভাইসে কোনও বৈধ কার্নেল পাওয়া যায়, মেমরিতে থাকা চেইনলোডগুলি এবং এটির নিয়ন্ত্রণ দিয়ে যায়। এটি সম্ভবত TWRP এর মতো আধুনিক কাস্টম পুনরুদ্ধারগুলিতেও সংহত করা যেতে পারে যা উভয়টিতে ওটিজি এবং (কিছু ক্ষেত্রে) মাল্টিরোম সমর্থন রয়েছে।
এটি প্রকৃতপক্ষে একটি Nexus 9 ট্যাবলেটে উবুন্টু বুট করতে ব্যবহৃত হয়েছে, এই পদ্ধতিটি ব্যবহার করে:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
বুট করে এবং ওটিজি সক্ষম করে এবং ওটিজি ডিভাইস সংযুক্ত হওয়ার জন্য অপেক্ষা করে।<otg_chainloader_kernel>
ওটিজি ডিভাইসে একটি বৈধ লিনাক্স কার্নেল সনাক্ত করে এবং মেমরিতে চেইনলোড করার পরে এটির নিয়ন্ত্রণ নিয়ন্ত্রণ করে।এখন, আপনি যদি চান, আপনি একইভাবে একটি সামঞ্জস্যপূর্ণ অ্যান্ড্রয়েড রম চিত্র বুট করতে পারেন তবে মনে রাখবেন যে ওটিজি ড্রাইভটি নেটিভ ওএসে ফিরে যাওয়ার সিদ্ধান্ত না নেওয়া পর্যন্ত ডিভাইসের সাথে সংযুক্ত রাখতে হবে (যেহেতু সমস্ত অ্যাপ্লিকেশন লোড হবে) থেকে এবং সমস্ত ডেটা ইউএসবি ফ্ল্যাশ ড্রাইভে লিখিত হবে, যদি না পুরো অ্যান্ড্রয়েড রমকে র্যামডিস্ক হিসাবে কনফিগার করা যায় না (কখনও পপি লিনাক্সের কথা শুনেছেন?) যা সাধারণ অ্যান্ড্রয়েড ডিভাইসের বর্তমান মেমরির ক্ষমতা এবং আকারের মাপ দেয় রম নিজেই বর্তমানে অবৈধ) এটি ইউটিফাইড ডেটা / চার্জার পোর্ট সহ বেশিরভাগ ডিভাইসে ওটিজি ওএসে বুট করার সময় চার্জিংকে বাদ দেয়।
fastboot
এস ছাড়াই । kexec-hardboot
TWRP MultiROM দ্বারা ব্যবহৃত কার্নেল জন্য প্যাচ মূলত OTG-Chainloader-Kernel
সম্পর্কে আমি আলাপ।
এটি দৃশ্যমান এবং আমি আমার এসার আইকনিয়া ট্যাবলেটে এটি করেছি !!!!
আপনার পিসিতে একটি ফ্ল্যাশ ড্রাইভ সংযুক্ত করুন এবং ফ্যাট 32 এ ফর্ম্যাট করতে আপনার ফ্ল্যাশ ড্রাইভে আইসো / ডিডি পোর্ট করতে রফাস ব্যবহার করুন
এটি ওটিজে এবং আপনার ফোন / ট্যাবলেটে সংযুক্ত করুন .. পাওয়ার কীটি ধরে রাখুন এবং ভলিউমটি আলতো চাপুন যদি এটি বুট না করে তবে পাওয়ার কীটি ধরে রাখুন এবং ভলিউমটি ট্যাপ করুন
তারপরে ভলিউম কীগুলি ব্যবহার করে ইউডিস্ক (আপনার ফ্ল্যাশ ড্রাইভ ব্র্যান্ড) বা SATA- এ চলে যাবে; ইউডিস্ক (এটি আপনার ইউএসবি ব্র্যান্ড হতে পারে না, এটি ইউএসবি স্টোরেজ বলতে পারে) এবং নিশ্চিত করতে পাওয়ার কীটি ক্লিক করুন
ঠিক আছে, মেনুতে বুট করার সময় আমার মাঝামাঝি সমস্যা ছিল, তাই আমি কোনওভাবে বুট করতে কার্নেলটি এড়াতে সক্ষম হয়েছি এবং এর মাধ্যমে অ্যান্ড্রয়েড বুট করা বন্ধ করে দিয়েছি
আমি মনে করি এটি এর মতো ছিল: আমি পিসির সাথে সংযুক্ত হয়েছি, তারপরে ট্যাবলেট থেকে সমস্ত অ্যাসেসেক্ট মুছে ফেলেছি, তবে অ্যান্ড্রয়েড ফোল্ডারটি অনুলিপি করছি
কার্নেলটি সরানো হয়েছিল এবং বুটের পরে ইউএসবি হাবের সাথে পিসির সাথে সংযুক্ত হয়ে যায়
আশা করি আমি সাহায্য করেছি :)