Somente é necessário fazer isso uma vez. Baixe o arquivo mk2parts.txt e mude sua extensão para .sh. Garanta que ele seja executável.
$ mv mk2parts.txt mk2parts.sh $ chmod +x mk2parts.sh
Desmonte a partição do cartão se estiver montado e execute o script usando o endereço do dispositivo como argumento.
sudo ./mk2parts.sh sdb
Isso vai criar 2 partições no cartão. Formate-as como a seguir:
sudo mkfs.vfat -F 32 /dev/sdb1 -n BOOT sudo mkfs.ext3 -L ROOT /dev/sdb2
Adaptado de http://gumstix.org/create-a-bootable-microsd-card.html.
Verifique o endereço do cartão. Por exemplo, /dev/sdb. Desmonte, se o mesmo estiver montado.
Limpe a tabela de partições do cartão:
$ sudo dd if=/dev/zero of=/dev/sdb bs=1024 count=1024
Calcule quantos 'cilindros' serão necessários: NCylinders = NBytes ÷ 255 ÷ 63 ÷ 512
O número de bytes pode ser visto assim:
$ sudo fdisk -l /dev/sdb Disk /dev/sdb: 2016 MB, 2016411648 bytes
No caso de uma cartão de 8GB (7960788992 bytes) são 967 cilindros.
sudo sfdisk -D -uM -H 255 -S 63 -C 967 /dev/sdb
Digite os valores a seguir seguidos da tecla <Enter>:
0,64,0x0C,* <Enter> 75,,,- <Enter> 0,0,, <Enter> (repita isso mais uma vez) y <Enter>
Na primeira partição vao os arquivos MLO, u-boot.img e uImage, e na segunda o sistema de arquivos. Se já não tiver um lugar para montar, crie uma pasta em /media:
$ sudo mkdir /media/card
Agora basta montar as partições e copiar os respectivos arquivos:
$ sudo mount /dev/sdb1 /media/card $ cd /media/card $ sudo cp /yocto/build/tmp/deploy/images/MLO . $ sudo cp /yocto/build/tmp/deploy/images/u-boot.img . $ sudo cp /yocto/build/tmp/deploy/images/uImage . $ cd .. $ sudo umount /dev/sdb1 $ sudo mount /dev/sdb2 $ cd card $ sudo tar -xvjf /yocto/build/tmp/deploy/images/gumstix-console-image-overo-[...].rootfs.tar.bz2 $ cd .. $ sudo umount /dev/sdb2
O cartão está pronto para ser usado.
Antes de inciar aperte qualquer tecla para acessar a interface do u-boot:
# nand erase # reset
Se ocorrer um problema do tipo:
VFS: Cannot open root device "ubi0:rootfs" [...] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Solução: Antes de inciar aperte qualquer tecla para acessar a interface do u-boot:
# nand erase # reset