NASのサーバーSSL証明書に署名する認証局をでっち上げ,サーバーに接続する端末にこの認証局のCA証明書をインストールしていたが,最近買ったXperia Z1fはルートCA証明書をインストールすると起動時にWarningを表示して,結局うっとうしいので,フリーだがちゃんとした認証局で署名したサーバー証明書を使うように変更した.
使ったのは https://www.startssl.com/ の StartSSL free (class1) というのを使った.
NASのサーバーSSL証明書に署名する認証局をでっち上げ,サーバーに接続する端末にこの認証局のCA証明書をインストールしていたが,最近買ったXperia Z1fはルートCA証明書をインストールすると起動時にWarningを表示して,結局うっとうしいので,フリーだがちゃんとした認証局で署名したサーバー証明書を使うように変更した.
使ったのは https://www.startssl.com/ の StartSSL free (class1) というのを使った.
IIJから発表されたDS-Lite (Dual-Stack Lite,数年前のIPv6 over IPv4 のトンネルの逆でIPv6ネイティブな環境で IPv4 over IPv6 のトンネルを掘って IPv4 を通すトンネル技術)を,以下を参考にRTX810でつないでみた.
前回の続き.i2cで遊ぶのにシェルスクリプトは嫌なので,rubyかpythonを使いたいが,pythonしかはいっていないのでpythonでi2cを使えるようにした.
なんとなく買ったIntel GalileoでSDからLinuxを起動し,i2c-toolsを使えるようにしたメモ.
Interface 9月号に触発されてPCM5102Aの載ったI2S DACボードを買って動かしてみた.
買ったのはこれではなくてこっち.香港のDIY系通販サイトから直接購入.発注して1週間くらいで届いた.
Raspberry Pi Type Bは実験用に2台目を購入済み.
今回はオーディオ用ということで,Volumioというディストリビューションを入れてみた.
何年か前に組み立てたCore2-Duoなマシン,NASに使っていたHDDを入れたり,LinuxやFreeBSDを入れたり,だらだらと使い続けていたけど,そろそろもういいかなという感じになってきたので,思い切って処分することにした.
手始めにHDD消去.GNU shred (シュレッダーのシュレッド) を使うべく,Ubuntu Desktop 14.04のISOイメージ (ubuntu-14.04.1-desktop-amd64.iso) を落としてきて,UNetbootin でブータブルUSBを作成.
NASに使っていたHITACHIの2TB SATA3 HDDが2本あるので,これを消去する.
起動してから dmesgを見ると,/dev/sdbと/dev/sdc になっているようなので,
# shred -v -z -n 2 /dev/sdb # shred -v -z -n 2 /dev/sdc
として,ランダム,ランダム,ゼロの3回書き込み.Terminalを2つ立ち上げて,2台同時に処理.夜寝る前に始めて,次の日の夕方終わった.結構時間かかった.
あとは,分解して,HDDやマザーボード (DG965RY) を元の箱に入れて売却の準備.
来週資源ごみなので,PCケースをばらして金属ゴミとして出したい.
FreeBSD機 (Core2 duo),NetBSD機 (Raspberry pi)に同じpf.confを入れたが,FreeBSDでは動いて,NetBSDでは動かず.
具体的には,以下のルールがNetBSDでは弾かれる.icmp6は知らん,と.
pass inet6 proto icmp6 all
man pf.confを見るとicmp6って書いてあるが,その下に/etc/protocolsを見るとも書いてある.
proto <protocol> This rule applies only to packets of this protocol. Common protocols are icmp(4), icmp6(4), tcp(4), and udp(4). For a list of all the protocol name to number mappings used by pfctl(8), see the file /etc/protocols.
念のため,FreeBSDとNetBSDでicmp6がどう載っているか比べてみた.
FreeBSD
ipv6-icmp 58 IPV6-ICMP icmp6 # ICMP for IPv6
NetBSD
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 [RFC2460]
NetBSDにはicmp6が入っていなかった.NetBSD,FreeBSDどちらもipv6-icmpなら載っているので,pf.confにはipv6-icmpと書くことにした.
pass inet6 proto ipv6-icmp all
FreeBSD/armが安定しなかったので,NetBSD/evbarmを入れることにした.出戻り.
今回は,http://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/ からスナップショットのSDイメージを持ってきてさくっとインストール.アップデートもここからユーザーランドを持ってこれるので自ビルドする必要はなさそう.
sshdをインターネットにさらそうと思っているので,sshguardを入れるべく,pfを使えるようにする.そのためにはカーネルを作り直さないとダメみたいなので,FreeBSDの母艦PCでクロスビルドする.
ここと同じ.今回は /home/netbsd/current/src に展開.
/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も入れておいた.
基本的にはここと同じだが,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
クロス環境の構築に引き続きカーネルを構築.コマンドはほとんど同じ.
HOST_CC=gcc47 HOST_CXX=g++47 ./build.sh -O ../objarm -m evbarm -a earmhf -U kernel=RPI
基本的にクロスコンパイラーを使うのでHOST_CCとか指定する必要はなさそうだが,一応入れておいた.
objarm/sys/arch/evbarm/compile/RPI/netbsd.binをコピーして,NetBSD on Raspberry pi の /boot/kernel.img としておいて再起動.
カーネルはSDカード先頭のFATパーティションに置くことになっているが,/bootにマウントされているので,動作中に置き換え出来る.
FreeBSD 10-STABLE / arm のビルドメモ.
10-STABLE用のフォルダをzfsで用意して,svnで持ってくる.
# zfs create -o compression=lz4 -o exec=off -o setuid=off rpool/usr/src_stable10 # cd /usr # svn co https://svn0.us-west.freebsd.org/base/stable/10 src_stable10
crochet-freebsdというFreeBSD/armのブートイメージを作成するためのスクリプトが用意されているので,それを持ってくる.また,展開したフォルダにu-bootのソースも置いておく必要があり,合わせて取得.
# cd /usr/local # git clone https://github.com/kientzle/crochet-freebsd.git # cd crochet-freebsd # git clone https://github.com/gonzoua/u-boot-pi.git u-boot-rpi
crochet-freebsdのconfig.sh.sampleをコピーして編集する.
# diff -uN config.sh.sample config.sh --- config.sh.sample 2014-05-14 00:09:50.436616000 +0900 +++ config.sh 2014-05-14 00:15:05.937593000 +0900 @@ -25,7 +25,7 @@ #board_setup GenericI386 #board_setup PandaBoard #board_setup Soekris -#board_setup RaspberryPi +board_setup RaspberryPi #board_setup VersatilePB #board_setup ZedBoard #board_setup Wandboard @@ -45,7 +45,7 @@ # Suggested: option ImageSize #option ImageSize 100mb # for kernel-only images #option ImageSize 1950mb # for 2 Gigabyte card -#option ImageSize 3900mb # for 4 Gigabyte card +option ImageSize 3900mb # for 4 Gigabyte card # # How to Customize Your Build @@ -85,7 +85,7 @@ # couple of extra reboots, which can make this occasionally perplexing # to use. # -#option AutoSize +option AutoSize # Enable emailed status notifications. # This can also be enabled via the -e command-line flag. @@ -147,7 +147,7 @@ # it will tell you how to get appropriate sources into this directory. # (I find FREEBSD_SRC=${TOPDIR}/src to be useful.) # -#FREEBSD_SRC=/usr/src +FREEBSD_SRC=/usr/src_stable10 # You will probably never override this, but you may need to # understand it: WORKDIR holds all of the created and temporary files
crochet-freebsdのフォルダでスクリプトを実行し,しばし待つ.
# sh crochet.sh -c config.sh
出来上がったイメージをSDに焼いてブート.イメージは work/FreeBSD-armv6-10.0-RPI-B-r.img として出来上がる.