UNIX的技術向上計画

UNIX系のOS。主にOpenBSDとUbuntuについて、自分のメモも兼ねて書いていきます。基本的に内容及びリンク先については保証致しません。ご了承ください。

BeagleBone Black の使い方を考える

BeagleBone Black で使えるソフトを探してみた。

ftp://ftp.jaist.ac.jp/pub/OpenBSD/snapshots/packages/arm/ 」の内容をみつつ、 使えるソフトがあるか考えた。

中には上記のURL内にないソフトもありますが、使えそうなので一応入れました。

isync

IMAP と MailDir のメールを同期することができるようです。

http://isync.sourceforge.net/

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

http://baikal-server.com/

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アドレスを管理するためのソフトウェアです。

http://racktables.org/

RackMonkey

これはラック管理専用のソフトです。

OpenNTPD

OpenBSD に標準でインストールされているNTPサーバです。

spamd

OpenBSD に標準でインストールされているスパムフィルタです。

OpenBSD を current にする

OpenBSD を current にします。

OpenBSD では current を追いかけることを推奨しています。 なので、そのための手順を解説します。

公式のマニュアルにそって行っていますが、正直きちんとできているのか自信がありません。

環境

OS: OpenBSD-current

アーキテクチャ: i386

準備

まず、最新の 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

Anonymous CVS

更新履歴

  • 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 にするのも行いましたが失敗しました。 それについては後日まとめます。

以上です。

参考資料・リンク

OpenBSD/armv7

INSTALL.armv7

使用したUSBシリアル変換アダプター

更新履歴

  • 2013/12/20 初版