Raspberry PIでVIMAGE用カーネルのビルド

やること

Raspberry PIFreeBSDをインストールして、VIMAGEを使う。 VIMAGEを使うには、カーネルのビルドが必要。 カーネルのビルドをRaspberry PIで行うと遅いため、amd64な環境でクロスコンパイルする。

パッケージのインストール

ccacheを使ってビルド時間を短縮する。どの程度短くなるのかはわからないけど。

pkg install ccache
echo 'WITH_CCACHE_BUILD=yes' >> /etc/src.conf
echo 'WITHOUT_KERNEL_SYMBOLS=yes' >> /etc/src.conf

ソースのチェックアウト

FreeBSDのソースをチェックアウト。 VIMAGEを有効化する。

cd /usr/src
svnlite co https://svn.FreeBSD.org/base/stable/11

cat << 'EOF' > /usr/src/sys/arm/conf/RPI-B-VIMAGE
ident RPI-B-VIMAGE
include   "RPI-B"

options   VIMAGE

EOF

ビルド

ターゲットのアーキテクチャを指定してビルドする。 仮想マシンのCPUの割当が2コアなので-j2をつけてみる。

setenv ARCH arm
setenv TARGET_ARCH armv6
make -j2 kernel-toolchain
make -j2 buildkernel KERNCONF=RPI-B-VIMAGE

mkdir ~/kernel-RPI-B-VIMAGE
make -j2 installkernel KERNCONF=RPI-B-VIMAGE DESTDIR=~/kernel-RPI-B-VIMAGE

Raspberry PIへインストール

~/kernel-RPI-B-VIMAGEをscpなどでRaspberry PIにコピーする。 コピーしたら、ディレクトリを入れ替えて再起動して終わり。

cd /boot
mv kernel kernel.org
mv dtb dtb.orig
cp -r ~/kernel-RPI-B-VIMAGE/* /boot
reboot

再起動が終わるとビルドしたカーネルになっているはず。

unarm -a
dimes | grep VIMAGE
    root@freebsd-vbox:/usr/obj/arm.armv6/usr/src/sys/RPI-B-VIMAGE arm
WARNING: VIMAGE (virtualized network stack) is a highly experimental feature.