BeagleBone Black の使い方を考える
BeagleBone Black で使えるソフトを探してみた。
「 ftp://ftp.jaist.ac.jp/pub/OpenBSD/snapshots/packages/arm/ 」の内容をみつつ、 使えるソフトがあるか考えた。
中には上記のURL内にないソフトもありますが、使えそうなので一応入れました。
isync
IMAP と MailDir のメールを同期することができるようです。
OpenPGP Public Key Server
OpenPGP の公開鍵サーバを作成できます。
http://sourceforge.net/projects/pks/
CryptNET Key Server
こちらも OpenPGP の公開鍵サーバを作成できます。
http://sourceforge.net/projects/cks/
OpenPKSd
OpenPGP の公開鍵サーバを作成できます。
日本製なのですが、公式ページが閉鎖されており、開発終了したのかも。
一応下記からアプリ自体はダウンロードできるようですが。
https://www.ipa.go.jp/security/fy16/development/openPKSD/
Baikal
CalDAVサーバです。
PHP と SQLite3 があれば動くらしいので、BBBでも動作可能だと思います。
https://github.com/jeromeschneider/Baikal
Radicale
こちらもCalDAVサーバです。
こちらは Python が必要です。
https://github.com/Kozea/Radicale
Dnsmasq
DNSキャッシュサーバです。
ローカル内での使用を想定されており、 DHCP や PXE 、 TFTP といった機能を提供できます。
DNSコンテンツサーバとしての機能は簡易的なもので、 あくまでキャッシュサーバ用のソフトです。
Unbound
こちらもDNSキャッシュサーバです。
Radmind
ファイルシステムを管理できます。
http://sourceforge.jp/projects/freshmeat_radmind/
http://freecode.com/projects/radmind
Redmine
Racktables
データセンタなどで、サーバ資源やラック、IPアドレスを管理するためのソフトウェアです。
RackMonkey
これはラック管理専用のソフトです。
OpenNTPD
OpenBSD に標準でインストールされているNTPサーバです。
spamd
OpenBSD を current にする
OpenBSD を current にします。
OpenBSD では current を追いかけることを推奨しています。 なので、そのための手順を解説します。
公式のマニュアルにそって行っていますが、正直きちんとできているのか自信がありません。
環境
OS: OpenBSD-current
準備
まず、最新の snapshot 版をインストールします。 release でもいいのですが、こちらの方が手順が少し少なくてすむのでおすすめです。
初期設定
CVS リポジトリにアクセスするため、 「 .profiles 」に以下を追加します。
CVSROOT="anoncvs@anoncvs.jp.openbsd.org:/cvs"
export CVSROOT
再度ログインするか、上記をプロンプトで打って反映させます。
リポジトリのダウンロードと更新
あらかじめ「 src.tar.gz 」をダウンロードし、「 /tmp 」に配置します。
# cd /tmp/
# ftp ftp://ftp.jaist.ac.jp/pub/OpenBSD/5.4/src.tar.gz
# cd /usr/
# tar pxzf /tmp/src.tar.gz
# cd /usr/src/
# cvs -d$CVSROOT up -Pd
アップデートするときも同一の cvs コマンドを使用します。
# cd /usr/src
# cvs -d$CVSROOT up -Pd
カーネルをビルドする。
使用しているアーキテクチャに合わせたカーネルをビルドし、 インストールします。
今回は「 i386 」なので以下になりますが、 異なるアーキテクチャの場合はそれに合わせます。
# cd /usr/src/sys/arch/i386/conf
# config GENERIC
# cd ../compile/GENERIC/
# make clean && make depend && make
# make install
インストールが終わったら再起動させます。
# reboot
ユーザランドをビルド
次にカーネル以外の部分を最新にします。
# rm -rf /usr/obj/*
# cd /usr/src/
# make obj
あとで必要になるため、以下のディレクトリを作成しておきます。
# mkdir /usr/obj/ports
ビルドを行います。 かなり時間(3時間ぐらい)がかかるので、気長に待ちましょう。
# cd /usr/src/etc && env DESTDIR=/ make distrib-dirs
# cd /usr/src
# make build
細かな変更の適用
ビルドが終了したら「 Following -current 」 を確認し、必要な変更を行います。
snapshot 版を使用したのは、 これなら release よりも新しく、 この変更が少なくてすむからです。
例えば 2013/12/04 には、 2013/12/08 に libcompat が廃止されたので、 以下のコマンドを実行し、 必要のないファイルを削除するように書かれています。
# rm -f /usr/lib/libcompat.a /usr/lib/libcompat_p.a
# rm -f /usr/include/{re_comp,regexp,sgtty,sys/timeb}.h
# rm -f /usr/share/man/man3/{re_comp,re_exec,rexec,regexp}.3
# rm -f /usr/share/man/man3/{cuserid,ftime,gtty,setrgid,setruid,stty}.3
これ以外にも様々な指示があるので、 よく内容を読んで実行してください。
ports の初期設定
次に ports の設定を行います。 まず、カーネルと同様ににソースコードをダウンロードして 最新にします。
なお、これ以降は基本的にルートユーザ以外で行っています。 あらかじめ sudo の設定を行ってください。
$ cd /tmp/
$ ftp ftp://ftp.jaist.ac.jp/pub/OpenBSD/snapshots/ports.tar.gz
$ cd /usr/
$ sudo tar pxzf /tmp/ports.tar.gz
アップデートには下記を使用
$ cd /usr/ports/
$ sudo cvs -d$CVSROOT up -Pd
「 /etc/mk.conf 」に以下を追加します。
SUDO=/usr/bin/sudo
USE_SYSTRACE=Yes
WRKOBJDIR=/usr/obj/ports
DISTDIR=/usr/distfiles
PACKAGE_REPOSITORY=/usr/packages
アクセス権を修正します。
$ sudo chgrp -R wsrc /usr/ports
$ sudo find /usr/ports -type d -exec chmod g+w {} \;
フォルダを作成します。
$ sudo mkdir /usr/obj/ports
$ sudo mkdir /usr/distfiles
$ sudo mkdir /usr/packages
基本的な使用方法
検索
$ cd /usr/ports
$ make search key=rsnapshot
必要なものが見つかったら、 そのディレクトリに移動し、 以下のコマンドを使用して、 インストールを行います。
インストール
$ sudo make install
フレーバーの表示
$ make show=FLAVORS
フレーバーの設定してインストール。
$ sudo env FLAVOR=no_x11 make install
サブパッケージの表示
$ make show=MULTI_PACKAGES
サブパッケージを指定してインストール
$ env SUBPACKAGE="-server" make install
以上です。
参考資料・リンク
5 - Building the System from Source
15 - The OpenBSD packages and ports system
更新履歴
2013/12/27 初版
2013/12/29 一部誤字等を修正
BeagleBoneBlack に OpenBSD をインストール
ARM ボードである BeagleBone Black に OpenBSD をインストールする方法です。
今回これを選んだのは比較的簡単に購入可能で、 なおかつ OpenBSD が動作するからです。 比較的有名な RaspberryPi については、 今のところ公式では対応していないようです。
手順についてはほとんどはx86系と同一です。 ただ、ディスクの設定等、いくつか注意すべき点があります。
環境
OS: OpenBSD5.4-snapshot
アーキテクチャ: ARMv7
準備
まず、必要なものは以下です。
- BeagleBoneBlack 本体
密林等で比較的簡単に購入できます。(5000円ぐらい) - 母艦
OpenBSD機である必要はありませんが、 dd コマンドと下記のシリアルコンソール接続が可能である必要があります。 - 3.3V 動作のシリアルコンソール接続手段
コンソール接続のために、通常の 5V ではなく 3.3V のシリアル接続が必要です。 今回は USB シリアル変換アダプターを使用しました。 - MicroSDHC カード
OS等はこのカードにインストールします。 BeagleBoneBlack には基板上にも記録用のフラッシュメモリがありますが、 MicroSDHC カードが接続されている場合は、最終的にそちらでブートを行います。
MicroSDHC カードについて
MicroSDHC カードについて少し問題があったため解説します。
インストールのために「 miniroot-am335x-54.fs 」を、 MicroSD カードに書き込むのですが、 2Gの MicroSD カード(昔使っていたのが余っていたため)を使用すると、 なぜかおかしくなり正常にインストールができませんでした。
なので、最低でも4G以上の MicroSDHC カードを使用する必要があります。 (使用した 2G の MicroSD カードの方が故障している可能性もあります)
下準備
まず OpenBSD の ARMv7 のファイルから「 miniroot-am335x-54.fs 」をダウンロードします。
公式ページにもありますが、 OpenBSD5.4 から他のいくつかの ARM ボードと統合されているため、
「 /pub/OpenBSD/snapshots/armv7/ 」から取得したほうがいいです。
使用する MicroSDHC を母艦に接続し、ddコマンドでマイクロカーネルを書き込みます。
\% sudo dd if=miniroot-am335x-54.fs of=/dev/sdb
インストーラの起動
書き込みを行った MicroSDHC とUSBシリアル変換アダプターを接続してコンソール接続した後、 電源を接続して起動させます。
インストールを行うか聞いてくるので、「I」を入力します。
ターミナルのタイプを選択します。
Terminal type? [vt220] <<ENTER>>
次にホスト名を設定します。
System hostname? (short form, e.g. 'foo') host1 <<ENTER>>
NICの設定を行います。
それぞれの環境に合わせてIPアドレスとネットマスクを設定してください。
IPv6 については後々行うことにして、いまは設定しません。
Available network interfaces are: cpsw0.
Which one do you wish to configure? (or 'done') [cpsw0] <<ENTER>>
IPv4 address for cpsw0? (or 'dhcp' or 'none') [dhcp] 10.0.10.8 <<ENTER>>
Netmask? [255.0.0.0] 255.255.255.0 <<ENTER>>
IPv6 address for cpsw0? (or 'rtsol' or 'none') [none] <<ENTER>>
Available network interfaces are: cpsw0.
Which one do you wish to configure? (or 'done') [done] <<ENTER>>
ネットワークとドメイン名の設定を行います。
こちらもそれぞれの環境に合わせて行ってください。
Default IPv4 route? (IPv4 address, 'dhcp' or 'none') 10.0.10.254 <<ENTER>>
DNS domain name? (e.g. 'bar.com') [my.domain] domein.local <<ENTER>>
DNS nameservers? (IP address list or 'none') [none] 10.0.10.254 <<ENTER>>
rootのパスワードとその他の設定です。
Password for root account? (will not echo) password <<ENTER>>
Password for root account? (again) password <<ENTER>>
Start sshd(8) by default? [yes] <<ENTER>>
Start ntpd(8) by default? [no] <<ENTER>>
ユーザを作成します。
sshログイン時には基本的にこちらを使用します。
Setup a user? (enter a lower-case loginname, or 'no') [no] us01<<ENTER>>
Full user name for us01? [us01] us01<<ENTER>>
Password for us01 account? (will not echo) password <<ENTER>>
Password for us01 account? (again) password <<ENTER>>
Since you set up a user, disable sshd(8) logins to root? [yes] <<ENTER>>
時刻領域の設定を行います。
What timezone are you in? ('?' for list) [Asia/Tokyo] <<ENTER>>
次からが最大の問題であるディスクの設定です。 MicroSDHC カードを使用するので、容量の配分に注意しないと後々不具合が発生する可能性があります。
今回は4Gの MicroSDHC カードを使用しています。
Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0] <<ENTER>>
Use DUIDs rather than device names in fstab? [yes] <<ENTER>>
Disk: sd0 geometry: 465/255/63 [7483392 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
*0: 0C 0 1 1 - 1 254 63 [ 63: 32067 ] Win95 FAT32L
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
3: A6 0 1 2 - 1 254 63 [ 64: 32066 ] OpenBSD
Use (W)hole disk or (E)dit the MBR? [whole] <<ENTER>>
Creating a FAT partition and an OpenBSD partition for rest of sd0...done.
/dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)
bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=64
The auto-allocated layout for sd0 is:
# size offset fstype [fsize bsize cpg]
a: 880.1M 32832 4.2BSD 2048 16384 1 # /
b: 240.2M 1835264 swap
c: 3654.0M 0 unused
d: 2149.5M 2327200 4.2BSD 2048 16384 1 # /usr
e: 368.1M 6729408 4.2BSD 2048 16384 1 # /home
i: 16.0M 64 MSDOS
ここでデフォルトのパーティション設定が表示されますが、修正する必要があるので、 「e」を選択して編集モードに移行します。
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e <<ENTER>>
表示内容を見てみると「/」に880Mが割り振られていますが、これは過剰です。 また、 OpenBSD の仕様上「/bsd」がディスクの先頭 504M 以内にないと boot できないため、 将来的に問題が発生する可能性があります。
このため、4Gの容量を以下の様に配分し直します。
/ 256MB
swap 256MB
/tmp 128MB
/var 512MB
/usr 1GB
/usr/local 512MB
/home 512MB
「/」が少ないように見えますが、 実際はほとんど「/usr」と「/var」が容量を消費するため、問題はありません。
今のところ(2013年12月) BeagleBoneBlack ではUSBは使用できないようなので、 容量が必要な場合は NFS 等を使用して、他のホストのストレージを使用する必要があります。
まず、ブートローダのある「MSDOS」領域以外を削除します。 (この領域を削除すると失敗するので注意してください。)
> d a
> d b
> d d
> d e
次に必要な領域を追加します。
> a a
offset: [32832]
size: [7450560] 256M
FS type: [4.2BSD]
mount point: [none] /
> a b
offset: [562272]
size: [6921120] 256M
FS type: [swap]
> a d
offset: [1076355]
size: [6407037] 128M
FS type: [4.2BSD]
mount point: [none] /tmp
> a e
offset: [1349440]
size: [6133952] 512M
FS type: [4.2BSD]
mount point: [none] /var
> a f
offset: [2393664]
size: [5089728] 1024M
FS type: [4.2BSD]
mount point: [none] /usr
> a g
offset: [4482112]
size: [3001280] 512M
FS type: [4.2BSD]
mount point: [none] /usr/local
> a h
offset: [5526336]
size: [1957056] 512M
FS type: [4.2BSD]
mount point: [none] /home
最終的には以下になりました。
> p m
OpenBSD area: 32832-7483392; size: 3638.0M; free: 445.7M
# size offset fstype [fsize bsize cpg]
a: 258.5M 32832 4.2BSD 2048 16384 1 # /
b: 251.0M 562272 swap
c: 3654.0M 0 unused
d: 133.3M 1076384 4.2BSD 2048 16384 1 # /tmp
e: 509.9M 1349440 4.2BSD 2048 16384 1 # /var
f: 1019.8M 2393664 4.2BSD 2048 16384 1 # /usr
g: 509.9M 4482112 4.2BSD 2048 16384 1 # /usr/local
h: 509.9M 5526336 4.2BSD 2048 16384 1 # /home
i: 16.0M 64 MSDOS
最後に変更を書き込んで終了させます。
> w
> q
ファイルシステムの作成に少々時間がかかります。
最後にインストールです。
先に述べたように、今のところ BeagleBoneBlack ではUSBは使用できないため、 別途CDドライブを接続してインストールする、といったことはできません。
このため、 BeagleBoneBlack ではネットワーク上にあるサーバから必要なファイルを取得して インストールすると言う手法を使用します。
リモート上のミラーサーバを使用する事もできますが、 今回はローカル内にhttpサーバを設置し、そこに置いたファイルを使用してインストールを行います。
HTTPサーバであればいいので、 OpenBSD である必要はありません。 配布サーバの「/pub/OpenBSD/snapshots/armv7」以下のファイルをとりあえず全て設置すればいいです。 ディレクトリ階層については同じにする必要はありません(インストール時に指定可能)が、 合わせておいた方が楽です。
厳選する場合は「 OMAP 」とついたファイルと、各種 tgz ファイル、 あと必ず「index.txt」を設置してください。 (これがないとファイルを見つけられない?)
Let's install the sets! Location of sets? (disk ftp http nfs or 'done') [http] <<ENTER>>
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] <<ENTER>>
Server? (hostname, list#, 'done' or '?') [ftp.jaist.ac.jp] 10.0.10.2
Server directory? [/pub/OpenBSD/snapshots/armv7] <<ENTER>>
Select sets by entering a set name, a file name pattern or 'all'. De-select
sets by prepending a '-' to the set name, file name pattern or 'all'. Selected
sets are labelled '[X]'.
[X] bsd.OMAP [X] etc54.tgz [X] game54.tgz
[X] bsd.rd.OMAP [X] comp54.tgz
[X] base54.tgz [X] man54.tgz
Set name(s)? (or 'abort' or 'done') [done] <<ENTER>>
インストール中・・・・・
Location of sets? (disk ftp http nfs or 'done') [done] <<ENTER>>
Time appears wrong. Set to '現在時刻'? [yes] <<ENTER>>
Saving configuration files...done.
Generating initial host.random file...done.
Making all device nodes...done.
これで完了です。再起動すればOSが起動し、 SSH での作業が可能になります。
# reboot
ただ、起動には少し時間がかかります。 気長に待ちましょう。
なお、インストール後のディスク使用量は以下のようになっていました。
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sd0a 253M 29.2M 211M 12% /
/dev/sd0h 502M 18.0K 477M 0% /home
/dev/sd0d 131M 4.0K 124M 0% /tmp
/dev/sd0f 1001M 335M 616M 35% /usr
/dev/sd0g 502M 212K 476M 0% /usr/local
/dev/sd0e 502M 3.1M 474M 1% /var
current にするのも行いましたが失敗しました。 それについては後日まとめます。
以上です。
参考資料・リンク
更新履歴
- 2013/12/20 初版