Inicial > Android > Android – Como configurar o App2sd

Android – Como configurar o App2sd

Hi folks!

Um dos motivos que me levou a troca da ROM Stock de meu Samsung Galaxy 5 por uma ROM Modificada (inicialmente a MAD 2.0.92, e posteriormente a Cyanogen 7 3.41), e que é muito interessante, é o app2sd do MAD Team.

At a glance: O App2sd é um conjunto de scripts e links simbólicos que formatam seu cartão SD com partições EXT4 e Swap, e redirecionam as aplicações comuns e parte do sistema para o cartão de memória já particionado e formatado. É uma maneira inteligente de instalação de sistema, principalmente em aparelhos como o Samsung Galaxy 5, que tem pouquíssima memória interna. Mais informações aqui.

No entanto, os scripts de criação do app2sd são meio porcos no meu ponto de vista, e podem até funcionar no seu caso. Mas, caso não funcionem (e comigo NENHUM funcionou para formatação, apenas pra ativação), você não terá outra alternativa a não ser:

– Chorar
– Aguardar e perguntar no IRC (canal #gti5500 na FreeNode)
– Fazer o particionamento na mão e tentar utilizar só pra ativação.

Outro agravante é que não existem as informações necessárias se você quiser fazer a formatação e ativação manual do App2sd. Então nesse artigo, você encontrará algumas informações preciosas que você deverá seguir caso tenha problemas na instalação do app2sd.

Antes de continuar, estou assumindo que você já sabe colocar seu celular em Recovery Mode, sabe utilizar o adb, sabe Linux, se possível sabe usar o fdisk do Linux (NÃO O CFDISK) e que você precisará utilizar o Data Wipe/Factory Restore. Ou seja, você VAI PERDER DADOS NA ATIVAÇÃO SIM, e eu não serei responsabilizado por isso. Se você amarelou, por favor, segure a tecla CTRL e pressione a tecla W. Pode parar por aqui mesmo. Ahh é, e volte seu celular para a ROM Stock, pois as modificadas só funcionam bem com o app2sd.  🙂

Um “bom script” para a MAD 2.0.9.2 está aqui. Se algum dia o site sair do ar eu tenho backup, basta me pedir e eu disponibilizo.

1) Meu particionamento deu errado

Caso os scripts do subspyke ou de alguma outra pessoa não te servir, não tenha medo, e formate sozinho. O Android e os scripts precisarão de três partições. Todas as partições deverão ser primárias e na seguinte ordem:

Partição 1: FAT32
Partição 2: Linux
Partição 3: Linux Swap

A ordem é necessária pois os scripts são todos planejados para montar a p2 como EXT4, a p3 como Swap, e o próprio sistema já monta a p1 como FAT32. E como os scripts não fazem nenhuma espécie de verificação nas partições antes de montá-las, é necessário seguir essa ordem. Eu ia corrigir os scripts e colocar verificações de partições pro caso da Swap e da partição Linux, mas devido a um @OP por demais politicamente correto no canal #gti5500, não vou mais o fazer. Pena, não fui eu que saí perdendo 😉

A partição FAT32 será enxergada pelo seu sistema operacional quando o celular for colocado em modo de armazenamento USB. Portanto, deixe o espaço que você julgar necessário para acomodar os seus arquivos pessoais (fotos, músicas, ringtones, etc).

A partição do tipo Linux conterá os arquivos do sistema operacional, e deverá ter espaço suficiente para acomodar todos os seus aplicativos. (Mais de 512MB, pelo menos). E a partição Swap será a extensão da memória. 256MB está de bom tamanho.

Para isso, acesse seu celular por adb (comando adb shell), pode ser em modo recovery, e utilize o fdisk para fazer a formatação:

# fdisk /dev/block/mmcblk0

Alguns comandos do fdisk podem te servir:
p:   Exibe a tabela de partições;
n:   Cria uma nova partição;
d:   Apaga uma partição;
w:   Salva as alterações;
t:   Altera o tipo da partição;
q:   Sai sem salvar.

O fdisk não formata as partições, e após a utilização dele, é necessário rebootar o celular após cada alteração que grave a tabela de partição. Use o Data Wipe após as modificações.

2) Obtenho erros de montagem ou o sistema está voltando pro padrão após cada reboot

Verifique se suas partições estão corretamente montadas, formatadas, cheque o dmesg pra ver se existem erros no seu cartão e confirme se o app2sd realmente está ativado. Utilize seus skills em Linux e verifique no sistema o que os logs estão te dizendo, Luke.

3) Como confirmo que o app2sd está ativado?

Verifique a saída do comando mount.

# mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/stl14 /cache ext4 rw,noatime,barrier=1,data=ordered 0 0
/dev/stl13 /data ext4 rw,relatime,barrier=1,data=ordered 0 0
/dev/stl12 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/stl13 /cache ext4 rw,noatime,barrier=1,data=ordered 0 0
/dev/stl12 /data/local/tmp/sys_bin_orig ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/stl13 /system/bin ext4 rw,relatime,barrier=1,data=ordered 0 0

#

As partições montadas no cartão estarão apontando pro dispositivo /dev/block/mmcblk0p2 com sistema de arquivos EXT4. No caso acima o app2sd está desativado num Android 2.2. E no caso abaixo, o app2sd está ativado num Android 2.3:

# mount

rootfs on / type rootfs (ro,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)
tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)
/dev/block/stl12 on /system type ext4 (rw,relatime,barrier=1,data=writeback)
/dev/block/mmcblk0p2 on /data type ext4 (rw,nosuid,nodev,relatime,barrier=1,data=writeback)
/dev/block/stl13 on /mnt/stl13 type ext4 (rw,nosuid,nodev,relatime,barrier=1,data=writeback)
/dev/block/stl13 on /cache type ext4 (rw,nosuid,nodev,relatime,barrier=1,data=writeback)
/dev/block/vold/179:1 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:1 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)
/dev/block/dm-0 on /mnt/asec/no.heskjasystem.ipTools-1 type vfat (ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/dm-1 on /mnt/asec/com.rovio.angrybirdsseasons-1 type vfat (ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/dm-2 on /mnt/asec/com.rovio.angrybirds-1 type vfat (ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

#

Se você estiver usando o Cyanogen do MAD Team, a saída do comando madteam_app2sd também confirmará se o app2sd está ativado corretamente:

# madteam_app2sd
/dev/block/mmcblk0p2 on /system/sd type ext4 (rw,relatime,barrier=1,data=writeback)
/dev/block/mmcblk0p2 on /data type ext4 (rw,nosuid,nodev,relatime,barrier=1,data=writeback)

Usage: madteam_app2sd [option]

Options:

* on      – enable App2SD
* off     – disable App2SD
* swapon  – enable swap
* swapoff – disable swap
* tweak   – optimize default filesystem attributes

MAD Team App2SD status:

App2SD:       activated

SD card used: 118400KB

SD card free: 1754608KB
Swap size:    209656KB

#

Outra alternativa é utilizar o Titanium Backup, que te mostra separadamente o espaço da partição app2sd.

4) Já criei as partições mas os scripts me dizem que a elas não estão formatadas. Como proceder?

Simples, formatando as partições. O fdisk não formata as partições, apenas demarca onde cada uma começa e termina e que sistema de arquivos a mesma hospedará. A formatação é feita através de outros comandos, segue:

Para a partição EXT4:

mkfs.ext2  -t ext4 -O ^huge_file /dev/block/mmcblk0p2

E depois tune2fs -c 0  /dev/block/mmcblk0p2 para desativar as verificações de 40 montagens e/ou 30 dias.

Para as partições FAT32:

mkfs.vfat /dev/block/mmcblk0p1

Para as partições de Swap:

mkswap /dev/block/mmcblk0p3

Algumas dessas opções podem estar disponíveis apenas com a adb shell em modo Recovery. Se algum comando não for encontrado, experimente fazer assim.

5) Não posso formatar sistema de arquivo montado

Essa mensagem será exibida se você tentar fazer a formatação e a partição estiver montada. Isso pode acontecer após algum erro ao instalar o app2sd e você tentar novamente. Experimente desmontar a partição com o comando umount /dev/block/mmcblk0p2 e tente novamente. Se o erro acontecer outra vez, tente fazer a formatação no Recovery Mode.

6) Como rodo os scripts de criação do app2sd no MAD 2.0.9.2?

Primeiramente utilize um Wipe Data/Factory Defaults.

Baixe os scripts contidos nesse link e descompacte em algum diretório qualquer. Coloque o celular em modo Recovery (ou use o script “1. recovery-mode.bat”) e depois utilize o script “2. install-config-app2sd.bat”. Se der erro, experimente rodar o script manualmente abrindo-o e executando os comandos nele contidos um por um, pra ter certeza do que está dando errado.

Após isso, dentro do adb shell, execute o script /tmp/config-app2sd que já foi previamente copiado para o celular no passo anterior.
Então, executando o menu de instalação, primeiramente utilize a opção “2” (App2SD default), e depois opção “5” (Swap enable).

Reboote seu celular e confira se o app2sd foi corretamente ativado.

7) Como rodo os scripts de criação do app2sd no Cyanogen pro Galaxy 5?

Isso eu testei várias vezes com o Cyanogen no Galaxy 5. Após ter criado as partições, utilize o Wipe Data/Factory Defaults. Boote seu celular normalmente, não configure sua conta do Google nem instale nada antes do app2sd. Acesse o celular por adb shell (não pode ser feito em Recovery) e digite o comando madteam_app2sd on. Fique atento com as mensagens na tela, pois ele formatará a /dev/block/mmcblk0p2 e fará as configurações necessárias por tune2fs.

Se suas partições estiverem corretamente setadas, ele finalizará avisando pra rebootar o celular. Não reboote ainda e rode o comando madteam_app2sd swapon. Esse é rapidinho. Após isso, reboote o celular e confira se o app2sd foi ativado corretamente (já expliquei como fazer a verificação).

Se após o boot, com o app2sd ligado, o sistema reclamar que o cartão de memória não está formatado e perguntar se você deseja formata-lo, responda não. No MAD 2.0.9.2 não tive problemas em aceitar a formatação do SD, mas no caso do Cyanogen, ao aceitar, o sistema formata inteiramente o cartão, e apaga também as suas partições criadas pelo app2sd.

Para resolver esse problema, reboote o celular no Recovery, acesse com o adb shell e formate a partição manualmente com o comando mkfs.vfat /dev/block/mmcblk0p1. Reboote novamente e a mensagem terá desaparecido.  🙂

Ficou com alguma dúvida? Entre em contato com o pessoal do canal #gti5500 na FreeNode ou pergunta aí embaixo.

Stay safe,
Lucas Timm.

 

Categorias:Android
  1. 23 de junho de 2011 às 10:32 am

    Lucas deixa ver se eu entendi… eu instalei o Cyanogen mas nao consigo de maneira nenhuma colocar o ext4 para que isso funcione eu tenho que particionar antes em ext4 e depois instalar a ROM? tenho um cartao de 8GB

    • 23 de junho de 2011 às 12:29 pm

      Cid, a ordem tanto faz. Eu costumo fazer após a instalação e antes de configurar a conta do google. Ou seja, no primeiro boot eu acesso o celular por ADB Shell e reconfiguro tudo. Meu cartão também é de 8GB, mas já fiz em outros celulares com cartão de 2 e 4GB também sem problema algum, mudando apenas o tamanho das partições. Qual o erro que você está encontrando?

      • Cid
        23 de junho de 2011 às 3:35 pm

        Eu não to conseguindo colocar em ext4 tipo tem uma maneira mais prática? Estou com a Cyanogen mas soh consigo pelo ADB criar um ext2 de 512mb se não me engano.. pelo menos a memoria interna ficou maior mas quero colocar 1GB

  2. 23 de junho de 2011 às 3:46 pm

    Tem vários artigos na internet ensinando a usar o fdisk, minha partição EXT4 tem 2GB. O procedimento é fácil. A partição criada pode ser EXT2, na hora que você rodar o “madteam_app2sd on” ele vai detectar a EXT2 e formatá-la em EXT4. O que é realmente importante é manter a ordem das partições conforme eu falei nesse artigo.

  3. 23 de junho de 2011 às 8:18 pm

    Cara funcionou, eu apaguei tudo depois na tela de inicializacao eu fiz

    adb shell reboot recovery

    quando entrou em modo recovery eu digitei

    adb shell app2sd 5500 2048

    Reiniciei o celular entrei no terminal e digitei

    mad2sd on

    depois

    mad2sd swapon

    reiniciei o celular agora estou com 2GB de memoria interna.. valeu 😀

  4. Neto
    12 de julho de 2011 às 4:35 am

    Olá, eu estou com problemas na ativação das partições com a rom 2.0.9.2… o link que você forneceu não está funcionando…

    Vendo pelo fdisk estão corretas, mas rodando adb shell mount, mostra exatamente como voce disse que é quando está desativado em um android 2.2

    Se puder me ajudar eu agradeço.

  5. 4 de janeiro de 2012 às 9:55 pm

    E ai cara, tudo bem?
    Eu consigo instalar a ROM CyanogenMod no meu Milestone 1 via ADB? Pois acontece o seguinte: Eu sou um caso raro, pois possuo um Milestone 1 que não abre o menu Recovery! Tem alguns casos por ai! Porém tenho dentro do meu SD o Open Recovery e dentro da pasta update a ROM e os apps do Google, quero apenas dar sequencia a instalação via ADB! Eu consigo? Se sim você pode me ajudar? Pois eu consigo acessar os arquivos! cheguei até a extrair os arquivos via Prompt!
    Muito bom seu post!
    Abração!

  6. Michael douglas da silva damasceno
    15 de janeiro de 2012 às 11:25 am

    Muito bom oh galaxy 5

  7. Pedro Porto
    4 de fevereiro de 2013 às 6:03 pm

    Olá amigo! Como faço para dar boot no sistema pelo SDCARD ou pelo menos montar a partição /data no sd e não na mtk? Meu android é o 4.0.3 com MT6573.

  8. Thalita Figueiredo
    25 de fevereiro de 2013 às 3:25 pm

    OI COMO FAÇO PRA ATIVAR O ARQUIVO EXT4 NO ANDROID ?
    AGUARDO RESPOSTA,OBRIGADA.

  9. 16 de janeiro de 2019 às 6:45 am

    Obrigado, comprei o meizu e ao registrar no site do fabricante é liberado o root. Estou utilizando 100$ do hardware

  1. 10 de junho de 2011 às 10:50 am

Deixe um comentário