====== Criar SD card inicializável ======
===== Formatar =====
Somente é necessário fazer isso uma vez.
Baixe o arquivo {{:tutoriais: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 :
0,64,0x0C,*
75,,,-
0,0,, (repita isso mais uma vez)
y
===== 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