sexta-feira, 8 de junho de 2012

Montando imagens JFFS2

A popularização dos dispositivos móveis com suas constantes atualizações de firmware, que hoje são feitas  "a quente" e de maneira simples e descomplicada leva a curiosidade sobre como modificar ou apenas personalizar esse firmware, e isso é latente em sala de aula onde os questionamentos sobre o assunto são semanais.
Sistematizei aqui os passos para fazer a montagem de imagens Journalling Flash File System (JFFS2) utilizando uma distribuição linux qualquer, de maneira que qualquer um consiga ter acesso ao conteúdo do firmware e assim fazer as personalizações desejadas.
O JFFS2 tem sido empregado por grande parte dos fabricantes de dispositivos móveis que na maioria que  utilizam memórias Flash NAND [...] como no BA que falei em outro post.
Existem conjuntos de ferramentas para automatizar a montagem imagens de sistemas de arquivos desse tipo, mas para quem vai fazer isso uma vez ou outra, acho mais interessante montar manualmente - e também nos afasta da monotonia do clique aqui, clique ali. 
No Linux conseguimos fazer isso de duas maneiras, por emulação de  bloco Memory Technology Device (MTD) ou por emulação de memória MTD, vou abordar a segunda opção que eu acho mais simples e é a que eu sei fazer.

O primeiro passo é instalar o pacote MTD-TOOLS
apt-get install mtd-tools
Depois precisamos carregar os módulos MTD, não é necessário recompilar o kernel e tê-los estáticos, podemos carregar dinamicamente com modprobe [...] apenas quando precisamos.
modprobe -v jffs2
modprobe -v mtd
modprobe -v mtdblock
modprobe -v mtdchar
modprobe -v mtdram total_size=49792 erase_size=256

NOTA:  total_size=49792 é o tamanho em Kb da imagem que vou carregar.

Em seguida usando o dd copiamos a imagem JFFS2 para um dispositivo mtd que em /dev vai de mtd0 até mtd15 se não me engano. Usamos o primeiro se esse estiver vago.
dd if=rootfs.jffs2 of=/dev/mtd0
O arquivo rootfs.jffs2 é a imagem que estou preparando para montar, logo falo sobre ela.

Por fim montamos o dispositivo em um ponto qualquer.
mount -t jffs2 /dev/mtdblock0 /mnt/imgjffs2

Daqui para frente basta copiar os arquivos que estarão dentro de /mnt/imgjffs2 e fazer as modificações que quiser. Em outro momento falo como empacotar a imagem modificada, o que também é simples de fazer.

Utilizei esse método para extrair o conteúdo da imagem de firmware do GoFlex da Seagate. Foi uma forma que encontrei para avaliar suas funcionalidades, já que não tenho o hardware, se eu encontrar algo útil vou agregar ao meu BA com Debian.

Tocando no Walkman:

Nenhum comentário:

Postar um comentário

Olá

Por gentileza identifique-se, comentários sem identificação não serão publicados.

Obrigado
L.S.T.

Related Posts Plugin for WordPress, Blogger...