ARMアーキテクチャの高速CPU搭載、フルモデルチェンジしたOpenBlocks徹底レビュー 3ページ

OpenBlocksをセットアップしてみる

 ハードウェアを一通りチェックしたところで、続いてはソフトウェアのほうを見ていこう。といっても、OpenBlocks AファミリではOSにDebian GNU/Linuxが採用されており、設定・管理の方法はDebian GNU/Linuxを搭載したIAサーバーとほぼ同じだ。ただ、いくつか異なる点もある。まず、PCと違いOpenBlocksにはディスプレイやキーボードを直接接続できない。そのため、設定管理は別のPCからリモートログインして行うことになる。リモートログインというとSSHがまず思い浮かぶだろうが、ネットワークが利用できない状況ではSSHは利用できない。そのため、OpenBlocksでは初期状態でシリアルコンソールが利用できるようになっている。

 シリアルコンソールは、RS-232Cポート(シリアルポート)を利用してコンソールにアクセスする仕組みだ。OpenBlocksにはシリアルコンソール用のRS-232Cポートが用意されており、これをPCのシリアルポート(COMポート)と接続して利用する。シリアルコンソールにアクセスするためのクライアントソフトはいくつかあるが、WindowsではTera Term、UNIX/Linuxではscreenコマンドなどが有名だ(図23)。

図23 Tera Termを使ってOpenBlocks AX3にアクセスする
図23 Tera Termを使ってOpenBlocks AX3にアクセスする

 OpenBlocksとの接続時のパラメータは表4のとおりだ。

表4 OpenBlocksのコンソールへの接続パラメータ
項目
ボーレート 115200
データ 8ビット
パリティ なし
ストップビット 1ビット
フロー制御 なし

 OpenBlocks AX3の初期状態では、必要最低限の設定のみが行われたDebian GNU/Linux環境が構築されており、まずはrootユーザーでログインして各種設定を行う形となっている。初期状態ではrootパスワードに「root」が設定されているので、ログイン後はパスワードを変更しておこう。

# passwd
Enter new UNIX password: ←パスワードを入力
Retype new UNIX password: ←同じパスワードを再度入力
passwd: password updated successfully

 ネットワークインターフェイスについても未設定なので、/etc/network/interfacesファイルを編集して設定する必要がある。OpenBlocks AX3では「ETHER-0」ポートが「eth0」、「ETHER-1」が「eth1」といったように、筐体に書かれているポート名がネットワークデバイス名に対応している。たとえばETHER-0ポートのネットワークインターフェイスに対し「192.168.254.254/24」という静的IPアドレスを割り当てるには、/etc/network/interfacesファイルに次のような項目を記述する。

auto eth0
iface eth0 inet static
    address 192.168.254.254
    network 192.168.254.0
    netmask 255.255.255.0
    broadcast 192.168.254.255

 ETHER-1ポートのIPアドレスをDHCPで自動取得させるには、同じく/etc/network/interfacesファイルに次のような項目を記述すれば良い。

auto eth1
iface eth1 inet dhcp

 また、同時に/etc/hostnameファイルを書き換えてホスト名も変更しておく。設定の完了後、「/etc/init.d/networking restart」コマンドを実行してネットワークを再起動すると設定が反映される。

# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).
Reconfiguring network interfaces...Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/00:50:43:e7:24:26
Sending on   LPF/eth1/00:50:43:e7:24:26
Sending on   Socket/fallback
DHCPRELEASE on eth1 to 192.168.1.1 port 67
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/00:50:43:e7:24:26
Sending on   LPF/eth1/00:50:43:e7:24:26
Sending on   Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4
DHCPOFFER from 192.168.1.1
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.16 -- renewal in 103266 seconds.
done.

OpenBlocks AX3が使用するリポジトリ

 パッケージのインストールやアップデートは一般的なDebian GNU/Linux環境と同様、apt-getコマンドを使用する。パッケージリポジトリを指定する/etc/apt/sources.listファイルにはぷらっとホームの提供するリポジトリが記述されており、デフォルトではここから各種パッケージをダウンロードするようになっている(リスト1)。

リスト1 /etc/apt/sources.listではぷらっとホームの提供するリポジトリが指定されている

deb http://ftp.plathome.co.jp/pub/debian squeeze main
deb-src http://ftp.plathome.co.jp/pub/debian squeeze main

deb http://ftp.plathome.co.jp/pub/debian-security squeeze/updates main
deb-src http://ftp.plathome.co.jp/pub/debian-security squeeze/updates main

#deb http://ftp.plathome.co.jp/pub/debian-backports squeeze-backports main
#deb-src http://ftp.plathome.co.jp/pub/debian-backports squeeze-backports main

deb ftp://ftp.plathome.co.jp/pub/OBSAX3/debian/squeeze ./

カーネルのバージョンおよびCPUスペック

 カーネルのバージョンなどはunameコマンドで確認できる。アーキテクチャは「armv7l」で、カーネルのバージョンは3.0.6だった。x86/x86_64版のDebian GNU/Linux 6.0で採用されているカーネルのバージョンは2.6.32なので、カーネルについては本家Debianのものよりも新しいものが採用されていることになる。

$ uname -a
Linux debian 3.0.6 #43 SMP Mon May 21 13:32:59 JST 2012 armv7l GNU/Linux

 また、/proc/cpuinfoから取得できるCPUスペックは次のとおりだ。

# cat /proc/cpuinfo
Processor       : Marvell - PJ4Bv7 Processor rev 2 (v7l)
processor       : 0
BogoMIPS        : 1332.01

processor       : 1
BogoMIPS        : 1332.01

Features        : swp half thumb fastmult vfp edsp vfpv3
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

Hardware        : Marvell Armada XP Development Board
Revision        : 0000
Serial          : 0000000000000000

OpenBlocks AX3のブートローダとファイルシステム

 びたび述べている通り、OpenBlocks AX3のOSはDebian GNU/Linuxであり、一般的な使い方においてはx86版のDebian GNU/Linuxとほぼ同様に扱える。しかし、カーネルをカスタマイズしたり、ファイルシステムを操作しようとする場合は注意が必要だ。まず、OpenBlocks AX3ではIAサーバーで一般的なGRUBではなく、U-Bootと呼ばれるブートローダが使われている。U-Bootは組み込み向けで広く使われているブートローダだ(図24)。

図24 OpenBlocksでは「U-Boot」と呼ばれるブートローダが採用されている
図24 OpenBlocksでは「U-Boot」と呼ばれるブートローダが採用されている

 また、LinuxカーネルおよびinitrdイメージはファイルシステムではなくフラッシュROM内に格納されている。そのため、これらにファイルとしてアクセスすることはできない。initrdイメージはブート時にRAMディスクに展開され、このRAMディスクがルートファイルシステムとして利用される。RAMディスクに対して加えた変更は通常シャットダウンすると消えてしまうが、OpenBlocks AX3ではunionfsと呼ばれる仕組みを使い、ルートファイルシステムに加えた変更をSSDなどのストレージに保存するようになっている。

 unionfsは複数のストレージを結合し、あたかも1つのファイルシステムのように見せる技術だ。OpenBlocks AX3では/etcや/bin、/homeといった/以下のディレクトリがunionfsを使ってマウントされており、これらディレクトリに対して加えられた変更はすべてストレージ側に書き込まれるようになっている(リスト2)。SSDは/.rwというディレクトリにマウントされ、/etcや/binといったルートディレクトリ直下のサブディレクトリに書き込まれた内容はSSDの/.rw以下に記録される。

リスト2 OpenBlocks AX3上でmountコマンドを実行した例

$ mount
/dev/ram0 on / type ext2 (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=64m)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /.rw type ext3 (rw,relatime,errors=continue,barrier=0,data=ordered)
unionfs on /etc type unionfs (rw,relatime,dirs=/.rw/etc=rw:/etc=ro)
unionfs on /bin type unionfs (rw,relatime,dirs=/.rw/bin=rw:/bin=ro)
unionfs on /home type unionfs (rw,relatime,dirs=/.rw/home=rw:/home=ro)
unionfs on /lib type unionfs (rw,relatime,dirs=/.rw/lib=rw:/lib=ro)
unionfs on /sbin type unionfs (rw,relatime,dirs=/.rw/sbin=rw:/sbin=ro)
unionfs on /usr type unionfs (rw,relatime,dirs=/.rw/usr=rw:/usr=ro)
unionfs on /var type unionfs (rw,relatime,dirs=/.rw/var=rw:/var=ro)
unionfs on /root type unionfs (rw,relatime,dirs=/.rw/root=rw:/root=ro)
unionfs on /opt type unionfs (rw,relatime,dirs=/.rw/opt=rw:/opt=ro)
unionfs on /srv type unionfs (rw,relatime,dirs=/.rw/srv=rw:/srv=ro)
unionfs on /media type unionfs (rw,relatime,dirs=/.rw/media=rw:/media=ro)

 このように、カーネルやブートローダ周りはx86/x86_64版のDebian GNU/Linuxとは異なっているため、カーネルのビルドやインストールを行う場合は注意が必要だ。カーネルのビルド/インストールに関するドキュメントや必要なスクリプトなどのツールはぷらっとホームから提供されており、作業自体は難しくない。OpenBlocks AX3上でカーネルをコンパイルして独自のカーネルを構築・使用することは比較的容易だろう。