This instruction is no longer correct. New version is here

Took some time but it seems we’re there too 🙂

Alexander Rybalko, who works on USB drivers for the platform got remote telnet shell to the device: http://pastebin.com/6NqQLWD2

Having fixed serial console for userland applications (two lines change) and after some tweaking of SDHCI driver I got access to multiuser shell too: multiuser.txt

Still not usable for putting together distros but stable enough for those who are willing to get their hands dirty with kernel side.

Here is short how to on getting FreeBSD boot on Raspberry Pi:

Get sources:



git clone git://github.com/gonzoua/freebsd-pi.git

cd freebsd-pi

git checkout rpi



Fetch u-boot files from here: freebsd-pi-uboot-20120806-sd.tar.gz.

Build sources and create SD card image with script like this:

#!/bin/sh

set -e

export TARGET_ARCH=arm

export SRCROOT=/usr/home/gonzo/Sources/freebsd-pi

export MAKEOBJDIRPREFIX=/usr/home/gonzo/Sources/obj

export KERNCONF=RPI-B

KERNEL_BIN=`realpath $MAKEOBJDIRPREFIX`/arm.arm/`realpath $SRCROOT`/sys/$KERNCONF/kernel.bin

make -C $SRCROOT kernel-toolchain

make -C $SRCROOT KERNCONF=$KERNCONF WITH_FDT=yes buildkernel

make -C $SRCROOT TARGET_CPUTYPE=armv6 MALLOC_PRODUCTION=yes buildworld

IMG=bsd-pi.img

rm -f $IMG

dd if=/dev/zero of=$IMG bs=128M count=8

MDFILE=`mdconfig -a -f bsd-pi.img`

gpart create -s MBR ${MDFILE}

gpart add -s 32m -t '!12' ${MDFILE}

gpart add -s 896m -t '!12' ${MDFILE}

gpart set -a active -i 1 ${MDFILE}

newfs_msdos -L boot -F 16 /dev/${MDFILE}s1

newfs /dev/${MDFILE}s2

mount_msdosfs /dev/${MDFILE}s1 /mnt

tar -x -v -z -C /mnt -f freebsd-uboot-sd.tar.gz

cp $KERNEL_BIN /mnt

umount /mnt

mount /dev/${MDFILE}s2 /mnt

make -C $SRCROOT DESTDIR=/mnt installworld

make -C $SRCROOT DESTDIR=/mnt distribution

# Minimal config

echo 'hostname="freebsd-pi"' > /mnt/etc/rc.conf

echo '/dev/mmcsd0s2 / ufs rw 1 1' > /mnt/etc/fstab

umount /mnt

mdconfig -d -u $MDFILE



dd image to SD card, insert it to Raspberry Pi and check serial port for some output

There is also U-Boot configuration that uses dhcp/tftp method by default freebsd-pi-uboot-20120806-netboot.tar.gz. It’s more suitable for kernel hacking but requires environment setup.