====== 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