FreeBSD on Raspberry Pi
for fun and profit.

Przygotowania

Potrzebne nam będzie :
  • Masznyna z FreeBSD 10 (w moim przypadku BETA4), może być wirtualna z zainstalowanymi źródłami
  • Raspberry Pi (w moim przypadku werja B)
  • Karta pamięci 4G jest absolutnym minimum ponieważ jeszcze nie ma repozytriów pakietów dla ARM i trzeba wszystko kompilować z portów. Najlepiej Class 10

Przygotowanie systemu do kompilacji krzyżowej

cd /usr/src && make XDEV=arm XDEV_ARCH=armv6 xdev

Kompilujemy potrzebne pakiety

portsnap fetch update
#lub jesli nie mamy portow na swieżym systemie
portsnap fetch extract
cd /usr/ports/devel/git
make config-recursive #(pozostawiamy wartosci domyślne)
cd /usr/ports/textproc/gsed
make config-recursive #(pozostawiamy wartosci domyślne)
cd /usr/ports/lang/gcc
make config-recursive #(jesli nie potrzebujemy usuwamy support dla javy reszte pozostawiamy wartosci domyślne)
cd /usr/ports/devel/git && make install clean
cd /usr/ports/textproc/gsed && make install clean
cd /usr/ports/lang/gcc && make install clean

idziemy zrobic sobie kawe...

Pobieramy crochet-freebsd

ln -s /usr/local/bin/gcc46 /usr/local/bin/gcc
mkdir /root/rpi && cd /root/rpi
rehash #jesli korzysramy z tcsh
git clone https://github.com/kientzle/crochet-freebsd.git
cd crochet-freebsd/
git clone git://github.com/gonzoua/u-boot-pi.git ./u-boot-rpi

Podstawowa konfiguracja

echo "board_setup RaspberryPi \
option ImageSize 3900mb \
option GzipImage \
option User rpi \
option SwapFile 256mb \
option UsrPorts \
option UsrSrc" \
> rpi.sh


Warto ustawic sobie kilka opcji w rc.conf

Kompilacja i tworzenie obrazu

sh crochet.sh -c rpi.sh


Jeśli wszystko pojdzie dobrze otrzymujemy poniższe koncowe komuikaty, gdzie „root/rpi/crochet-freebsd/work/FreeBSD-armv6-10.0-RPI-B.img” jest lokalizacją naszego obrazu.
Completed disk image is in: /root/rpi/crochet-freebsd/work/FreeBSD-armv6-10.0-RPI-B.img

Copy to a suitable memory card using a command such as:
dd if=/root/rpi/crochet-freebsd/work/FreeBSD-armv6-10.0-RPI-B.img of=/dev/da0 bs=1m
(Replace /dev/da0 with the appropriate path for your card reader.)

Przykładowe zasrosowania : router z gsm, router wifi, serwer plików i wydruku, skaner sieciowy, thin client