क्या एक बस-संचालित यूएसबी ड्राइव ** से एक एंड्रॉइड फोन * बूट करने का कोई तरीका है? यदि हां, तो इसे प्राप्त करने के लिए क्या कदम हैं?
* यूएसबी ओटीजी कार्यक्षमता के साथ एक।
** एक फ्लैश ड्राइव।
क्या एक बस-संचालित यूएसबी ड्राइव ** से एक एंड्रॉइड फोन * बूट करने का कोई तरीका है? यदि हां, तो इसे प्राप्त करने के लिए क्या कदम हैं?
* यूएसबी ओटीजी कार्यक्षमता के साथ एक।
** एक फ्लैश ड्राइव।
जवाबों:
कृपया स्पष्ट करें कि इच्छित लक्ष्य क्या है और क्यों?
एंड्रॉइड फोन के अपने बूट-लोडर हैं और अन्य तरीकों से इसे ओवरराइड नहीं किया जा सकता है।
यह एक पीसी के BIOS की तरह नहीं है जहां आप कुछ उपकरणों जैसे कि नेटवर्क पीएक्सई, यूएसबी, प्राइमरी / सेकेंडरी एचडीडी से बूट करने के लिए बूट करने का क्रम बदल सकते हैं।
नीचे टिप्पणी के बाद, और ओपी के सवाल के संबंध में
क्या एक बस-संचालित यूएसबी ड्राइव के माध्यम से एक एंड्रॉइड फोन (जैसे यूएसबी ओटीजी कार्यक्षमता के साथ।) बूट करने का कोई तरीका है
जेनेरिक बूट-लोडर (* जो चिप-सेट पर रहता है) को USB आदि का कोई ज्ञान नहीं है, क्योंकि lk (लिटिल कर्नेल) चेन-लोड में रिकवरी या सीधे एंड्रॉइड वातावरण में बूट करने के लिए कीस्ट्रोक्स को फंसाने के बारे में अधिक चिंतित है। (जब इस उदाहरण में वॉल्यूम + डाउन की को दबाए रखें) - छद्म-कोड में ( यह lk के संदर्भ / पहलू से है, और यह भी, कि कैसे विभाजन को पढ़ने के लिए संबंधित स्मृति पते इस lk में हार्ड-कोडित हैं इसलिए पता है कि तर्क की प्रक्रिया कैसे करें! )
Lk कर्नेल MSM चिपसेट (स्नैपड्रैगन) के लिए क्वालकॉम द्वारा डी-फैक्टो मानक है और सोनी, मोटोरोला, एलजी, सैमसंग जैसे निर्माताओं द्वारा अपनाया गया है और इसके तहत AOSP स्रोत में पाया जा सकता है bootable/bootloader
।
अगर ( क्या वॉल्यूम डाउन कुंजी दबाया गया है? ) तो
/recovery
विभाजन से विशेष पते में मेमोरी में डाल दिया जाता है और पुनर्प्राप्ति वातावरण को लाने के लिए इसमें कूदना और निष्पादन शुरू करना होता हैअन्य
/system
विभाजन से विशेष रूप से स्मृति में संबोधित करते हैं और इसे कूदते हैं और एंड्रॉइड वातावरण को लाने में निष्पादन शुरू करते हैं।अगर अंत।
जैसा कि lk के भीतर कर्नेल बहुत सीमित है, यह देखते हुए कि कर्नेल की द्विआधारी छवि चिप में जल गई है और इसलिए इसे संशोधित करने का कोई तरीका नहीं है । और यह भी उल्लेखनीय है कि लालकृष्ण शामिल fastboot
चमकती के लिए तैयारी में प्रोटोकॉल /boot
, /recovery
, /system
और /data
विभाजन। बूट करने के लिए दो क्रम हैं, प्राथमिक बूट और द्वितीयक बूट जैसा कि यह है:
/boot
या/recovery
साइड नोट: सैमसंग पीबीएल / एसबीएल (जो कि प्राथमिक बूट लोडर और सेकेंडरी बूट लोडर क्रमशः है) के शौकीन हैं, जब यह मोडिंग की बात आती है। सैमसंग के बारे में, यह है कि, कुछ हैंडसेट में, PBL और SBL को एन्क्रिप्ट किया जा सकता है (Samsung Wave GT-S8500 एक ऐसा उदाहरण है, जहां बूट लोडर के भीतर DRM के कारण एंड्रॉइड को पोर्ट करना लगभग असंभव था जो एक बुरा सपना था। से निपटने के लिए और इसे बेहद कठिन बना दिया , फिर भी, यह FOTA कोड में एक कारनामे के माध्यम से काम करने की तरह है!)
यही कारण है कि इसमें ओटीजी कार्यक्षमता या अन्य कुछ भी नहीं है, जैसे कि धारावाहिक संचार, एसडीकार्ड, ग्राफिक्स आदि से पढ़ना, क्योंकि यह एलके कर्नेल को उद्देश्य से बड़ा बना देगा। दूसरे शब्दों में, यह कर्नेल का सबसे छोटा संभव आकार है जो केवल उपरोक्त छद्म कोड होने के लिए निर्दिष्ट है।
इसके अलावा, इसे देखने का एक और तरीका यह है, और यह एंड्रॉइड संस्करण पर निर्भर है - यूएसबी ओटीजी कार्यक्षमता पूरी तरह से एंड्रॉइड वातावरण में लाया जाता है, अर्थात जब परिचित होम स्क्रीन दिखाई देती है, तो ओटीजी की कार्यक्षमता सक्षम होती है। दुर्भाग्य से मामला नहीं है जब इसे देखने के दृष्टिकोण से।
यदि आप उत्सुक हैं, तो उपरोक्त lk पर क्वालकॉम प्रविष्टि है जो कि छोटे सी स्रोत का एक हिस्सा है जिसमें ARM असेंबली शामिल है और JellyBean के AOSP स्रोत में पाया गया है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
(परीक्षण के लिए) से बूट करते हैं , जो बूट करता है, OTG कार्यक्षमता को सक्षम करता है और एक बार OTG डिवाइस पर एक वैध कर्नेल पाया जाता है, जो जुड़ा हुआ है, जो मेमोरी में जाता है और इसे नियंत्रित करता है। यह शायद TWRP जैसी आधुनिक कस्टम वसूली में भी एकीकृत किया जा सकता है, जिसमें OTG और (कुछ मामलों में) MultiROM समर्थन दोनों हैं।
यह वास्तव में एक नेक्सस 9 टैबलेट पर उबंटू को बूट करने के लिए उपयोग किया गया है, विधि का उपयोग करते हुए:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
बूट और OTG सक्षम करता है और OTG डिवाइस के कनेक्ट होने का इंतजार करता है।<otg_chainloader_kernel>
OTG डिवाइस पर एक वैध लिनक्स कर्नेल का पता लगाता है और इसे मेमोरी में चेनलोड करने के बाद इसे नियंत्रित करता है।अब, यदि आप चाहते हैं, तो आप एक समान तरीके से एक संगत एंड्रॉइड रॉम इमेज को बूट कर सकते हैं, लेकिन याद रखें कि ओटीजी ड्राइव को डिवाइस से कनेक्ट रखना होगा जब तक आप मूल ओएस पर लौटने का फैसला नहीं करते (क्योंकि सभी ऐप लोड होंगे से, और सभी डेटा को USB फ्लैश ड्राइव पर लिखा जाएगा, जब तक कि पूरे एंड्रॉइड रोम को एक रैमडिस्क (कभी पिल्ला लिनक्स के बारे में नहीं सुना?) के रूप में कॉन्फ़िगर किया जा सकता है, जिसने आम एंड्रॉइड डिवाइसों की वर्तमान मेमोरी कैपेसिटी और आकार दिया? ROM वर्तमान में अव्यावहारिक है)। OTG OS को बूट करने के दौरान चार्जिंग को रोकता है, एकीकृत डेटा / चार्जर पोर्ट के साथ अधिकांश उपकरणों पर भी।
fastboot
s के बिना । kexec-hardboot
TWRP MultiROM द्वारा प्रयोग किया जाता कर्नेल के लिए पैच मूल रूप से है OTG-Chainloader-Kernel
के बारे में मैं बात करते हैं।
इसके पॉसिबल और मैंने इसे अपने एसर आइकोनिया टेबलेट पर किया !!!!
अपने फ़्लैश ड्राइव में iso / dd को पोर्ट करने के लिए अपने पीसी के लिए एक फ्लैश ड्राइव को कनेक्ट करें और fat32 का उपयोग करें
इसे ओटीजी से और अपने फोन / टैबलेट में कनेक्ट करें .. पॉवर की को होल्ड करें और वॉल्यूम को टैप करें अगर यह पावर की को होल्ड करने की कोशिश नहीं करता है और वॉल्यूम को टैप करें
तब वॉल्यूम कुंजियों का उपयोग करके UDisk (आपका फ्लैश ड्राइव ब्रांड) या SATA पर चला जाता है; UDISK (इसमें आपका USB ब्रांड नहीं है, इसे usb स्टोरेज कह सकते हैं) और पुष्टि करने के लिए पावर कुंजी पर क्लिक करें
ठीक है, मुझे मेनू में बूट करने में समस्या थी, इसलिए मैं किसी तरह से कर्नेल को बूट करने से बचने में कामयाब रहा और इसके द्वारा एंड्रॉइड को बूट करने के लिए रोक दिया
मुझे लगता है कि यह इस तरह था: मैं पीसी से जुड़ा था, फिर टैबलेट से सभी पुलों को हटा दिया, लेकिन एंड्रॉइड फ़ोल्डर की प्रतिलिपि बना रहा था
कर्नेल को हटा दिया गया था और बूट के बाद पीसी पर एक यूएसबी हब के साथ जुड़ा हुआ था
अच्छी उम्मीद है कि मैं मदद की :)