NetBSD/evbarm(2) with pf

投稿日:

FreeBSD/armが安定しなかったので,NetBSD/evbarmを入れることにした.出戻り

今回は,http://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/ からスナップショットのSDイメージを持ってきてさくっとインストール.アップデートもここからユーザーランドを持ってこれるので自ビルドする必要はなさそう.

sshdをインターネットにさらそうと思っているので,sshguardを入れるべく,pfを使えるようにする.そのためにはカーネルを作り直さないとダメみたいなので,FreeBSDの母艦PCでクロスビルドする.

1. ソースの取得

ここと同じ.今回は /home/netbsd/current/src に展開.

2. kernel config

/src/sys/arch/evbarm/conf/RPI の末尾を見ると,

% tail RPI

# data mover pseudo-devices
#pseudo-device swdmover # software dmover(9) back-end
#pseudo-device dmoverio # /dev/dmover dmover(9) interface

# userland interface to drivers, including autoconf and properties retrieval
pseudo-device drvctl

# local configuration
cinclude "arch/evbarm/conf/RPI.local"

とあるので,RPI.localを作っていろいろ追加していけばよさそう.ということで,こんなRPI.localにした.

% cat RPI.local
file-system UNION # union file system
pseudo-device pf # PF packet filter 
pseudo-device pflog # PF log if
pseudo-device vlan # IEEE 802.1q encapsulation

※ついでに使うかわからないけど,union file systemとvlanも入れておいた.

3. クロス環境の構築

基本的にはここと同じだが,archとしてearmhf を指定することと,FreeBSD/amd64のclangでコンパイルできなかったので,gccを使うことに注意.

まず,gccを入れてなかったのでインストールから.

# pkg install gcc

gcc-4.7.1がgcc47として入るので,クロス環境の構築時に指定してあげる.earmhfも指定する.

% cd /home/netbsd/current/src
% HOST_CC=gcc47 HOST_CXX=g++47 ./build.sh -O ../objarm -m evbarm -a earmhf -U tools

4. カーネル構築

クロス環境の構築に引き続きカーネルを構築.コマンドはほとんど同じ.

HOST_CC=gcc47 HOST_CXX=g++47 ./build.sh -O ../objarm -m evbarm -a earmhf -U kernel=RPI

基本的にクロスコンパイラーを使うのでHOST_CCとか指定する必要はなさそうだが,一応入れておいた.

5. カーネルの入れ替え

objarm/sys/arch/evbarm/compile/RPI/netbsd.binをコピーして,NetBSD on Raspberry pi の /boot/kernel.img としておいて再起動.

カーネルはSDカード先頭のFATパーティションに置くことになっているが,/bootにマウントされているので,動作中に置き換え出来る.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です