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)。
OpenBlocksとの接続時のパラメータは表4のとおりだ。
項目 | 値 |
---|---|
ボーレート | 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)。
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)。
また、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以下に記録される。
$ 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上でカーネルをコンパイルして独自のカーネルを構築・使用することは比較的容易だろう。