Чи є можливість завантажувати телефон 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 (що є первинним завантажувачем і вторинним завантажувачем відповідно) у своєму жаргоні, коли мова йде про модінг. Що стосується Samsung, це те, що в деяких телефонах PBL і SBL можуть бути зашифровані (Samsung Wave GT-S8500 - один з таких прикладів, коли перенесення Android на нього було майже неможливо зробити через DRM в завантажувачах, що було кошмаром впоратися з цим і зробити його моддингом надзвичайно важко, тим не менше, це начебто робота з експлуатуванням у коді FOTA!)
Ось чому немає додаткових засобів, таких як функціональність OTG або що-небудь інше, наприклад, послідовний зв'язок, зчитування з SDCard, графіки тощо, як це зробить ядро lk більшим, ніж призначено. Іншими словами, саме найменший розмір ядра призначений для того, щоб зробити саме вищевказаний псевдо-код.
Крім того, інший спосіб дивитися на це - це, і це залежить від версії Android - функціональність USB OTG повністю виведена в середовищі Android, тобто коли з'являється знайомий домашній екран, тоді функціональність OTG увімкнена. На жаль, це не так, якщо дивитися на це з точки зору lk.
Якщо вам цікаво, ось запис 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 ROM аналогічним чином, але пам’ятайте, що привід OTG повинен був залишатися підключеним до пристрою, поки ви не вирішите повернутися до рідної ОС (оскільки всі програми завантажуватимуться з, і всі дані будуть записані на флешку USB, якщо тільки весь Android ROM не міг бути налаштований як ramdisk (коли-небудь чули про Puppy Linux?), який, враховуючи поточну ємність пам’яті звичайних пристроїв Android та розмір Сам ПЗУ наразі недоцільно). Це виключає зарядку під час завантаження в ОС OTG на більшості пристроїв з уніфікованими портами даних / зарядних пристроїв.
Джерело: XDA-Developers Nexus 9 subforum
fastboot
s. kexec-hardboot
Патч для ядра , використовуваного TWRP MultiROM в основному OTG-Chainloader-Kernel
я говорю.
це можливо, і я це зробив на своєму планшеті Acer iconia !!!!
підключіть флешку до ПК та відформатуйте до fat32, використовуйте rufus для порту iso / dd на флешку
підключіть його до otg та до телефону / планшета .. утримуйте клавішу живлення та торкніться гучності, якщо вона не завантажиться, спробуйте утримувати клавішу живлення та торкніться гучності вгору
потім за допомогою клавіш гучності перейдіть до UDisk (бренд вашої флешки) або SATA; UDISK (це не повинно бути вашою торговою маркою usb, це може бути сховище usb) і натисніть клавішу живлення для підтвердження
ну, у мене виникли проблеми із завантаженням із завантаженням меню, тому я якось зумів уникнути завантаження ядра і тим самим зупинити андроїд для завантаження
я думаю, це було так: я підключився до ПК, потім видалив усі збори з планшета, але копіюючи папку Android
ядро було видалено і після завантаження з'єднано назад до ПК з концентратором usb
добре сподіваюся, що я допоміг :)