2013年4月30日火曜日

[.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]

Logitec LAN-W150N/U2WH(BK)は、802.11b/g/nに対応したUSB無線LANアダプタです。
このデバイスに関しては、AX3/A6ともに、Debian 6.0(squeeze)ベースのファームウェアでのデバイス評価は行ってきましたが、先日β公開されたDebian 7.0(Wheezy)環境において、改めて評価作業を行いました。
新環境においては、AX3/A6ともにKernel 3.2.36になるため、本デバイスで採用されているralink RT2870のドライバはリリースしたカーネルによりサポートされ、扱いが簡単になりました。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>

Debian 7.0 Wheezy
OpenBlocks AX3/4 kernel: 3.2.36
OpenBlocks A6 kernel: 3.2.36

1. 対応ドライバと事前準備

RT2870を使用しており、AX3のkernel-3.2.36では、rt2800usbドライバでサポートされています。

ただし、このドライバを使用する場合、ralink社のサイトより、
rt2870のファームウェア: rt2870.bin
を取得し、/lib/firmwareの下に置いて下さい。

また、上記ファームウェアはnon-freeのfirmware-ralinkパッケージからも導入することが出来ます。
non-freeパッケージを追加する場合は、/etc/apt/sources.listに、以下の記述を追加します。

deb ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free
deb-src ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free

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

ralink社のデバイス向けファームウェアパッケージの導入を行います。

# aptitude update

# aptitude install firmware-ralink

dmesgでは以下のメッセージが表示されます。

usb 1-1.1: USB disconnect, device number 3
usb 1-1.1: new high-speed USB device number 5 using orion-ehci
usb 1-1.1: New USB device found, idVendor=0789, idProduct=0168
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: 802.11 n WLAN
usb 1-1.1: Manufacturer: Ralink
usb 1-1.1: SerialNumber: 1.0
usb 1-1.1: reset high-speed USB device number 5 using orion-ehci
ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
Registered led device: rt2800usb-phy1::radio
Registered led device: rt2800usb-phy1::assoc
Registered led device: rt2800usb-phy1::quality

インタフェースはwlan0となります。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

【.tested】Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

上記のドライバにより、AX3、A6においてクライアントモードでの動作を確認しました。

3. アクセスポイントとしての設定方法 (ブリッジ接続)


wlan0およびeth0をブリッジ接続し、hostapdによりワイヤレスサービスを行います。

・事前準備

事前準備として、bridge-utilsパッケージを導入します。

# aptitude install bridge-utils

・ブリッジ(br0)の設定

auto eth0
iface eth0 inet static
address 0.0.0.0

auto wlan0
iface wlan0 inet manual

# Bridge network interface  /* 固定IPアドレスの場合 */
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0
bridge_stp off

DHCPによりIPアドレスを取得する場合は、br0についての記述を以下のように変更して下さい。

# Bridge network interface  /* DHCPによりホストのIPアドレスを貰う場合 */
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off

wlan0のブリッジ設定に関しては、hostapd-1.0が行うため必要ありません。

・hostapd-1.0の導入

Debian/Wheezyパッケージより、hostapdも1.0になっており、今回はバイナリパッケージをそのまま利用します。hostapdパッケージのビルド作業は必要ないため、容易に環境を構築出来ます。

 hostapdパッケージの導入

# aptitude install hostapd

 設定ファイルとして、/etc/hostapd/hostapd.conf を以下の様に記述します。
 <SSID>およびパスフレーズはそれぞれの環境に合わせて変更して下さい。

interface=wlan0
bridge=br0
driver=nl80211

country_code=JP
ieee80211d=1

ssid=<SSID>
channel=6
hw_mode=g

wpa=2
wpa_passphrase=<設定するパスフレーズ>

wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ieee80211n=1
wmm_enabled=1

起動方法は以下の通りです。

# hostapd -B /etc/hostapd/hostapd.conf

自動起動する場合は、/etc/default/hostapdの以下の部分を修正してください。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4.さいごに


3.2.36カーネルへの移行および、Debian Wheezyによるパッケージのバージョンアップにより、ralink rt2870チップセットを使用したAX3およびA6のAP構築が簡単に行えるようになりました。

また、開発環境をお持ちの方は、最新版のhostapd-2.0のセルフビルドの方法に関しては、
[.tested] LAN-W150NU2 / hostapdによるWifiアクセスポイントの構築 [AX3]
にて公開しています。

2013年4月26日金曜日

[.tested] RATOC SYSTEM REX-BT60 [Debian Wheezy/Squeeze][AX3][A6]

REX-BT60はBluetoothを介して離れた場所にあるシリアル通信機器を、制御・管理できるシリアルインターフェイスです。また、コネクターには、EIA/TIA-574 仕様のD-Sub 9Pin を採用しており、RS-232C機器とBluetooth接続で通信が可能です。



今回、OpenBlocks AX3およびA6からUSB Bluetoothアダプタを介して、本デバイスに接続し、接続先の装置との接続検証を行いました。
従来のDebian 6.0(Squeeze)環境に加え、先日β公開されたDebian 7.0(Wheezy)環境での検証も行っています。

OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 6.0 Squeeze
OpenBlocks AX3/4 kernel: 3.0.6
OpenBlocks A6 kernel: 2.6.31.8
Debian 7.0 Wheezy
OpenBlocks AX3/4 kernel: 3.2.36
OpenBlocks A6 kernel: 3.2.36

<使用機材>
OpenBlocks AX3/4
OpenBlocks A6
RATOC Systems Inc. REX-BT60 Bluetooth-RS232C変換アダプタ
ELECOM LBT-UAN04C1Bluetooth USBホストアダプタ

1. Bluetoothデバイスの導入

Logitec社製Bluetoothアダプタ LBT-UAN04C1BKを使用しました。

 <dmesgの例 A6/Wheezy環境>

Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
Bluetooth: Generic Bluetooth USB driver ver 0.6
usbcore: registered new interface driver btusb

2. Bluezの導入


Bluezのインストール

Bluetooth機器の操作は、bluezパッケージに入っているコマンドを利用します。

# aptitude -R install bluez python-dbus python-gobject

python-*は、ペアリングなどを行うスクリプトを動かすために必要です。

インターフェイスの確認・設定

Bluetooth機器はhciXというデバイス名(インターフェイス名)で扱います。

# hciconfig -a
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:09:DD:40:DE:09  ACL MTU: 310:10  SCO MTU: 64:8
        UP RUNNING PSCAN
        RX bytes:19916 acl:159 sco:0 events:260 errors:0
        TX bytes:1942 acl:66 sco:0 commands:76 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'obsa6-0'
        Class: 0x420100
        Service Classes: Networking, Telephony
        Device Class: Computer, Uncategorized
        HCI Version: 4.0 (0x6)  Revision: 0x1d86
        LMP Version: 4.0 (0x6)  Subversion: 0x1d86
        Manufacturer: Cambridge Silicon Radio (10)

3. ペアリング方法


デバイスのスキャン

 hcitoolを使用します。

# hcitool scan
Scanning ...
        XX:XX:XX:XX:XX:XX       RN42-XXXX

REX-BT60は、RN42-XXXXと表示されます。

ペアリング

simple-agentは、Debian wheezeのパッケージからは、
bluez-simple-agent
bluez-test-device
に置き換わり、/usr/bin以下にインストールされています。

それぞれのペアリング方法は以下の通りです。
初期設定では、REX-BT60のPINは1234と設定されています。

 (Debian 6.0 Squeeze)

# /usr/share/doc/bluez/examples/simple-agent hci0 <BTADDR>
RequestPinCode (/org/bluez/3445/hci0/dev_XX_XX_XX_XX_XX_XX)
Enter PIN Code: 1234
Release
New device (/org/bluez/3445/hci0/dev_XX_XX_XX_XX_XX_XX)

 (Debian 7.0 Wheezy)

# bluez-simple-agent hci0 <BTADDR>
RequestPinCode (/org/bluez/3445/hci0/dev_XX_XX_XX_XX_XX_XX)
Enter PIN Code: 1234
Release
New device (/org/bluez/3445/hci0/dev_XX_XX_XX_XX_XX_XX)


ペアリングの確認は以下のコマンドで行います。

 (Debian 6.0 Squeeze)

# /usr/share/doc/bluez/examples/test-device list
dbus.Array([dbus.ObjectPath('/org/bluez/1453/hci0/dev_XX_XX_XX_XX_XX_XX')], signature=dbus.Signature('o'))

 (Debian 7.0 Wheezy)

# bluez-test-device list
XX:XX:XX:XX:XX:XX RN42-XXXX

ペアリングの解除方法は以下の通りです。

 (Debian 6.0 Squeeze)

# /usr/share/doc/bluez/examples/test-device remove <BTADDR>

 (Debian 7.0 Wheezy)

# bluez-test-device remove <BTADDR>


4. rfcommによる仮想シリアルデバイス作成


本デバイスはSPPプロファイルに対応しており、OpenBlocksからデータをハンドリングするためには、rfcommにより仮想シリアルデバイスとして扱います。

#rfcomm connect hci0 <BTADDR>&

/dev/rfcomm0が作成されているのを確認してください。

# ls -la /dev/rfcomm0
crw-rw---- 1 root dialout 216, 0 Feb 28 09:07 /dev/rfcomm0

5. minicom による接続テスト


今回は、REX-BT60を、別のOpenBlocksのコンソールポート(115200bps/8bit/ノンパリティ/1ストップビット)に接続し、minicomによりBT経由での端末操作を行いました。

minicomのインストール

# aptitude install minicom

接続

# minicom -D /dev/rfcomm0



6. さいごに


REX-BT60はBluetoothによるワイヤレスシリアル通信を行えるデバイスとして、OpenBlocksでも手軽に利用出来ることを確認しました。

2013年4月18日木曜日

Debian 7 (wheezy)ベースのOpenBlocks Aファミリ用 β版ファームウェア公開 (4/26 A6版追記, 5/23 ファームウェア更新)

こんにちは。OpenBlocksファミリの開発・技術担当の木村です。

2013/04/26:A6版の手順を追記しました
2013/05/23: 正式公開されたDebian7をベースとしてファームウェアファイル(rc1)を公開しました (更新内容は本記事の末尾を参照下さい)

現在のOpenBlocks Aファミリは、標準OSとしてDebian 6 (squeeze)のarmelアーキテクチャを搭載していますが、リリースから2年が経過し新しいバージョンのDebian 7 (wheezy)の準備がDebian Projectによって進められています(2013/05/23追記: 2013/05/04に正式リリースされました)。

OpenBlocks Aファミリでも、新しくリリースされるバージョンを利用出来るように準備を進めており、Debian 7のプレリリース版をベースとしたOpenBlocks Aファミリ用ファームウェアのβ版をリリースします。

お試しいただけた場合には、ご意見・不具合等のフィードバックをいただければ幸いです。

注意事項
  • β版としての公開のため、仕様は変更の可能性があります。
  • β版の利用によって生じたいかなる不利益も、当社は一切の責任を負いません。
  • お問い合わせ・フィードバックは、本記事のコメント欄に投稿願います。

OpenBlocks Aファミリ用 Debian 7 ファームウェアによって変わること


  • [AX3のみ]armhfアーキテクチャの採用によるパフォーマンスの向上
    armhfにより、ユーザーランドの各バイナリが、ハードウェアFPU、ARMv7命令セット等が有効になり性能向上が見込める。特にハードウェアFPUは、画像処理やスクリプト言語の利用で効果が現れる。A6はハードウェアFPU非搭載のため、armelアーキテクチャのままとなる。
  • [AX3のみ]パワーマネジメント動作の向上
    アイドル時に従来よりも深いレベルでCPUが休むことで、筐体温度や消費電力の低下が見込める。
  • [AX3のみ]パワーマネジメント動作モードの変更に対応 (反映は再起動後)
    「flashcfg -p idle」等で変更できる。デフォルトは idle となっており、wfi、idle、snoozeが指定出来る。アイドル状態の深度は、wfi > idle > snoozeとなる。Debian 6のOpenBlocks AX3用ファームウェアで採用していた3.0.6カーネルでは、wfi動作となっている。
  • [AX3のみ]異常温度に達した場合の1コア停止に加え、指定温度まで下がったときのコア復帰に対応
    デフォルトでは、CPU温度が105℃を超えると1コアを停止、その後75℃まで低下したら復帰する。
  • カーネルバージョンの変更
    AX3・A6共に、3.2.36となる。
  • UnionFSのために採用する実装を、Linux UnionfsからAuFSに変更http://unionfs.filesystems.org/ → http://aufs.sourceforge.net/
  • /のRAMディスクサイズをAX3: 128MB→160MB、A6: 128MB→144MBに変更
  • /etc/default/openblocksの編集対応
    unionfsの対象ディレクトリ、RAMディスクモードにおける/.rwのサイズを変更できる。AX3の場合は、加えてCPUの1コア停止及び復帰の温度が変更できる。
  • その他Debian7の仕様に合わせた変更や軽微な改善多数

主な変更点の解説


パフォーマンス向上について (AX3のみ)

AX3では、Debian 6 のarmelアーキテクチャを搭載していましたが、この状態はハードウェア性能をフルに活かした状態ではありませんでした。x86アーキテクチャのCPUでは、古くからハードウェアFPUがCPUに統合さえていたため、普段は意識することはあまり無いかと思いますが、ARMアーキテクチャのCPUにハードウェアFPUが搭載されるようになったのは、スマートフォンやタブレットに採用が増えた最近のことです。そのためOS側でも徐々にハードウェアFPUへの対応が検討され、Debianにおいてはバージョン7からarmhfというアーキテクチャを新設し対応することになったようです。

実際の性能向上がどの程度かになるかは、実行するソフトウェアによっても異なりますが、個人的な印象としては「apt-get update」や「apt-get install hoge」など日常的な処理が早くなっているような体感があります。昨年夏頃の測定ですが、UnixBenchを利用したベンチマーク結果のデータがありますので、以下に掲載します。赤文字にしたDhystoneが整数演算、Whetstoneが倍精度浮動小数点演算の性能を表しています。Debian sid/armhfがDebian 7.0のarmhfアーキテクチャに相当します。

 Debian 6.0/armelDebian sid/armhf
Dhrystone 2 using register variables279.00323.40
Double-Precision Whetstone11.70111.60
Execl Throughput160.30163.70
File Copy 1024 bufsize 2000 maxblocks154.50130.60
File Copy 256 bufsize 500 maxblocks100.2084.80
File Copy 4096 bufsize 8000 maxblocks322.60269.90
Pipe Throughput133.00132.30
Pipe-based Context Switching102.50105.10
Process Creation191.40200.90
Shell Scripts(1concurrent)431.40376.80
Shell Scripts(8concurrent)543.10498.80
System Call Overhead316.60309.00


(当社執筆のSoftware Design 2012年9月号(2012年8月18日発売)掲載記事から表5を引用。また雑誌掲載時の誤記「Debian 6.0/armhf」を「Debian sid/armhf」に訂正。記事はこちらでも参照可能。)

パワーマネジメントについて (AX3のみ)

Debian 6では、採用していた3.0.6カーネル(CPU開発元のLSPをベースにしたもの)にパワーマネジメントの機能は搭載されていましたが、安定性に欠けていたため、最小限の省電力動作であるWFIモードを採用しています。

Debian 7では、3.2.36カーネル(CPU開発元のLSPをベースにしたもの)に変わり、このバージョンからはCPU開発元でもパワーマネジメントの正規サポートが謳われるようになり、WFI以外の各モードの採用が可能となりました。

パワーマネジメントの動作モードには、WFI、DEEP IDLE、SNOOZEの3種があり、WFIから順に深いアイドル状態を意味します。β版ではDEEP IDLEをデフォルトとして今後の評価・検証で最終的な動作を決定します。

パワーマネジメント動作の変更は、次のように実行します。設定変更の反映は再起動後になされます。

# flashcfg -p snooze

WFIは wfi、DEEP IDLEは idle、SNOOZEは snooze と指定します。現在のモード表示は、now を指定します。

ファームウェアの変更方法 (AX3用)


操作の概要としては、Debian 6で使っていた環境は全て消去し設定し直しとなります。

 ファームウェアファイルのダウンロード (beta1 MD5 / rc1 MD5)


 ファームウェアファイルの書き込み

# flashcfg -f uImage.initrd.obsax3

 ユーザーエリアを消去し、ストレージ併用モードを解除する

# flashcfg -e
# e2label /dev/sda1 "" ※ストレージ併用モード利用時のみ。デバイス名は適宜読み替えください。

ストレージ併用モードで、既存の環境を残しておきたい場合は、ストレージの初期化をしないようにして下さい。Debian 7でストレージ併用モードを利用する際は、ストレージを交換するかUSBやeSATAポートに接続したストレージにDEBIANラベルを設定することで既存のストレージはそのままに、Debian 7を試すことが出来ます。元の環境に戻す場合は、Debian 6のファームウェアを書き戻すだけでOKです。

 再起動

# reboot

 完了
 次のようにログインプロンプトが表示されれば変更完了です。
 user: root / pass: root でログインして下さい。

Debian GNU/Linux 7.0 obsax3 ttyS0

obsax3 login:


# uname -a
Linux obsax3 3.2.36 #1 SMP Fri Apr 12 17:40:04 JST 2013 armv7l GNU/Linux

2013/05/23更新
# uname -a
Linux obsax3 3.2.36 #1 SMP Thu May 23 12:37:55 JST 2013 armv7l GNU/Linux

Debian 6に戻す場合の注意

基本的には使用するファームウェアファイルをDebian 6ベースのものに変更するだけですが、パワーマネジメントの動作モードを変更している場合は、ファームウェアを戻す前に次のコマンドでDebian 6環境の動作モードに戻して下さい。

# flashcfg -p wfi

ファームウェアの変更方法 (A6用)


A6では、Debian 7になりカーネルバージョンが変わったことで、ファームウェアサイズが大きくなり、既存の割り当てでは収まらないサイズになったため、A6でDebian 7を利用するにはブートローダ(U-Boot)の変更が必要となります。変更用のU-Bootは準備・テストを進めており、追って本ブログで手順を公開します。 以下に追記

A6でDebian 7ベースのファームウェアを利用するには、事前にブートローダーのU-Bootを更新する必要があります。

OpenBlocksでは、本体基板上のFlashROM上にLinuxカーネルと最小限のユーザーランドを結合したファームウェアファイルが書き込まれており、電源ONするとこれを読み出して実行します。予め用途別にいくつかのパーティションに分割していますが、Debian7になったことに加えカーネルのバージョン変更も伴ったことで、想定していたファームウェアサイズの最大を超えてしまいました。この対策として、ファームウェア領域のサイズを拡張したU-Bootの新バージョンを用意しました。なおファームウェア領域拡張のかわりに、ユーザーエリア(flashcfg -s/-Sでの保存先)が縮小されています。

A6は出荷時期により2種類のU-Bootバージョンが存在し、電源ON直後にシリアルコンソールに表示される内容から判断することが出来ます。FlashROMのパーティション割り当ては、Linux上の/proc/mtdファイルを参照することで確認することが出来ます。以下に各バージョンのパーティション割り当てを記載します。

出荷済みバージョンのバリエーション

U-Boot 1.1.4 (Jul 30 2012 - 19:54:19)
Plat'Home version: 1.0.2 (Base: Marvell version: 3.5.9)
root@obsa6:~# grep '^mtd' /proc/mtd  | while read line;do echo -ne "$line\t=>\t"; printf "%d KiB\n" 0x$(echo $line|awk '{print $2}'); done
mtd0: 00090000 00004000 "uboot" =>      589824 KiB     ※ U-Boot本体
mtd1: 00044000 00004000 "env"   =>      278528 KiB     ※ U-Boot環境変数
mtd2: 00020000 00004000 "test"  =>      131072 KiB     ※ 生産用テストプログラム
mtd3: 00400000 00004000 "conf"  =>      4194304 KiB     ※ flashcfg -sでの保存先
mtd4: 01d20000 00004000 "linux" =>      30539776 KiB     ※ ファームウェア(カーネル+ユーザーランド)
mtd5: 01dec000 00004000 "user"  =>      31375360 KiB     ※ flashcfg -Sでの保存先

U-Boot 1.1.4 (Oct 17 2012 - 15:25:27)
Plat'Home version: 1.1.0 (Base: Marvell version: 3.5.9)
root@obsa6:~# grep '^mtd' /proc/mtd  | while read line;do echo -ne "$line\t=>\t"; printf "%d KiB\n" 0x$(echo $line|awk '{print $2}'); done
mtd0: 00080000 00004000 "uboot" =>      524288 KiB
mtd1: 00040000 00004000 "env"   =>      262144 KiB
mtd2: 00020000 00004000 "test"  =>      131072 KiB
mtd3: 00400000 00004000 "conf"  =>      4194304 KiB
mtd4: 01c5c000 00004000 "linux" =>      29736960 KiB
mtd5: 01dc4000 00004000 "user"  =>      31211520 KiB

Debian7用の対策適用済みのバージョン
U-Boot 1.1.4 (Apr 22 2013 - 18:19:33)
Plat'Home version: 1.2.3 (Base: Marvell version: 3.5.9)
root@obsa6:~# grep '^mtd' /proc/mtd  | while read line;do echo -ne "$line\t=>\t"; printf "%d KiB\n" 0x$(echo $line|awk '{print $2}'); done
mtd0: 00080000 00004000 "uboot" =>      524288 KiB
mtd1: 00040000 00004000 "env"   =>      262144 KiB
mtd2: 00020000 00004000 "test"  =>      131072 KiB
mtd3: 00400000 00004000 "conf"  =>      4194304 KiB
mtd4: 02000000 00004000 "linux" =>      33554432 KiB
mtd5: 01a20000 00004000 "user"  =>      27394048 KiB

1.1.0のパーティション割り当てと比較すると、ファームウェア領域が3MiB増加、flashcfg -Sでの保存先が3MiB減少されています。


アップデート手順

注意: 本操作によって、U-Bootの更新の他、FlashROMの全領域に対して書き換え又は消去を行います。そのため、RAMディスクモードで利用していた場合の保存内容は全て消去されます。消去されては困るデータがある場合は、事前にバックアップを実施願います。またU-Bootの書き換えが何らかの理由により失敗した場合、U-Bootが起動出来なくなり、それに伴いLinuxの起動も出来なくなります。仮に失敗してしまったような場合は、サポート窓口までお問い合わせ下さい。

現在のU-Bootバージョンの確認

シリアルコンソールを接続し、電源ONして下さい。起動直後にバージョン情報が表示されますので、1.0.2又は1.1.0であることを確認し、この情報を必ず控えておいて下さい。

実行に必要なパッケージの追加

# apt-get update
# apt-get install mtd-utils

A6用U-Boot 1.2.3へのアップグレードキットをダウンロード (注意:md5sumの結果が一致していることを確認)

# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.36-0beta1/a6_uboot_upgrade123_kit.tar.gz
# md5sum a6_uboot_upgrade123_kit.tar.gz
0547a6702b40363427916c8711295aea a6_uboot_upgrade123_kit.tar.gz

展開と実行

# tar xvzf a6_uboot_upgrade123_kit.tar.gz
# cd a6_uboot_upgrade123_kit
# ./update_a6_uboot.sh
Update u-boot to 1.2.3. (previous version checksum: d5)
erase u-boot area...done.
erase u-boot env area...done.
erase test program area...done.
erase linux conf area...done.
erase linux firmware area...done.
erase linux user area...done.
update u-boot...done.
update test program...done.
rewrite linux firmware...done.

Please reboot the openblocks and install debian7 firmware.
バージョンの自動判定を行い、U-Boot及びテストプログラムの書き換え、環境変数やflashcfgの保存先を消去、Debian6ベースファームウェアの再書き込み(U-Boot 1.0.2の場合のみ)を実施します。

FlashROMでBadBlockが発生している場合、unknown u-boot version と表示される場合があります。この時は、次のように現在のバージョンを指定して実行します。

# ./update_a6_uboot.sh -u 1.1.0 ※ unknown u-boot versionと表示された場合のみ。バージョンは適宜変更。

実行が完了したら、再起動を実施します。
# reboot

Debian 7への変更
ファームウェアファイルのダウンロード (beta1 MD5 / rc1 MD5)


 ファームウェアファイルの書き込み

# flashcfg -f uImage.initrd.obsa6

ストレージ併用モードを解除する

# e2label /dev/sda1 "" ※ストレージ併用モード利用時のみ。デバイス名は適宜読み替えください。

ストレージ併用モードで、既存の環境を残しておきたい場合は、ストレージの初期化をしないようにして下さい。Debian 7でストレージ併用モードを利用する際は、ストレージを交換するかUSBやeSATAポートに接続したストレージにDEBIANラベルを設定することで既存のストレージはそのままに、Debian 7を試すことが出来ます。元の環境に戻す場合は、Debian 6のファームウェアを書き戻すだけでOKです。

 再起動

# reboot

 完了
 次のようにログインプロンプトが表示されれば変更完了です。
 user: root / pass: root でログインして下さい。

Debian GNU/Linux 7.0 obsa6 ttyS0

obsa6 login:


# uname -a
Linux obsa6 3.2.36 #1 Fri Apr 12 19:00:59 JST 2013 armv5tel GNU/Linux

2013/05/23更新
# uname -a
Linux obsa6 3.2.36 #2 Thu May 23 12:43:23 JST 2013 armv5tel GNU/Linux


最後に


Debian 7のRelease critical bugsの2013/04/18 00:00:00 (UTC)時点で残り33個となっており、これが0になるとリリースになるとのことです。リリースが発表された後、OpenBlocks用ファームウェアも改めて、リリース版を元にしたものを公開いたします。不具合等ある場合は、反映したいと考えておりますので、運用に使用されていない実機をお持ちのユーザー様は、是非お試しいただければ幸いです。

2013/04/26追記:その後、順調にRelease critical bugsが減ってきており、2013/05/05のリリースで日取りが確定したようです。(タイムゾーンはどこなんでしょう?)

2013/05/23追記: 無事に2013/05/04に公開されております。開発者の皆様のご尽力により、我々もこうして当社製品用のファームウェアの提供が出来ております。この場を借りて心から御礼申し上げます。



ファームウェア更新内容

2013/05/23: rc1
  • 正式公開された Debian 7.0.0 をベースにして再構築
  • ストレージ併用モードを利用した場合に、シャットダウン時に/.rwのumountがfailとなり、次回起動時にinode不整合の修正処理が入ってしまう現象を修正
  • カーネルコンフィグレーションの見直し
    • cgroup機能の追加 (LXC利用のため)
    • IPv6機能の組み込み化 (/etc/sysctl.d/ipv6-off.confファイルでIPv6の無効化するため)
    • その他、細かな機能の見直し
  • カーネルのセキュリティホール(CVE-2013-2094)の対応
  • その他軽微な修正

2013年4月12日金曜日

[.tested] Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2 無線LANアダプタ [AX3][A6]

Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2は、802.11b/g/nに対応したUSB無線LANアダプタです。
Openblocks AX3およびA6での動作検証を行いました。




OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8

1. 対応ドライバと事前準備


AX3の場合、クライアントモードのみで使用する場合は、リリースされているカーネルでサポートされます。
A6での使用および両モデルにてAPとしての構築を行う場合は、realtek社からRTL8192CU向けのドライバをダウンロードして使用します。
なお、GW-USValue-EZとGW-USWExtremeは、lsusbで確認すると両方ともGW-USValue-EZと表示され、同一のVENDOR/DEVICEであることを確認しています。

・AX3の場合

上記の3デバイスは、AX3のカーネルパッケージ3.0.6では、rtl8192cuドライバにおいてサポートされています。
本ドライバはリリースされているカーネルでは組み込み済みであり、カーネルの再構築などは必要ありません。

ただし、カーネルに組み込まれたrtl8192cuドライバは、別途メーカから配布されたファームウェアを読み込む仕様になっています。
このファームウェアは、debian squeezeでは

http://packages.debian.org/squeeze-backports/firmware-realtek

にあるように、firmware-realtek (0.35~bpo60+1)に含まれています。
backports/non-freeのパッケージを一時的にインストールするために、/etc/apt/sources.listに以下の行を追加します。

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
インストールパッケージリストをアップデートし、インストールします。

# aptitude update
# aptitude -t squeeze-backports install firmware-realtek

/lib/firmware/rtlwifi/rtl8192cufw.binがインストールされているのを確認してください。

上記作業の後、デバイスをUSBに差し込むことにより認識し、デバイスは、wlan0となります。

・A6の場合、およびAPの構築を行う場合。

RTL8192CUは、A6のカーネルパッケージ2.6.31では対応していません。

また、AX3においてAPを構築する場合、カーネルサポートのrtl8192cuモジュールを利用し、debianのパッケージや、(カスタマイズされていない)ソースパッケージからビルドしたhostapdにおいてnl80211ドライバを適用させた場合、接続と切断を繰り返す状態が続き、正常に動作しないことを確認しています。

そのため、A6で使用する場合、もしくはAPの構築を行う場合は、Realtek社のWebページより、ドライバのソースコードパッケージおよび、RTL8192CUに対応したドライバを組み込んだhostapdのパッケージをダウンロードして使用します。

Software: Drivers & Utilities / RTL8192CU

RTL8192CUの、Linux Kernel 2.6.18~2.6.38 and Kernel 3.0.8 の項目にあるリンクからドライバパッケージをダウンロードします。
ダウンロードしたファイルは以下の手順で解凍してください。

# unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip

このパッケージは、ターゲットが対応する機器ならば、作成されたディレクトリへ移動し、
install.shによりインストールが行えるのですが、Openblocksは対応機器にありませんので、
以下の手順によりドライバパッケージのコンパイルおよびインストールを行います。

# cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105
# cd driver
# tar xvzf rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105.tar.gz
# cd rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105

Makefileを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

# diff -u Makefile.orig Makefile
--- Makefile.orig       2012-07-30 21:51:05.000000000 +0900
+++ Makefile    2013-04-10 13:32:54.000000000 +0900
@@ -36,7 +36,8 @@
 CONFIG_RTL8192CU_REDEFINE_1X1 =n
 CONFIG_WAKE_ON_WLAN                            =       n

-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
 CONFIG_PLATFORM_TI_AM3517 = n
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -254,6 +255,17 @@
 CROSS_COMPILE ?=
 KVER  := $(shell uname -r)
 KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER  := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=
 endif

変更後、make および installを行います。

# make install

ドライバは、
AX3の場合: /lib/modules/3.0.6/kernel/drivers/net/wireless/
A6の場合: /lib/modules/2.6.31/kernel/drivers/net/wireless/
の下にコピーされ、depmod -aされます。
不要になり、削除する場合は、8192cu.koを削除し、depmod -aして下さい。

ただし、AX3において本ドライバを使用する場合、標準配布されているカーネルにはすでにrtl8192cuドライバモジュールが含まれているため、
/etc/modprobe.d/blacklist.confに、下記の記述を追加して組み込みを抑止してください。

blacklist rtl8192cu

デバイスをUSBポートに差し込めば認識します。
デバイスは、/dev/wlan0となります。

本ドライバは、そのままmake すると大量のデバッグメッセージをconsoleに表示しますので、console作業等で気になる場合は、

include/autoconf.hにおいて、DEBUGもしくはDBGと書かれたdefine行をコメントアウトすることにより抑止出来ます。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

上記のドライバにより、AX3、A6においてクライアントモードでの動作を確認しました。

3. hostapdによるAPモードでの使用方法


eth0とwlan0をブリッジ接続してAPモードでの設定を行いました。

・事前準備

事前準備として、bridge-utilsパッケージを導入します。

# aptitude install bridge-utils

・ブリッジ(br0)の設定

/etc/network/interfacesを以下の様に記述します。

auto eth0
iface eth0 inet static
address 0.0.0.0

auto wlan0
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type managed 4addr on

# Bridge network interface
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0 wlan0
bridge_stp off

ブリッジのアドレスをdhcpで取得する場合はbr0の設定は以下の通りです。

# Bridge network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
bridge_stp off

・hostapdの作成と設定

上記ドライバパッケージを展開したディレクトリの下の、
wpa_supplicant_hostapdディレクトリ下にある、
wpa_supplicant_hostapd-0.8_rtw_20120803.zip
というrealtek専用のhostapdパッケージファイルを展開して、使用します。

パッケージファイルを展開し、hostapdディレクトリにてmakeを行うと、hostapdが作成されます。

# cd wpa_supplicant_hostapd-0.8
# cd hostapd
# make
# make install

hostapdおよびhostapd_cliが/usr/local/binにコピーされます。

hostapd.confは、wpa_supplicant_hostapdの下にあるサンプル、

rtl_hostapd_2G.conf

を、環境に合わせて変更してください。
変更したファイルは、/etc/hostapdというディレクトリを作成し、そこにコピーします。

大まかな変更点としては、
interfaceはwlan0、
ssidとパスフレーズは必ず変更してください。
また、今回は、ブリッジ設定となりますので、bridge=br0を設定します。

# vi rtl_hostapd_2G.conf

##### hostapd configuration file ##############################################

interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=<SSID>
channel=6
wpa=2
wpa_passphrase=<パスフレーズ>
bridge=br0



##### Wi-Fi Protected Setup (WPS) #############################################

eap_server=1

# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2

uuid=12345678-9abc-def0-1234-56789abcdef0

# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU

# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek

# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP

# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU

# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345

# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
#       default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
#   1-0050F204-1 (Computer / PC)
#   1-0050F204-2 (Computer / Server)
#   5-0050F204-1 (Storage / NAS)
#   6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1

# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300

# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad


##### default configuration #######################################

driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1

・hostapdの起動

# /usr/local/bin/hostapd -B /etc/hostapd/rtl_hostapd_2G.conf


上記のhostapdを使用して、A6,AX3とiPhone4S/Nexus7間でのWifi接続を確認しました。

4. APモードでハードウェアWPSボタンを使う方法


hostapdには、WPSのサポートがあり、hostapd_cliコマンドやキーボードでWPSのコントロールを行えます。
GW-USNano2には小型ながらもWPSボタンがハードウェア的に用意されており、realtekのドライバパッケージ含まれるハードウェアボタン用のシグナルハンドルのサンプルプログラムが使用できます。
hardware_wps_pbcディレクトリの下のsample.cをmakeし実行すると、ボタンを2秒押すと、
get HW_PBC signal from driver
というメッセージがコンソールに表示されます。
この表示の代わりに

system("hostapd_cli wps_pbc -i wlan0");

と書くと、WPSボタンを使った接続ネゴシエーションを行うための、WPSボタンハンドル用のデーモンとすることが可能になります。
ただし、評価用の実装であることをご理解下さい。

上記の設定において、Nintendo DSiを使用してWPS接続が出来ることを確認しました。

5. さいごに


今回は、AX3/A6の両モデルでAP構築の可能な小型のUSB Wifiアダプタとして、rtl8192cuシリーズを使用した3モデルの評価を行いました。

2013年4月9日火曜日

[.testted] baserCMS 2.1.0 [AX3][A6]


baserCMS(ベーサーシーエムエス)とは、オープンソースフレームワーク「CakePHP」をベースとし、環境準備の素早さに重点を置いた基本制作支援プロジェクトから生まれた国産CMS(コンテンツマネージメントシステム)です。
公式サイトは、以下になります。

baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』


今回は、baserCMSをOpenBlocks AX3およびA6のdebian 6.0(armel)にインストールし、動作検証を行います。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8

(*)本ソフトウェアの利用にはSSDキットおよび開発環境の導入が必要です。

1. apache2導入


・apache2パッケージのインストール

# aptitude install apache2

インストールのみで起動します。

・mod_rewriteを有効にする

# a2enmod rewrite

2. phpの導入と設定


# aptitude install php5 php5-gd php-pear php5-mysql

・php.iniの設定
/etc/php5/apache2/php.iniを編集し、mbstringを有効にして下さい。

[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
mbstring.language = Japanese

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
mbstring.internal_encoding = UTF-8

; http input encoding.
; http://php.net/mbstring.http-input
mbstring.http_input = auto

; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
mbstring.http_output = UTF-8

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; http://php.net/mbstring.encoding-translation
mbstring.encoding_translation = on

; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
mbstring.substitute_character = none;

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
mbstring.func_overload = 0

3. mysqlの導入


# aptitude install mysql-server
インストール時にMySQLを管理するrootユーザのパスワードを聞かれるため、予め決めておく必要があります。

・動作確認

# mysql -u root -p

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql>

4. baserCMS 2.1.0パッケージのダウンロードと展開


公式ページからbaserCMS 2.1.0パッケージをダウンロードします。

# wget http://basercms.net/packages/download/basercms/2.1.0/basercms-2.1.0.zip

・ファイルの展開、コピー、設定

# unzip basercms-2.1.0.zip
# cp -R basercms /var/www
# cd /var/www
# chmod -R 0707 basercms

5. MySQLデータベースの作成


以下の設定でデータベースの初期化を行います。

ユーザ名: baser@localhost
バスワード: password
データベース名: basercms

# mysql -u root -p

mysql> grant all on *.* to baser@localhost IDENTIFIED BY 'password';
mysql> create database basercms character set utf8 ;
mysql> GRANT ALL PRIVILEGES ON basercms.* TO baser@localhost IDENTIFIED BY 'password';

6. apache2の設定


ご利用の環境に合わせてapacheを設定します。
/etc/apache2/conf.d/localの一部を以下の様に変更しました。

        DocumentRoot /var/www/basercms
        DirectoryIndex index.php

        <Directory /var/www/basercms/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

変更後、再起動します。

# apachectl restart

7. 設定


設定は、baserCMSサーバにアクセスして、GUIにより行います。
今回、Documentrootをbasercmsディレクトリに設定したため、以下のURL を指定してください。

http://<baserCMSサーバのドメイン名またはIPアドレス>/

インストール初期画面は以下の様に表示されます。
画面の指示に従ってインストール作業を進めて行きます。


最初にシステムのチェックが行われます。
問題がなければ次に進みます。


データベースの設定を行います。
あらかじめ作成したデータベースおよびユーザ名/パスワードを入力します。


接続のテストを行い、問題がなければ、次へ進みます。


 最後に、管理者情報を入力します。
 

正常にインストールが終了した後、ダッシュボードの画面に移行します。



初期状態では、デモ画面となります。


以上の操作により、比較的簡単に設定は終了します。

8. さいごに 


以上の設定により、baserCMS 2.1.0をAX3およびA6上で利用することが可能となりました。
ただし、A6の場合は、本体のスペック的に快適に動作するとは言いがたいため、利用される場面は限定されると思います。

2013年4月2日火曜日

[.tested] Joruri Mail 1.2.1 [AX3]

Joruri Mailは、Ruby(on Rails)とMySQL上で動作するIMAP4に対応したWebメールシステムです。
「Joruri CMS」と同じく、LDAP サーバを利用してユーザの集中管理をすることができます。また、ユーザ情報を組織アドレス帳として共有し、利用することができます。
本システムはオープンソース公開され、自治体を中心として利用が広がっています。最新の情報は以下のサイトを参照してください。

Joruri公式サイト

最新のリリースである、joruri Mail 1.2.1をインストールするための想定環境は以下の通りです。

[システム]
OS         : CentOS 6.2
Webサーバ  : Apache 2.2
DBシステム : MySQL 5
Ruby       : 1.9.2
Rails      : 3.0.0
Mailサーバ : SMTP, IMAP4

今回は、joruri Mail 1.2.1をARMアーキテクチャであるOpenBlocks AX3上のdebian 6.0上にインストールします。
また、debian 6.0の環境は、LXC上のゲストOSとして構築します。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
LXC 0.7.5 / ゲストOS: Debian 6.0

1.LXCの導入


今回、評価環境を、LXCのゲストOS(Debian squeeze)上で構築しました。
仮想化を行わない場合は、この作業は必要ありません。

LXC環境の構築について

 以下のページの手順に従って作業してください。

 OpenBlocks AX3でLXCによる仮想化を試してみる

初期設定について

先に、タイムゾーンの設定、ロケールデータの作成を行います。
ただし、lxc-createしてすぐの状態では、vimなどのツールがないため、
apt-getにより必要なものを追加する必要があります。
また、aptitudeパッケージも最初は含まれていませんので、先にaptitudeパッケージをapt-getにより導入します。

# apt-get install aptitude
# aptitude update
# aptitude install vim

 タイムゾーンの設定:
# dpkg-reconfigure tzdata

 ロケールデータの作成:
# vi /etc/locale.gen
   ja_JP.UTF-8 等の必要なロケールをアンコメント(行頭の#を消す)する

# locale-gen

また、今回は、Webメールシステムとして使用しますので、/etc/network/interfacesのeth0は、dhcpによるIPアドレス設定ではなく、固定のIPアドレスを指定します。
IPアドレスは、それぞれの環境で割り当てられたものを使用してください。
以下の例では、割り当てられたIPアドレスを、192.168.253.248、gatewayが192.168.253.1と想定しています。

auto eth0
iface eth0 inet static
    address 192.168.253.168
    network 192.168.253.0
    netmask 255.255.255.0
    broadcast 192.168.253.255
    gateway 192.168.253.1

開発環境の導入について

まず、よく利用するツールをインストールします。

# aptitude install tasksel
# tasksel install standard

開発用のツール類をインストールします。

# aptitude install build-essential

上記の作業により、LXCのゲストOS上での開発環境が構築されます。

また、LXC仮想環境の複製を行いたい場合ですが、上記の記事で導入した場合、

# ln -s /usr/local/var/lib/lxc /var/lib/lxc

と した後、元の、/var/lib/lxc/<元のコンテナ名>/config を、複製した/var/lib/lxc/<複製したコン テナ名>/configに上書きして、config内の<コンテナ名>の部分を書き換えることにより代替環境として動作させることが出 来ます。
(lxc-0.7.5では、インストール時に、/usr/local/var/lib/lxcが指定されていますが、この部分が一部のツールと整合性が取れていないようです。)

また、上記の記事にある通り、そのままではudevのインストールによりエラーが出ます。
これは記事にあるように、configファイルを変更することにより、インストールエラーそのものは出なくなります。
ただし、この場合、立ち上げたコンソールが使用出来なくなりますので、別途sshでlxcコントロール用のターミナルを確保して下さい。

2.apacheの導入


パッケージのインストール

# aptitude install apache2

 インストールのみで起動します。

mod_rewriteを有効にする

# a2enmod rewrite


3.mysqlの導入


パッケージのインストール

# aptitude install mysql-server

 インストール時にMySQLを管理するrootユーザのパスワードを聞かれるため、
 予め決めておく必要があります。

動作確認

# mysql -u root -p

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql>



4.joruri Mailパッケージのインストールのための事前準備


以下のマニュアルを参考に作業を進めます。ただし、想定環境がCentOS 6.2であるため、debian 6.0では導入するパッケージや、設定方法が異なります。

Joruri Mail v1.2.1 インストールマニュアル

まずは、root権限で作業を行います。

必要なパッケージの導入

apache(httpd)、mysqlに関してはすでに上記で導入作業を行っているため、必要ありません。
aptitudeコマンドにより、以下のパッケージを導入してください。

# aptitude install <パッケージ名>
libxslt-dev
libjpeg-dev
libpng-dev
librsvg2-dev
ghostscript
imagemagick
libmagickcore-dev
libmagickwand-dev
libcurl4-openssl-dev
libsasl2-dev
libsasl2-modules-ldap
apache2-dev

必要なソースコードファイルのダウンロード

 インストールマニュアルの通り、wgetコマンドによりダウンロードを行います。

 # cd /usr/local/src
 # wget http://joruri.org/download/jorurimail/jorurimail-1.2.1.tar.gz
 # wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
 # wget http://rubyforge.org/frs/download.php/74445/rubygems-1.6.2.tgz

Joruriユーザの作成

  # useradd joruri
  # passwd joruri

Joruriソースコードの設置

 # mkdir /var/share
 # tar xvzf jorurimail-1.2.1.tar.gz -C /var/share
 # chown -R joruri:joruri /var/share/jorurimail

Apache の設定

 設定ファイルを編集します。アドレスは固定アドレスとして設定したものを使用してください。

  # vi /etc/apache2/httpd.conf
 
  ServerName 192.168.253.168

 設定ファイルにエラーがないことを確認し、Apacheを再起動します。

  # apachctl restart

MySQL の設定と、joruriユーザの作成

 文字エンコーディングの標準を UTF-8 に設定します。

  # vi /etc/mysql/my.cnf
   :
  [mysqld]
  default-character-set=utf8    #追加
  
  [client]                      #追加(末尾に追加)
  default-character-set=utf8    #追加
  :

 MySQLを再起動します。MySQLはインストール時にすでに自動起動設定され起動しています。

  # /etc/init.d/mysqld restart

 rootユーザのパスワードは、aptitudeコマンドによりインストール時に設定しています。

 MySQL monitorを起動し、joruriユーザを作成します。

# mysql -u root -p
Enter password: ←インストール時に設定した(mysqlの)rootユーザパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 joruriユーザを作成します。

mysql> grant all on *.* to joruri@localhost IDENTIFIED BY 'pass';

 確認は以下のコマンドにより行います。

mysql> SELECT host,user FROM mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| deb-2     | root             |
| localhost | debian-sys-maint |
| localhost | joruri           |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql>

※パスワードは適切な値を設定してください。
本マニュアルでは pass と設定しています。

Rubyのインストール

 # cd /usr/local/src
 # tar xvzf ruby-1.9.2-p290.tar.gz
 # cd ruby-1.9.2-p290
 # ./configure
 # make && make install

RubyGemsのインストール

 # cd /usr/local/src
 # tar xvzf rubygems-1.6.2.tgz
 # cd rubygems-1.6.2
 # ruby setup.rb

gemライブラリ のインストール

 Ruby on Rails をインストールします

 # gem install rails -v 3.0.0

 必要ライブラリをインストールします。

 # cd /var/share/jorurimail
 # bundle install

Phusion Passenger のインストール

 Phusion Passengerをインストールします。

 # gem install passenger -v 3.0.9
 # passenger-install-apache2-module
    ( 画面の内容を確認して Enterキーを押してください。 )

 Apacheに設定を追加し、再起動します。

 # cp /var/share/jorurimail/config/samples/passenger.conf \
     /etc/httpd/conf.d/
  # apachectl restart

5.joruri Mail 1.2.1のインストール


Joruriユーザに変更します。

 # su - joruri
 $ cd /var/share/jorurimail

設定ファイルの編集

 環境に応じて設定ファイルを編集します。

Joruri Mail 基本設定

  $ vi config/core.yml
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  title  : Joruri Mail
  uri    : http://192.168.253.168/
  proxy  : ※プロキシ
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

  uriは設定したIPアドレスにより異なります。 
   ※プロキシ
  プロキシサーバが導入されている場合は
   http://example:8080/ の様に記述してください。
 
DB接続情報

 必要に応じて変更してください。(今回は変更なし)

 $ vi config/database.yml

SMTP, IMAPサーバ設定

 $ vi config/environments/development.rb


VirtualHost設定

  $ vi config/virtual-hosts/joruri.conf

 以下の部分を変更してください。

<VirtualHost 192.168.253.168:80>
    ServerName 192.168.253.168
    DocumentRoot /var/share/jorurimail/public
    Alias /_common/ "/var/share/jorurimail/public/_common/"
    setenv LANG ja_JP.UTF-8
    RailsEnv development
</VirtualHost>

データベースの作成

 データベースを作成します。

 $ /usr/bin/mysql -u root -ppass -e "create database jorurimail"

 テーブルを作成します。

 $ rake db:schema:load RAILS_ENV=development

 初期データを登録します。

 $ rake db:seed RAILS_ENV=development

 サンプルデータを登録します。

 $ rake db:seed:demo RAILS_ENV=development

VirtualHost の反映

 Apacheに設定を追加します。

 $ su -
 # cp /var/share/jorurimail/config/samples/jorurimail.conf \
     /etc/httpd/conf.d/

 Apacheを再起動します。

  # apachectl restart

 ここまでの手順で Joruri Mailにアクセスすることができます。

  公開画面 : http://192.168.253.168/  ←設定したIPアドレス

 次のユーザが登録されています。

    管理者(システム管理者)
      ユーザID   : admin
      パスワード : admin

    一般ユーザ(徳島 太郎)
      ユーザID   : user1
      パスワード : user1

    一般ユーザ(阿波 花子)
      ユーザID   : user2
      パスワード : user2

    一般ユーザ(吉野 三郎)
      ユーザID   : user3
      パスワード : user3

 上記のユーザはadmin以外は接続するメールサーバに合わせて削除、追加してください。

8.動作確認


 joruriは初期状態で以下のサンプル画面が表示されます。
 一部を管理画面で書き換えました。

<ログイン画面>

<joruri Mailホーム画面>
 
<モバイルアクセス機能>


9.さいごに


今回、joruri Mail の最新バージョンである、1.2.1が、ARMアーキテクチャのOpenBlocks上で動作することを確認しました。