Création de la SD Card

Nous allons à présent pouvoir créé notre carte SD. Plusieurs étapes sont à suivre : génération de la table des partions, installation du bootloader et du noyau Linux puis enfin la copie de notre rootfs

Nous supossons ici que la carte ce trouve sur /dev/sdb


export card=/dev/sdb
export p=""

Nettoyer la carte


dd if=/dev/zero of=${card} bs=1M count=1

Avec la commande dd copier le fichier (if) u-boot-sunxi/spl/sunxi-spl.bin sur (of) ${card} par (bs) block de 1024 en commançant (seek) à partir du 8eme block :


dd if=u-boot-sunxi/spl/sunxi-spl.bin of=${card} bs=1024 seek=8 

Avec la commande dd copier le fichier (if) u-boot-sunxi/u-boot.img sur (of) ${card} par (bs) block de 1024 en commançant (seek) à partir du 40eme block :


dd if=u-boot-sunxi/u-boot.img of=${card} bs=1024 seek=40

Recharger la table des partitions


sfdisk -R ${card}

Puis creez avec sfdisk la nouvelle table de partion, dans l'ordre d'apparition avec comme unité le Mega Octet commençant à 16Mo (le début de la carte contient les fichiers copier avec dd) jusqu'a la fin de type Linux.
Nous utilisons la version avec une seul partion car pour l'instant je n'ai pas réussi à l'utiliser avec un partition séparer pour le /boot :


cat <<EOT | sfdisk --in-order -uM ${card}
16,,L (ou ,,L)
EOT
mkfs.ext4 ${card}${p}1

Monter la partion dans mnt, creez le dossier boot et copier les fichiers uImage et script.bin dedans :


mount ${card}${p}1 /mnt/
mkdir /mnt/boot
cp linux-sunxi/arch/arm/boot/uImage /mnt/boot/
cp sunxi-boards/sys_config/a20/script.bin /mnt/boot/

Il faut ensuite creer le fichier boot.cmd pour définir nos parametre de boot. ext2load permet de définir les addresse mémoire ou ce trouve le script et le fichier uImage. Ces adresse sont définit par le constructeur du processeur. Nous les avons écrit à ces emplacements:


echo "setenv bootargs console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x720p-60 root=/dev/mmcblk0p1 rootwait panic=10 ${extra}
ext2load mmc 0 0x43000000 /boot/script.bin
ext2load mmc 0 0x48000000 /boot/uImage
bootm 0x48000000" > /mnt/boot.cmd

Puis creer le fichier boot.src avec la commande suivante :


mkimage -C none -A arm -T script -d /mnt/boot/boot.cmd /mnt/boot/boot.scr

Nous allons maintenant copier le tout sur la carte :


cp -r ~/a20debian/* /mnt/
# cleanup
rm /mnt/usr/bin/qemu-arm-static /mnt/etc/resolv.conf
umount /mnt

Vous pouvez à présent tester en démarrant votre cubieboard avec la sd