Otobüsle çalışan bir USB sürücüsünden bir Android telefonu * önyüklemenin herhangi bir yolu var mı? Öyleyse, bunu başarmak için atılacak adımlar nelerdir?
* Örneğin USB OTG işlevselliğine sahip bir tane.
** Örneğin bir flash sürücü.
Otobüsle çalışan bir USB sürücüsünden bir Android telefonu * önyüklemenin herhangi bir yolu var mı? Öyleyse, bunu başarmak için atılacak adımlar nelerdir?
* Örneğin USB OTG işlevselliğine sahip bir tane.
** Örneğin bir flash sürücü.
Yanıtlar:
Lütfen amaçlanan amaç nedir ve neden açıklayınız?
Android telefonların kendi önyükleme yükleyicileri vardır ve başka yollarla geçersiz kılınamaz.
Network PXE, USB, Birincil / İkincil HDD gibi belirli cihazlardan önyükleme sırasını değiştirebileceğiniz bir bilgisayarın BIOS'u gibi değildir.
Aşağıdaki yorumlardan sonra ve OP'nin sorusuyla ilgili olarak
Otobüsle çalışan bir USB sürücü yoluyla bir Android telefonu (USB OTG işlevselliğine sahip bir tane) önyüklemenin herhangi bir yolu var mı?
Lk (Küçük Çekirdek) kurtarma işlemine zincirle yükleme veya doğrudan Android ortamına önyükleme yapmak için tuş vuruşlarını yakalama konusunda daha fazla endişe duyduğundan, genel önyükleyicinin (* yonga setinde bulunan *) USB vb. Bilgisi yoktur. (Bu örnekte Vol + Down tuşunu basılı tutarken) - sözde kodda ( bu, lk'nin bağlamından / yönünden ve ayrıca bölümlerin nasıl okunacağına ilişkin bellek adresleri bu lk'ye sabit olarak kodlanır, böylece mantığın nasıl işleneceğini öğrenin! )
Lk çekirdeği Qualcomm tarafından MSM yonga setleri (Snapdragon) tarafından fiili standarttır ve Sony, Motorola, LG, Samsung gibi üreticiler tarafından benimsenmiştir ve altındaki AOSP kaynağında bulunabilir bootable/bootloader
.
eğer ( Sesi Azalt tuşuna basıldığında mı? ) sonra
/recovery
kurtarma ortamını getirirken, çekirdekten bellekteki belirli bir adrese zincir yükü çekirdeği üzerine atlayın ve yürütmeye başlayınBaşka
/system
bölümden bellekteki belirli bir adrese yükleyin ve ona atlayın ve Android ortamını getirmek için yürütmeye başlayın.eğer biterse.
Lk içindeki çekirdek oldukça sınırlı olduğundan, çekirdeğin ikili görüntüsünün çipin içine yandığı ve dolayısıyla değiştirmenin bir yolu olmadığı düşünülür . Ve ayrıca lk içerdiğini belirtmek gerekir fastboot
yanıp sönen için hazırlık protokolü /boot
, /recovery
, /system
ve /data
bölümleri. Önyükleme için iki sıra vardır, birincil önyükleme ve ikincil önyükleme olduğu gibi:
/boot
veya/recovery
Yan not: Samsung, modifikasyon söz konusu olduğunda jargonunda PBL / SBL'ye (sırasıyla Birincil Önyükleme Yükleyicisi ve İkincil Önyükleme Yükleyicisi) düşkündür. Samsung hakkında bir şey, bazı el cihazlarında, PBL ve SBL'nin şifrelenebileceği (Samsung Wave GT-S8500, Android'i bir kabus olan önyükleme yükleyicileri içindeki DRM nedeniyle bunun neredeyse imkansız olduğu bir örnektir. Bununla başa çıkmak ve modifikasyonu son derece zorlaştırmak, yine de, FOTA kodunda bir istismar yoluyla çalışmak!)
Bu nedenle OTG işlevselliği veya seri iletişimi, SDCard'dan okuma, grafik vb.Gibi ekstra özellikler yoktur, çünkü lk çekirdeği amaçlanandan daha büyük hale getirir. Başka bir deyişle, sadece yukarıdaki sahte kodun gerçekleşmesi için tasarlanan mümkün olan en küçük çekirdek boyutudur.
Ayrıca, ona bakarak bir başka yolu budur ve bu Android sürümü bağlıdır - OTG işlevselliği tam bir USB getirdi tanıdık ana ekran görüntülenir, ne zaman Android ortamında yukarı, yani daha sonra OTG işlevselliği etkindir. Ne yazık ki lk perspektifinden bakarken durum böyle değil.
Merak ediyorsanız , ARM montajının dahil olduğu ve JellyBean'ın AOSP kaynağında bulunan küçük C kaynağının bir parçası olan yukarıdaki lk'deki Qualcomm girişibootable/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;
}
Ancak bir anlamda mümkündür. @ T0mm13b'nin cevabında belirtilen sınırlamalar göz önüne alındığında, bahsedilen önyükleme yükleyicisinin (lk) bunu yapamayacağı mantıklıdır. Bu nedenle, önyükleme yapan fastboot
, OTG işlevselliğini sağlayan ve bağlanan OTG cihazında geçerli bir çekirdek bulunduğunda, bunu belleğe yükler ve kontrolü ona geçirir. Bu, muhtemelen hem OTG hem de (bazı durumlarda) MultiROM desteğine sahip TWRP gibi modern özel kurtarmalara entegre edilebilir.
Bu, aslında bir Nexus 9 tablette Ubuntu'yu önyüklemek için kullanılmıştır:
fastboot boot <otg_chainloader_kernel>
<otg_chainloader_kernel>
OTG'yi başlatır ve etkinleştirir ve OTG cihazının bağlanmasını bekler.<otg_chainloader_kernel>
OTG cihazında geçerli bir Linux çekirdeği algılar ve belleğe zincir yüklendikten sonra kontrolü ona aktarır.İsterseniz, uyumlu bir Android ROM görüntüsünü benzer şekilde önyükleyebilirsiniz, ancak yerel işletim sistemine dönmeye karar verene kadar OTG sürücüsünün cihaza bağlı kalması gerektiğini unutmayın (tüm uygulamalar yükleneceğinden) ve tüm Android ROM, yaygın Android cihazların mevcut bellek kapasiteleri ve boyutuna bağlı olarak bir ramdisk (Puppy Linux'u duydunuz mu?) olarak yapılandırılmadıkça tüm veriler USB flash sürücüye yazılır. ROM'un kendisi şu anda pratik değildir). Bu, birleşik veri / şarj cihazı bağlantı noktalarına sahip çoğu cihazda OTG OS'ye önyükleme yapıldığında şarj etmeyi engeller.
Kaynak: XDA-Developers Nexus 9 subforum
fastboot
. kexec-hardboot
TWRP Multirom tarafından kullanılan çekirdek için yama temelde OTG-Chainloader-Kernel
hakkında ben konuşmak.
onun makul ve benim acer iconia tablet üzerinde yaptım !!!!
pc'nize bir flash sürücü bağlayın ve fat32 formatı iso / dd flash sürücünüze bağlamak için rufus kullanın
otg'a ve telefonunuza / tabletinize bağlayın .. güç tuşunu basılı tutun ve önyükleme yapmazsa ses seviyesini azaltın güç tuşunu basılı tutmaya çalışın ve ses seviyesini artırın
ses seviyesi tuşlarını kullanarak UDisk'e (flash sürücü markanız) veya SATA'ya geçin; UDISK (usb markanız olması gerekmez, usb depolama alanı diyebilir) ve onaylamak için güç tuşuna tıklayın
iyi, menüye önyükleme ile ilgili ciddi bir sorun vardı, bu yüzden bir şekilde önyükleme çekirdeğini önlemek başardı ve bu tarafından önyükleme android durdurmak
bence böyle oldu: PC'ye bağlı, sonra tabletten tüm varlıkları sildi, ancak Android klasörü kopyalama
çekirdek kaldırıldı ve önyükleme sonra bir usb hub ile bilgisayara geri bağlandıktan sonra
umarım yardımcı oldum :)