Apakah ada cara untuk mem-boot ponsel Android * dari drive USB yang didukung bus **? Jika demikian, apa langkah untuk mencapai ini?
* Misalnya satu dengan fungsi USB OTG.
** Misalnya flash drive.
Apakah ada cara untuk mem-boot ponsel Android * dari drive USB yang didukung bus **? Jika demikian, apa langkah untuk mencapai ini?
* Misalnya satu dengan fungsi USB OTG.
** Misalnya flash drive.
Jawaban:
Tolong jelaskan apa tujuan yang dimaksud dan mengapa?
Ponsel Android memiliki boot-loader sendiri dan tidak dapat diganti dengan cara lain.
Ini tidak seperti BIOS PC di mana Anda dapat mengubah urutan boot untuk boot dari perangkat tertentu seperti Network PXE, USB, HDD Utama / Sekunder.
Setelah komentar di bawah ini, dan sehubungan dengan pertanyaan OP
Apakah ada cara untuk mem-boot ponsel Android (mis. Ponsel dengan fungsi USB OTG.) Melalui drive USB yang ditenagai bus
Boot-loader generik (* yang berada di chip-set) tidak memiliki pengetahuan tentang USB dll, karena lk (Little Kernel) lebih peduli tentang menjebak penekanan tombol untuk memasukkan rantai ke pemulihan atau untuk mem-boot langsung ke lingkungan Android (Ketika memegang kunci Vol + Down dalam contoh ini) - dalam pseudo-code ( ini dari konteks / aspek lk, dan juga, alamat memori yang berkaitan dengan cara membaca partisi adalah hard-coded ke lk ini sehingga akan tahu bagaimana memproses logika! )
Kernel lk adalah standar de-facto oleh Qualcomm untuk chipset MSM (Snapdragon) dan diadopsi oleh produsen seperti Sony, Motorola, LG, Samsung dan dapat ditemukan di sumber AOSP di bawah bootable/bootloader
.
jika ( Apakah tombol Volume Turun ditekan? ) kemudian
/recovery
partisi ke alamat tertentu dalam memori dan lompat ke sana dan mulai eksekusi, dalam memunculkan lingkungan pemulihanlain
/system
partisi ke alamat tertentu dalam memori dan lompat ke sana dan mulai eksekusi dalam membawa lingkungan Android.berakhir jika.
Karena kernel di dalam lk sangat terbatas, mengingat bahwa citra biner dari kernel dibakar ke dalam chip dan karenanya tidak ada cara untuk memodifikasinya . Dan juga harus disebutkan bahwa lk berisi fastboot
protokol dalam persiapan untuk berkedip /boot
, /recovery
, /system
dan /data
partisi. Ada dua urutan untuk boot, boot primer dan boot sekunder apa adanya:
/boot
atau/recovery
Catatan: Samsung menyukai PBL / SBL (yang merupakan Boot Loader Primer dan Boot Loader Sekunder) di jargon mereka dalam hal modding. Hal tentang Samsung, adalah bahwa, di beberapa handset, PBL dan SBL dapat dienkripsi (Samsung Wave GT-S8500 adalah salah satu contohnya, di mana pengalihan Android ke hampir mustahil dilakukan karena DRM di dalam boot loader yang merupakan mimpi buruk. untuk menghadapi dan membuatnya modding sangat sulit, namun, itu semacam bekerja melalui exploit dalam kode FOTA!)
Inilah sebabnya mengapa tidak ada fasilitas tambahan seperti fungsi OTG atau hal lain seperti komunikasi serial, membaca dari SDCard, grafik dll karena itu akan membuat kernel lk lebih besar dari yang dimaksudkan. Dengan kata lain, itu adalah ukuran sekecil mungkin dari kernel yang ditunjuk untuk melakukan pseudo-code di atas.
Juga, cara lain untuk melihat hal itu adalah ini, dan ini tergantung pada versi Android - USB OTG fungsi sepenuhnya dibawa up dalam lingkungan Android, yaitu ketika muncul home screen familiar, maka fungsi OTG ini diaktifkan. Sayangnya tidak demikian ketika melihatnya dari perspektif lk.
Jika Anda penasaran, inilah entri Qualcomm pada lk di atas yang merupakan bagian dari sumber C kecil yang menyertakan perakitan ARM dan ditemukan dalam sumber AOSP JellyBean dibootable/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;
}
Namun, itu mungkin dalam beberapa hal. Mengingat keterbatasan yang disebutkan dalam jawaban @ t0mm13b, masuk akal bahwa boot loader yang disebutkan (lk) tidak mampu melakukan hal ini. Jadi, kami mem-boot kernel khusus dari fastboot
(untuk pengujian), yang melakukan booting, mengaktifkan fungsionalitas OTG dan begitu kernel yang valid ditemukan pada perangkat OTG yang terhubung, rantai memuatnya ke dalam memori dan melewati kontrol ke sana. Ini bahkan mungkin dapat diintegrasikan ke dalam pemulihan kustom modern seperti TWRP yang memiliki OTG dan (dalam beberapa kasus) dukungan MultiROM.
Ini sebenarnya telah digunakan untuk mem-boot Ubuntu pada tablet Nexus 9, menggunakan metode:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
melakukan booting dan memungkinkan OTG dan menunggu perangkat OTG terhubung.<otg_chainloader_kernel>
mendeteksi kernel Linux yang valid pada perangkat OTG dan memberikan kontrol kepadanya setelah rantai memuatnya ke dalam memori.Sekarang, jika Anda mau, Anda bisa mem-boot image ROM Android yang kompatibel dengan cara yang sama, tetapi ingat bahwa drive OTG harus tetap terhubung ke perangkat sampai Anda memutuskan untuk kembali ke OS asli (karena semua aplikasi akan memuat dari, dan semua data akan ditulis ke USB flash drive, kecuali seluruh ROM Android dapat dikonfigurasi sebagai ramdisk (pernah mendengar tentang Puppy Linux?), yang, mengingat kapasitas memori saat ini dari perangkat Android umum dan ukuran ROM itu sendiri saat ini tidak praktis). Itu menghalangi pengisian saat di-boot ke OTG OS, juga, pada sebagian besar perangkat dengan port data / charger terpadu.
Sumber: subforum Nexus 9 Pengembang XDA
fastboot
s. The kexec-hardboot
patch untuk kernel yang digunakan oleh TWRP MultiROM pada dasarnya adalah OTG-Chainloader-Kernel
saya berbicara tentang.
itu mungkin dan saya melakukannya pada tablet acer iconia saya !!!!
menghubungkan flash drive ke pc Anda dan format ke FAT32 menggunakan rufus untuk port iso / dd ke flash drive Anda
sambungkan ke otg dan ke ponsel / tablet Anda .. tahan tombol daya dan ketuk volume jika tidak bisa boot coba tahan tombol daya dan ketuk volume ke atas
kemudian menggunakan tombol volume pindah ke UDisk (merek flash drive Anda) atau SATA; UDISK (itu tidak harus merek usb Anda, bisa dikatakan penyimpanan usb) dan klik tombol daya untuk konfirmasi
baik, saya punya masalah sevior dengan boot ke menu, jadi saya entah bagaimana berhasil menghindari kernel untuk boot dan dengan itu menghentikan android untuk boot
Saya pikir itu seperti ini: saya terhubung ke PC, kemudian menghapus semua assect dari tablet, tetapi menyalin folder Android
kernel telah dihapus dan setelah boot terhubung kembali ke pc dengan hub usb
semoga saya membantu :)