Tabela de conteúdos

Criar SD card inicializável

Formatar

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.

Cuidado com o que você está formatando aqui! Você provavelmente não quer formatar seu disco rígido.

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

Formatar (Método alternativo)

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>

Copiar os arquivos

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.

Sempre que houver mudança de versão do u-boot, a NAND deve ser resetada (?). Se aparecer um erro do tipo ”Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)”, isso pode resolver.

Antes de inciar aperte qualquer tecla para acessar a interface do u-boot:

# nand erase
# reset

Problemas comuns

Não completa o boot

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