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/armel | Debian sid/armhf | |
---|---|---|
Dhrystone 2 using register variables | 279.00 | 323.40 |
Double-Precision Whetstone | 11.70 | 111.60 |
Execl Throughput | 160.30 | 163.70 |
File Copy 1024 bufsize 2000 maxblocks | 154.50 | 130.60 |
File Copy 256 bufsize 500 maxblocks | 100.20 | 84.80 |
File Copy 4096 bufsize 8000 maxblocks | 322.60 | 269.90 |
Pipe Throughput | 133.00 | 132.30 |
Pipe-based Context Switching | 102.50 | 105.10 |
Process Creation | 191.40 | 200.90 |
Shell Scripts(1concurrent) | 431.40 | 376.80 |
Shell Scripts(8concurrent) | 543.10 | 498.80 |
System Call Overhead | 316.60 | 309.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)
# cd
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.36-0beta1/uImage.initrd.obsax3
2013/05/23更新
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.36-0rc1/uImage.initrd.obsax3
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.36-0beta1/uImage.initrd.obsax3
2013/05/23更新
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.36-0rc1/uImage.initrd.obsax3
ファームウェアファイルの書き込み
# flashcfg -f uImage.initrd.obsax3
ユーザーエリアを消去し、ストレージ併用モードを解除する
# flashcfg -e
# e2label /dev/sda1 "" ※ストレージ併用モード利用時のみ。デバイス名は適宜読み替えください。
# 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
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ベースのファームウェアを利用するには、事前にブートローダーの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)
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)
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)
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)
# cd
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.36-0beta1/uImage.initrd.obsa6
2013/05/23更新
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.36-0rc1/uImage.initrd.obsa6
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.36-0beta1/uImage.initrd.obsa6
2013/05/23更新
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.36-0rc1/uImage.initrd.obsa6
ファームウェアファイルの書き込み
# 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
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)の対応
- その他軽微な修正
0 件のコメント:
コメントを投稿