Có cách nào để khởi động điện thoại Android * từ ổ USB chạy bằng xe buýt ** không? Nếu vậy, các bước để đạt được điều này là gì?
* Ví dụ: một với chức năng USB OTG.
** Ví dụ một ổ đĩa flash.
Có cách nào để khởi động điện thoại Android * từ ổ USB chạy bằng xe buýt ** không? Nếu vậy, các bước để đạt được điều này là gì?
* Ví dụ: một với chức năng USB OTG.
** Ví dụ một ổ đĩa flash.
Câu trả lời:
Hãy làm rõ mục tiêu dự định là gì và tại sao?
Điện thoại Android có bộ tải khởi động riêng và không thể bị ghi đè bằng các phương tiện khác.
Nó không giống như BIOS của PC, nơi bạn có thể chuyển đổi thứ tự khởi động để khởi động từ một số thiết bị nhất định như Network PXE, USB, HDD chính / phụ ..
Sau các ý kiến dưới đây và liên quan đến câu hỏi của OP
Có cách nào để khởi động điện thoại Android (Ví dụ: có chức năng USB OTG.) Thông qua ổ USB chạy bằng xe buýt
Trình tải khởi động chung (* nằm trên bộ chip) không có kiến thức về USB, v.v., vì lk (Hạt nhân nhỏ) quan tâm nhiều hơn đến việc bẫy phím để tải chuỗi vào phục hồi hoặc khởi động trực tiếp vào môi trường Android (Khi giữ phím Vol + Down trong trường hợp này) - bằng mã giả ( đây là từ ngữ cảnh / khía cạnh của lk, và cũng vậy, các địa chỉ bộ nhớ liên quan đến cách đọc các phân vùng được mã hóa cứng vào lk này vì vậy nó sẽ biết cách xử lý logic! )
Hạt nhân lk là tiêu chuẩn thực tế của Qualcomm cho chipset MSM (Snapdragon) và được các nhà sản xuất như Sony, Motorola, LG, Samsung chấp nhận và có thể được tìm thấy trong nguồn AOSP bên dưới bootable/bootloader
.
nếu ( phím Giảm âm lượng được nhấn? ) thì
/recovery
phân vùng vào địa chỉ cụ thể trong bộ nhớ và nhảy tới nó và bắt đầu thực thi, trong việc đưa ra môi trường phục hồikhác
/system
phân vùng vào địa chỉ cụ thể trong bộ nhớ và nhảy tới nó và bắt đầu thực thi trong môi trường Android.kết thúc nếu.
Vì kernel trong lk khá hạn chế, nên xem xét rằng hình ảnh nhị phân của kernel bị đốt cháy trong chip và do đó không có cách nào sửa đổi nó . Và cũng nên được đề cập rằng lk chứa các fastboot
giao thức để chuẩn bị cho nhấp nháy /boot
, /recovery
, /system
và /data
phân vùng. Có hai trình tự để khởi động, khởi động chính và khởi động phụ là:
/boot
hoặc/recovery
Lưu ý bên lề: Samsung rất thích PBL / SBL (tương ứng là Trình tải khởi động chính và Trình tải khởi động phụ) trong thuật ngữ của họ khi nói đến việc sửa đổi. Điều đáng nói về Samsung, đó là, trong một số thiết bị cầm tay, PBL và SBL có thể được mã hóa (Samsung Wave GT-S8500 là một ví dụ như vậy, trong đó việc chuyển Android sang điều đó gần như không thể thực hiện được vì DRM trong bộ tải khởi động là một cơn ác mộng Tuy nhiên, để đối phó và thực hiện việc sửa đổi nó vô cùng khó khăn, đó là cách làm việc thông qua khai thác trong mã FOTA!)
Đây là lý do tại sao không có các tiện ích bổ sung như chức năng OTG hoặc bất cứ thứ gì khác như giao tiếp nối tiếp, đọc từ SDCard, đồ họa, v.v. vì nó sẽ làm cho hạt nhân lk lớn hơn dự định. Nói cách khác, đó là kích thước hạt nhân nhỏ nhất có thể được chỉ định để thực hiện mã giả ở trên.
Ngoài ra, một cách khác để nhìn vào nó là thế này, và điều này phụ thuộc vào phiên bản Android - USB OTG chức năng là hoàn toàn mang lên trong môi trường Android, tức là khi xuất hiện màn hình chủ quen thuộc, sau đó chức năng OTG được kích hoạt. Thật không may, không phải là trường hợp khi nhìn nó từ quan điểm của lk.
Nếu bạn tò mò, đây là mục Qualcomm trên lk ở trên, một phần của nguồn C nhỏ có lắp ráp ARM và được tìm thấy trong nguồn AOSP của JellyBean trongbootable/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;
}
Nó có thể trong một ý nghĩa, tuy nhiên. Với các giới hạn được đề cập trong câu trả lời của @ t0mm13b, có nghĩa là bộ tải khởi động được đề cập (lk) không có khả năng thực hiện việc này. Vì vậy, chúng tôi khởi động hạt nhân tùy chỉnh từ fastboot
(để thử nghiệm), khởi động, kích hoạt chức năng OTG và một khi hạt nhân hợp lệ được tìm thấy trên thiết bị OTG được kết nối, tải chuỗi vào bộ nhớ và chuyển điều khiển cho nó. Điều này thậm chí có thể được tích hợp vào các phục hồi tùy chỉnh hiện đại như TWRP có cả OTG và (trong một số trường hợp) hỗ trợ MultiROM.
Điều này thực sự đã được sử dụng để khởi động Ubuntu trên máy tính bảng Nexus 9, sử dụng phương pháp:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
khởi động và cho phép OTG và chờ thiết bị OTG được kết nối.<otg_chainloader_kernel>
phát hiện hạt nhân Linux hợp lệ trên thiết bị OTG và chuyển quyền điều khiển cho nó sau khi tải chuỗi vào bộ nhớ.Bây giờ, nếu bạn muốn, bạn có thể khởi động hình ảnh ROM Android tương thích theo cách tương tự, nhưng hãy nhớ rằng ổ OTG sẽ phải được kết nối với thiết bị cho đến khi bạn quyết định quay lại HĐH gốc (vì tất cả các ứng dụng sẽ tải từ và tất cả dữ liệu sẽ được ghi vào ổ flash USB, trừ khi toàn bộ ROM Android có thể được cấu hình dưới dạng ramdisk (đã từng nghe về Puppy Linux?), với dung lượng bộ nhớ hiện tại của các thiết bị Android thông thường và kích thước của Bản thân ROM hiện không thực tế). Điều đó cũng ngăn chặn việc sạc trong khi khởi động hệ điều hành OTG, trên hầu hết các thiết bị có cổng dữ liệu / bộ sạc thống nhất.
Nguồn: XDA-Nhà phát triển Nexus 9
fastboot
s. Bản kexec-hardboot
vá cho kernel được sử dụng bởi TWRP MultiROM về cơ bản là cái OTG-Chainloader-Kernel
mà tôi nói đến.
nó rõ ràng và tôi đã làm nó trên máy tính bảng biểu tượng acer của tôi !!!!
kết nối ổ đĩa flash với máy tính của bạn và định dạng cho fat32 sử dụng rufus để chuyển iso / dd sang ổ đĩa flash của bạn
kết nối nó với otg và vào điện thoại / máy tính bảng của bạn .. giữ phím nguồn và nhấn giảm âm lượng nếu nó không khởi động, hãy thử giữ phím nguồn và nhấn âm lượng lên
sau đó sử dụng các phím âm lượng sẽ chuyển sang UDisk (nhãn hiệu ổ đĩa flash của bạn) hoặc SATA; UDISK (không nhất thiết phải là thương hiệu usb của bạn, nó có thể nói là lưu trữ usb) và nhấp vào phím nguồn để xác nhận
tốt, tôi đã gặp rắc rối thứ bảy với việc khởi động vào menu, vì vậy tôi bằng cách nào đó đã tránh được kernel để khởi động và do đó dừng Android để khởi động
Tôi nghĩ nó giống như thế này: tôi đã kết nối với máy tính, sau đó xóa tất cả các hỗ trợ khỏi máy tính bảng, nhưng sao chép thư mục Android
kernel đã được gỡ bỏ và sau khi boot kết nối trở lại pc với một hub USB
cũng hy vọng tôi đã giúp :)