netbsd on Raspberry Pi 2 日記(5)
クロスコンパイルでユーザランドを作る
$ cd /opt/NetBSD-7.0/usr/src $ ./build.sh -O ../objarm -T ../toolsarm -m evbarm -a earmv7hf -U -u distribution
これで、母艦側の /opt/NetBSD-7.0/usr/objarmの下に、ユーザランドのバイナリなどが生成される。
ただ、このままだと、ターゲットであるRaspberry Pi2に持って行きづらい(パーミッションとかが違うし)ので、 NetBSDの配布物のようにsets/*.tarを作ってから持って行くと便利。
ユーザランドのtarballを作る
$ cd /opt/NetBSD-7.0/usr/src $ ./build.sh -O ../objarm -T ../toolsarm -m evbarm -a earmv7hf -U -u sets
これで、母艦側の /opt/NetBSD-7.0/usr/objarm/releasedir/evbarm/binary/sets の下に、tarballができる。
$ ls /opt/NetBSD-7.0/usr/objarm/releasedir/evbarm/binary/sets/ MD5 comp.tgz man.tgz tests.tgz SHA512 etc.tgz misc.tgz text.tgz base.tgz games.tgz modules.tgz
これらのファイルを、Raspberry Pi 2側に持って行ってから展開すると、 バイナリを更新できる(etc.tgzは除く)。
例えば、/tmpにtarballをコピーしていたら、以下のような感じ
$ ls /tmp MD5 comp.tgz man.tgz tests.tgz SHA512 etc.tgz misc.tgz text.tgz base.tgz games.tgz modules.tgz $ cd / $ sudo tar xvpzf /tmp/base.tgz $ sudo tar xvpzf /tmp/comp.tgz :
etc.tgzは、上書きすると設定が消えるので、etcupdateとかでアップデートする。NetBSDの公式の Chapter 33. Updating an existing system from sources あたりに書いているみたい。
$ sudo /usr/sbin/postinstall -s /tmp/etc.tgz check $ sudo /usr/sbin/postinstall -s /tmp/etc.tgz fix $ sudo /usr/sbin/etcupdate -s /tmp/etc.tgz