Esiste un modo per avviare un telefono Android * da un'unità USB alimentata dal bus **? In tal caso, quali sono i passaggi per raggiungere questo obiettivo?
* Ad esempio uno con funzionalità USB OTG.
** Ad esempio un'unità flash.
Esiste un modo per avviare un telefono Android * da un'unità USB alimentata dal bus **? In tal caso, quali sono i passaggi per raggiungere questo obiettivo?
* Ad esempio uno con funzionalità USB OTG.
** Ad esempio un'unità flash.
Risposte:
Si prega di chiarire qual è l'obiettivo previsto e perché?
I telefoni Android hanno i propri bootloader e non possono essere ignorati con altri mezzi.
Non è come un BIOS del PC in cui è possibile cambiare l'ordine di avvio per l'avvio da determinati dispositivi come Network PXE, USB, HDD primario / secondario ..
Dopo i commenti che seguono e in relazione alla domanda del PO
Esiste un modo per avviare un telefono Android (ad esempio uno con funzionalità USB OTG.) Tramite un'unità USB alimentata dal bus
Il caricatore di avvio generico (* che risiede sul set di chip) non ha alcuna conoscenza di USB ecc., Poiché lk (Little Kernel) è più preoccupato per il trapping delle sequenze di tasti al fine di caricare in catena il ripristino o avviare direttamente nell'ambiente Android (Quando si tiene premuto il tasto Vol + Giù in questo caso) - in pseudo-codice ( questo è dal contesto / aspetto di lk, e anche, gli indirizzi di memoria relativi a come leggere le partizioni sono hardcoded in questo lk quindi sapere come elaborare la logica! )
Il kernel lk è lo standard di fatto di Qualcomm per i chipset MSM (Snapdragon) e adottato da produttori come Sony, Motorola, LG, Samsung e può essere trovato nella fonte AOSP sotto bootable/bootloader
.
se ( Viene premuto il tasto Volume giù? ) allora
/recovery
partizione in un indirizzo particolare in memoria, passa a esso e avvia l'esecuzione, per far apparire l'ambiente di recuperoaltro
/system
partizione a un indirizzo particolare in memoria, passa a esso e avvia l'esecuzione per far apparire l'ambiente Android.finisci se.
Dato che il kernel all'interno di lk è piuttosto limitato, considerando che l'immagine binaria del kernel viene masterizzata nel chip e quindi non c'è modo di modificarlo . E anche va detto che lk contiene il fastboot
protocollo in preparazione per lampeggianti /boot
, /recovery
, /system
e /data
partizioni. Esistono due sequenze di avvio, avvio primario e avvio secondario così com'è:
/boot
o/recovery
Nota a margine : Samsung ama il PBL / SBL (che è rispettivamente il caricatore di avvio primario e il caricatore di avvio secondario) nel loro gergo quando si tratta di modding. La cosa su Samsung, è che, in alcuni telefoni, PBL e SBL potrebbero essere crittografati (Samsung Wave GT-S8500 ne è un esempio, in cui il porting di Android su di esso era quasi impossibile da fare a causa del DRM nei boot loader che era un incubo gestire e rendere il modding estremamente difficile, tuttavia, sta funzionando in qualche modo tramite un exploit nel codice FOTA!)
Questo è il motivo per cui non ci sono servizi extra come la funzionalità OTG o qualsiasi altra cosa come comunicazioni seriali, letture da SDCard, grafica ecc. In quanto renderebbe il kernel lk più grande di quanto previsto. In altre parole, è la dimensione più piccola possibile del kernel che è designata per far accadere solo lo pseudo-codice sopra riportato.
Inoltre, un altro modo di vedere le cose è questo, e questo dipende dalla versione Android - funzionalità OTG è completamente l'USB ha portato fino all'interno dell'ambiente di Android, vale a dire quando viene visualizzata la schermata casa familiare, quindi le funzionalità di OTG è abilitato. Sfortunatamente non è il caso di guardarlo dal punto di vista di LK.
Se sei curioso, ecco la voce Qualcomm nella sezione precedente che fa parte della minuscola sorgente C che ha incluso l'assemblaggio ARM e che si trova nella sorgente AOSP di JellyBean inbootable/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;
}
È possibile in un certo senso, tuttavia. Date le limitazioni menzionate nella risposta di @ t0mm13b, ha senso che il citato boot loader (lk) non sia in grado di farlo. Quindi, avviamo un kernel personalizzato da fastboot
(per il test), che si avvia, abilita la funzionalità OTG e una volta trovato un kernel valido sul dispositivo OTG che è collegato, li carica in memoria e gli passa il controllo. Questo potrebbe probabilmente anche essere integrato nei moderni ripristini personalizzati come TWRP che hanno sia il supporto OTG che (in alcuni casi) MultiROM.
Questo è stato effettivamente utilizzato per avviare Ubuntu su un tablet Nexus 9, usando il metodo:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
avvia e abilita OTG e attende la connessione del dispositivo OTG.<otg_chainloader_kernel>
rileva un kernel Linux valido sul dispositivo OTG e gli passa il controllo dopo averlo caricato a catena in memoria.Ora, se lo desideri, puoi avviare un'immagine ROM ROM Android compatibile in un modo simile, ma ricorda che l'unità OTG dovrebbe essere mantenuta connessa al dispositivo fino a quando deciderai di tornare al sistema operativo nativo (poiché tutte le app verrebbero caricate da e tutti i dati verrebbero scritti sull'unità flash USB, a meno che l'intera ROM Android non potesse essere configurata come un ramdisk (mai sentito parlare di Puppy Linux?), che, date le attuali capacità di memoria dei comuni dispositivi Android e le dimensioni del La stessa ROM è attualmente poco pratica). Ciò preclude la ricarica anche durante l'avvio sul sistema operativo OTG, sulla maggior parte dei dispositivi con porte dati / caricatore unificate.
fastboot
s. La kexec-hardboot
patch per il kernel usata da TWRP MultiROM è fondamentalmente la OTG-Chainloader-Kernel
parola di cui parlo.
è posible e l'ho fatto sul mio tablet acer iconia !!!!
collegare un'unità flash al PC e formattare su fat32 utilizzare rufus per eseguire il port dell'iso / gg sull'unità flash
collegalo a otg e nel tuo telefono / tablet .. tieni premuto il tasto di accensione e tocca il volume se non si avvia prova a tenere premuto il tasto di accensione e tocca il volume su
quindi usando i tasti del volume passa a UDisk (il marchio della tua unità flash) o SATA; UDISK (non deve essere il tuo marchio USB, può dire memoria USB) e fare clic sul tasto di accensione per confermare
beh, ho avuto grossi problemi con l'avvio nel menu, quindi in qualche modo sono riuscito a evitare l'avvio del kernel e quindi fermare l'avvio di Android
penso che sia stato così: mi sono collegato al pc, quindi ho eliminato tutti gli insetti dal tablet, ma copiando la cartella Android
il kernel è stato rimosso e dopo l'avvio è stato ricollegato al PC con un hub USB
bene spero di aver aiutato :)