FreeBSD na Cubieboard
Cubieboard é uma placa de desenvolvimento que se baseia em Allwinner A10 / A20 System-on-Chip (SoC).
Os detalhes técnicos completos para o Cubieboard estão disponíveis nesse link.
Desde a Cubieboard, o SD Controller não é suportado pelo FreeBSD ainda. Para inicializar o sistema na Cubieboard, você vai precisar de uma configuração mais complexa:
1) Cartão microSD com carregador u-boot e arquivos de sistema msdos contendo kernel do FreeBSD.
2) Memory stick USB com arquivos de sistema root FreeBSD.
Quando a Cubieboard é inicializada com microSD inserido, ele tenta iniciar a partir dele antes da NAND, então será executado u-boot a partir do SD que por sua vez irá carregar e executar o kernel. Como disse, sem suporte ao controller SD, o núcleo não tem acesso a microSD, então o root é montado a partir do stick USB.
Obter o FreeBSD head
Compile o kernel e World. Instale o World para Flash USB (substitua da0 com seu dispositivo de armazenamento USB).
CUBIEBOARD deve ser alterado para CUBIEBOARD2 se você tiver Cubieboard2 (Nota: Mude da0s2 para da0 na configuração do kernel).
# truncate -s 1024M cubie.img # mdconfig -f cubie.img -u0 # newfs /dev/md0 # mount /dev/md0 /mnt # make TARGET_ARCH=armv6 kernel-toolchain # make TARGET_ARCH=armv6 KERNCONF=CUBIEBOARD buildkernel # make TARGET_ARCH=armv6 buildworld # make TARGET_ARCH=armv6 DESTDIR=/mnt installworld distribution # umount /mnt # mdconfig -d -u0 # sysctl kern.geom.debugflags=16 # dd if=cubie.img of=/dev/da0 bs=4096k |
1. Para Cubieboard1, obtenha o arquivo SPL clicando aqui, para Cubieboard2, obtenha o arquivo SPL clicando aqui.
2. Para Cubieboard1, obtenha U-Boot binário a clicando aqui, para Cubieboard2, obtenha U-Boot binário clicando aqui.
3. Escreva binários (substituir da4 com o seu dispositivo). CUBIEBOARD deve ser alterado para CUBIEBOARD2 se você tiver Cubieboard2.
# dd if=/dev/zero of=a10.img bs=1m count=1 # dd if=sunxi-spl.bin conv=notrunc of=a10.img bs=1024 seek=8 # dd if=u-boot.bin conv=notrunc of=a10.img bs=1024 seek=32 # dd if=a10.img of=/dev/da4 bs=1m # gpart create -s MBR /dev/da4 # gpart add -b 1m -s 24m -t '\!12' /dev/da4 # gpart set -a active -i 1 /dev/da4 # newfs_msdos -L boot -F 16 /dev/da4s1 # mount_msdosfs /dev/da4s1 /mnt # cp /usr/obj/arm.armv6/usr/src/sys/CUBIEBOARD/kernel /mnt # umount /mnt |
1. Coloque o cartão SD e USB flash na Cubieboard.
2. Conecte-se utilizando um cabo console serial e com velocidade 115200
# cu -l /dev/ttyU0 -s 115200 |
3. Ligue sua placa e configure o comando de Boot
sun4i# fatload mmc 0 0x40200000 kernel; go 0x40200100 |
O boot não requer interação do usuário, prossiga com as instruções abaixo:
1. Instale a porta devel port / uboot-mkimage
2. Escreva um script com o nome de boot.cmd com os seguintes comandos:
fatload mmc 0 0x40200000 kernel go 0x40200100 |
3. Use o mkimage para converter este script para boot.scr:
mkimage -C none -A arm -T script -d boot.cmd boot.scr |
Insira o boot.scr gerado nos arquivos de sistema no cartão microSD. Agora uboot irá executar comandos a partir do seu script ao invés de procurar no prompt, de modo que o kernel será executado automaticamente.
Mais detalhes você pode acessar neste link
https://www.lojamundi.com.br/download/freebsd-na-cubieboard-1-e-2/freebsd-na-cubieboard-1-e-2.pdf
Fonte: https://wiki.freebsd.org/FreeBSD/arm/Cubieboard