Есть ли способ загрузить телефон Android * с USB-накопителя с питанием от шины **? Если да, то какие шаги для этого?
* Например, один с функцией USB OTG.
** Например, флешка.
Есть ли способ загрузить телефон Android * с USB-накопителя с питанием от шины **? Если да, то какие шаги для этого?
* Например, один с функцией USB OTG.
** Например, флешка.
Ответы:
Пожалуйста, уточните, какова цель и почему?
Телефоны Android имеют свои собственные загрузчики и не могут быть переопределены другими способами.
Это не похоже на BIOS ПК, где вы можете переключать порядок загрузки для загрузки с определенных устройств, таких как Network PXE, USB, Primary / Secondary HDD.
После комментариев ниже и в связи с вопросом ОП
Есть ли способ загрузить телефон Android (например, с функцией USB OTG) через USB-накопитель с питанием от шины
Базовый загрузчик (* который находится на чипсете) не знает USB и т. Д., Поскольку lk (Little Kernel) больше заботится о том, чтобы перехватывать нажатия клавиш для цепной загрузки в восстановление или для загрузки непосредственно в среду Android (Удерживая клавишу Vol + Down в этом случае) - в псевдокоде ( это из контекста / аспекта lk, а также адреса памяти, относящиеся к чтению разделов, жестко запрограммированы в этом lk, поэтому умеешь обрабатывать логику! )
Ядро lk является стандартом де-факто Qualcomm для наборов микросхем MSM (Snapdragon) и принято такими производителями, как Sony, Motorola, LG, Samsung. Его можно найти в источнике AOSP в разделе bootable/bootloader
.
если ( нажата клавиша уменьшения громкости? ), то
/recovery
раздела по определенному адресу в памяти, переход к нему и запуск выполнения при вызове среды восстановления.еще
/system
раздела по определенному адресу в памяти, переход к нему и запуск выполнения при вызове среды Android.конец если.
Поскольку ядро в lk довольно ограничено, учитывая, что двоичный образ ядра записан в чип и, следовательно, нет способа его изменить . А также следует отметить , что лк содержит fastboot
протокол в рамках подготовки к мигающим /boot
, /recovery
, /system
и /data
перегородкам. Есть две последовательности для загрузки: основная загрузка и дополнительная загрузка как есть:
/boot
или/recovery
Примечание: Samsung любит PBL / SBL (который является Primary Boot Loader и Secondary Boot Loader соответственно) в их жаргоне, когда дело доходит до моддинга. Что касается Samsung, так это то, что в некоторых телефонах PBL и SBL могут быть зашифрованы (Samsung Wave GT-S8500 является одним из таких примеров, когда портировать Android на него было практически невозможно из-за DRM в загрузчиках, что было кошмаром). иметь дело с моддингом и сделать его чрезвычайно трудным, тем не менее, это своего рода работа через эксплойт в коде FOTA!)
Вот почему нет никаких дополнительных средств, таких как функциональность OTG или что-либо еще, таких как последовательная связь, чтение с SDCard, графика и т. Д., Поскольку это сделает ядро lk больше, чем предполагалось. Другими словами, это наименьший возможный размер ядра, предназначенный для выполнения только что описанного выше псевдокода.
Кроме того , еще один способ смотреть на него это, и это зависит от Android версии - с USB OTG функциональность полностью вывела вверх в Android среды, то есть , когда знакомый появится домашний экран, то функциональность OTG является включена. К сожалению, это не так, если смотреть на это с точки зрения ЛК.
Если вам интересно, вот запись Qualcomm на приведенном выше lk, которая является частью крошечного C-источника, в который включена сборка ARM и найдена в AOSP-источнике JellyBean в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.
На самом деле это использовалось для загрузки Ubuntu на планшете Nexus 9, используя метод:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
загружается и включает OTG и ожидает подключения устройства OTG.<otg_chainloader_kernel>
обнаруживает действительное ядро Linux на устройстве OTG и передает управление ему после загрузки по цепочке в память.Теперь, если вы хотите, вы можете загрузить совместимый образ ПЗУ Android аналогичным образом, но помните, что диск OTG должен оставаться подключенным к устройству до тех пор, пока вы не решите вернуться к собственной ОС (поскольку все приложения будут загружаться). от, и все данные будут записаны на флэш-накопитель USB, если все ПЗУ Android не может быть настроено как виртуальный диск (когда-либо слышал о Puppy Linux?), который, учитывая текущие объемы памяти общих устройств Android и размер Сам ПЗУ на данный момент нецелесообразен). Это исключает возможность зарядки при загрузке в ОС OTG также на большинстве устройств с унифицированными портами данных / зарядного устройства.
Источник: XDA-Developers Nexus 9 подфорум
fastboot
с. kexec-hardboot
Патч для ядра , используемого TWRP MultiROM в основном OTG-Chainloader-Kernel
я говорю.
это возможно, и я сделал это на моем планшете Acer Iconia !!!!
подключите флешку к вашему компьютеру и отформатируйте в fat32 используйте rufus для портирования iso / dd на вашу флешку
подключите его к otg и в свой телефон / планшет .. удерживайте клавишу питания и нажмите громкость вниз, если он не загружается, попробуйте удерживать клавишу питания и нажмите громкость вверх
затем с помощью клавиш регулировки громкости перейдите на UDisk (марка вашей флешки) или SATA; UDISK (это не обязательно должен быть ваш USB-бренд, можно сказать, USB-хранилище) и нажмите кнопку питания, чтобы подтвердить
ну, у меня были серьезные проблемы с загрузкой в меню, поэтому мне как-то удалось избежать загрузки ядра и тем самым остановить загрузку андроида
я думаю, что это было так: я подключился к компьютеру, затем удалил все сборки с планшета, но скопировал папку Android
ядро было удалено и после загрузки подключено к компьютеру с помощью USB-концентратора
ну надеюсь я помог :)