Como modificar a sequência de inicialização do Android para inicializar a partir de um cartão SD?

Como modificar a sequência de inicialização do Android para inicializar a partir de um cartão SD?

Estou pesquisando como inicializar o Android a partir de um cartão SD. Este é o post com as instruções:

Vitória!

Peguei o zip de estoque do sdbags (4.3) e extraí-o no meu computador. Usei unmkbootimg para extrair initramfs.gz e kernel.gz do boot.img na ROM. Descompactei o initramfs e descompactei-o, depois modifiquei macallan.fstab para se referir a /dev/block/mmcblk1p1 para /data, p2 para /system e p3 para /cache. Também modifiquei o init.macallan.rc para evitar que ele tente criar sistemas de arquivos no EMMC - quero que ele não tente tocar no EMMC.

Em seguida, reconstruí o initramfs.gz. Comprei um microsd classe 10 de boa qualidade e particionei-o no meu computador com 3 partições primárias, uma para/data, uma para/system e uma para/cache (cerca de 2 GB e 1 GB para/system e/cache). Criei sistemas de arquivos ext4 em todas as 3 partições, montei p2, copiei a rom e instalei-a manualmente usando o script de atualização como guia. Então desmontei e coloquei o cartão SD no meu TF701t.

Para inicializá-lo, coloquei meu tablet no modo fastboot. Inicializei o kernel e o ramdisk usando 'fastboot boot' - não há necessidade de kexec de recuperação. Posso fazer isso sem qualquer dependência do EMMC interno. Demorou um pouco para inicializar, mas inicializou na primeira tentativa. A gaveta de aplicativos demorou um pouco para abrir, mas estou muito feliz por poder usar meu tablet! Todo esse processo acabou sendo MUITO mais fácil do que eu esperava, e estou bastante confiante de que poderia fazer isso para inicializar qualquer ROM que quisesse. Eu só uso estoque por causa de problemas de driver com meu teclado bluetooth.

Ainda estou disposto a tentar manter o ramo ROM2SD do cromi

Obrigado a todos por toda a sua ajuda!

Depois houve mais elaboraçãoaqui:

Para responder à sua pergunta, não sei. Meu método funciona para inicialização porque mudei a ideia da ROM de qual dispositivo/partição/sistema e/dados residem. Não sei onde o seu dispositivo mantém a ideia de qual partição contém o firmware do rádio. Se estiver em algum lugar do initramfs, você pode modificá-lo da mesma forma que modifiquei o meu e solicitar que carregue o rádio do SD externo. Se a ROM estiver codificada para procurar o rádio no SD interno, você pode estar ferrado.

Uma nota rápida sobre o initramfs para os curiosos: o initramfs (initrd, initramdisk, etc) é um sistema de arquivos Linux em miniatura compactado que contém o essencial necessário para colocar um sistema Linux em execução. O trabalho do initrd é descobrir onde estão os sistemas de arquivos que mantêm a instalação real do Linux, montá-los e entregar o controle a esse sistema Linux.

Não é absolutamente necessário usar um initrd para inicializar um sistema Linux, mas torna muito mais fácil porque você pode carregar drivers, preparar o sistema de arquivos, etc. A ROM padrão para o TF701t (e estou assumindo a maioria, se não todos ROMs para todos os dispositivos Android) usam um initrd para montar/system,/data e quaisquer outras partições necessárias. Só estou dizendo para montá-los do meu SD externo em vez de interno.

Não sei como funcionam as partições de rádio. É apenas uma imagem bruta de firmware na partição ou é um sistema de arquivos ext4 (ou outro) com um arquivo binário de firmware? O último caso pode significar que o initrd monta o firmware do rádio junto com tudo o mais que faz antes de entregar o controle ao Android, então pode significar que você pode alterá-lo para uma partição na placa externa.

Não entendo muito bem e esperava alguma elaboração, pois parece lidar com coisas semelhantes ao sistema operacional Linux (inramfs.gz, kernel.gz e o processo de inicialização em geral.

Responder1

Eu realmente não conheço uma maneira padrão de inicializar a partir de um cartão SD, quão fácil é ou não depende principalmente de qual dispositivo Android você está usando:

Por exemplo, se você tiver um dispositivo Nexus, basta baixar o MultiROM da Play Store e pronto. Normalmente nunca é tão simples; Atualmente, estou tentando fazer com que meu dispositivo baseado em Mediatek MT6575 inicialize a partir do cartão SD, pois a memória interna do eMMC está descarregada e ainda não consegui, então acho que agora está 'emparedado'.


O que estou tentando dizer aqui é que não existe um guia passo a passo que funcione com todos os dispositivos, pois há uma grande variedade de dispositivos, cada um com diferentes layouts de partição, kernels, etc.

Fornecerei alguns exemplos sobre como inicializar a partir do SD para alguns dispositivos diferentes e espero que você consiga ver o que está envolvido. Além disso, se você disser qual dispositivo você possui, posso ter encontrado um método de trabalho para esse dispositivo.

Inicialize o Android a partir do wiki SdCard- Este é um site para tablets Android 'sunxi', mas as informações são úteis, pois contêm informações sobre como editar as partições de recuperação e inicialização, mesmo que as imagens do cartão SD funcionem apenas em tablets sunxi.

Use SD em vez de eMMC no GS3- Dá passo a passo como particionar o cartão SD e editar boot.img. Eu tentei esse método no meu MT6575, mas apenas alterar as informações no fstab não foi suficiente, ele ainda estava tentando inicializar a partir do eMMC para o meu dispositivo, mas se você tiver um GS3, isso é ideal.

Inicialização múltipla para dispositivos MediaTek- Como ter 1 rom no eMMC interno e uma 2ª rom no cartão SD. Dá um passo a passo aproximado, pode funcionar se você tiver um aparelho mediatek.

Converta ROM para inicializar a partir do cartão SD- Escrito com um Nokia X2 em mente, mas estou seguindo esse método agora, monta ambas as partições do sistema ao mesmo tempo, o ponto de montagem para a partição do sistema SD é /system-ext

Isso é tudo que tenho por enquanto, se você conseguir inicializar a partir do SD, poste um comentário dizendo qual método você usou e qual dispositivo você usou, obrigado. :)

informação relacionada