Mediacreate, sua nova ferramenta para criar e formatar cartões SD
- por Sergio Prado
Seja nos treinamentos que ministro, projetos em que atuo ou mesmo reviews de placas que escrevo aqui no blog, lido no dia-a-dia com diversas placas que rodam o sistema operacional do pinguim mais querido do mundo.
E se tem algo que sempre senti falta ao trabalhar com Linux embarcado, é uma ferramenta para automatizar o processo de particionamento, formatação e gravação de imagens em cartões SD (ou qualquer outro dispositivo de armazenamento).
Mais do que isso, uma ferramenta que, dado o bootloader, kernel e rootfs, saiba formatar e criar os cartões para as principais placas de baixo custo do mercado. Com um único comando, formatar e criar um cartão para a Beaglebone Black ou para a Raspberry Pi. Simples assim.
Bom, se Maomé não vai até a montanha, a montanha vem até Maomé! Eis que lhes apresento a ferramenta mediacreate.
MEDIACREATE
A ferramenta esta hospedada no GitHub. O primeiro passo é clonar o repositório do projeto:
$ git clone git@github.com:sergioprado/mediacreate.git $ cd mediacreate/ $ ls configs LICENSE mediacreate README.md |
A ferramenta foi escrita em shell script, e sua interface é simples:
$ ./mediacreate -h mediacreate version 1.0 usage: mediacreate [options] -d, --device device node file -c, --config config filename -f, --force do not ask before partitioning device -z, --zero clear first blocks of disk before starting -g, --debug show debug messages -h, --help this help |
O primeiro passo é criar um arquivo de configuração com as informações sobre como particionar, formatar e copiar as imagens da sua placa para o cartão SD. A versão inicial já vem com alguns exemplos no diretório configs (Beaglebone Black, i.MX53 Quick Start Board e Raspberry Pi).
Por exemplo, este é o arquivo de configuração padrão da Beaglebone Black (configs/bbb_linux.cfg):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# # Config file example # # Board: Beaglebone Black # OS: GNU/Linux # # set disk information DOS=true GEOMETRY=255,63 # create disk partitions PARTITION=,70,0x0C,* PARTITION=,,0x83,- # format partitions FORMAT=1,boot,vfat FORMAT=2,rootfs,ext4 # copy images to disk partitions IMAGE=1,MLO,file,/ IMAGE=1,u-boot.img,file,/ IMAGE=1,uEnv.txt,file,/ IMAGE=1,uImage,file,/ IMAGE=1,am335x-boneblack.dtb,file,/ IMAGE=2,rootfs.ext4,raw,0 # images location IMGDIR=~/beagleboneblack/images |
Os parâmetros DOS e GEOMETRY configuram o disco com a geometria necessária para o Sitara AM335x acessar a partição FAT e carregar o X-Loader. As variáveis do tipo PARTITION definem as partições do disco, no formato interpretado pela ferramenta sfdisk. As variáveis do tipo FORMAT definem a formatação das partições, e as variáveis do tipo IMAGE definem as imagens que devem ser gravadas no cartão.
Uma descrição completa sobre como usar cada um dos parâmetros encontra-se no arquivo de configuração padrão em configs/default.cfg.
Então é só executar a ferramenta passando o nome do dispositivo do cartão e o arquivo de configuração:
$ sudo ./mediacreate -d /dev/sdd -c configs/bbb_linux.cfg -f -z [Qua Out 2 19:34:45 BRT 2013] Starting mediacreate V1.0 [Qua Out 2 19:34:45 BRT 2013] Reading config file [Qua Out 2 19:34:45 BRT 2013] Umounting disk partitions [Qua Out 2 19:34:45 BRT 2013] Clearing first blocks of disk [Qua Out 2 19:34:48 BRT 2013] Creating disk partitions [Qua Out 2 19:34:48 BRT 2013] Formating disk partitions [Qua Out 2 19:34:48 BRT 2013] Formatting disk partition [/dev/sdd1] to [vfat] [Qua Out 2 19:34:51 BRT 2013] Formatting disk partition [/dev/sdd2] to [ext4] [Qua Out 2 19:35:35 BRT 2013] Copying images to disk [Qua Out 2 19:35:35 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/MLO] to [/] at partition [/dev/sdd1] [Qua Out 2 19:35:35 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/u-boot.img] to [/] at partition [/dev/sdd1] [Qua Out 2 19:35:36 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/uEnv.txt] to [/] at partition [/dev/sdd1] [Qua Out 2 19:35:36 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/uImage] to [/] at partition [/dev/sdd1] [Qua Out 2 19:35:37 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/am335x-boneblack.dtb] to [/] at partition [/dev/sdd1] [Qua Out 2 19:35:37 BRT 2013] Copying [/home/sprado/workspace/build/boards/bbb/images/rootfs.ext4] at position [0] to [/dev/sdd2] at block [0] [Qua Out 2 19:35:39 BRT 2013] Media successfully created! |
Simples assim!
PRÓXIMOS PASSOS
A ferramenta esta bem funcional. Sinta-se livre para testá-la.
Tenho algumas idéias de melhorias, como alterar a forma como é realizada a configuração do particionamento. O sfdisk não uma das ferramentas mais agradáveis para se trabalhar…:)
Pretendo também liberar novos arquivos de configuração conforme vou trabalhando em outras placas.
A ferramenta é liberada sob licença Apache 2.0. Use o github para contribuir ou reportar bugs. Qualquer dúvida é só me escrever!
Um abraço,
Sergio Prado