2016/01/17

ubuntuでwine1.6.2



Wineが登場してしばらく経っていたけれど、久しぶりに確認すると、今のWineではかなりのソフトウェアがそのまま動くようだ。 物は試しと、いろいろと使ってみた。 上はOrbitoronが普通に動いているところ。

Ubuntuノートをサブノートとして携行できるように、いろいろ試してみる。

Wineのバージョンは1.6.2 (apt-get で導入)

Teraterm

Ubuntuで入手できるシリアルターミナルでも問題は無いけれど、動くというので導入してみた。 USBシリアルに接続する場合は、 /dosdevices/配下に com1というシンボリックリンクを作成するようだ。

cd .wine/dosdevices
ln -s dev/ttyUSB0 com1
USBシリアルはudevルールに登録して、あらかじめ権限を得ておく必要がある。 そのあたりがなかなか慣れない・・・。


一度登録がうまくいけば、あとはあっさりと動作した。

LTSPICE系も普通に使える。  Notepad++でのテキスト編集も問題なかった。

実行もアイコンをクリックするだけだし、ほとんどストレスなく使えるのでびっくりした。

デスクトップにWindowsアプリが増えてくると、これはUbuntuなんだろうか・・・とだんだん不安になってくる。 フォントの問題などは、調整が必要な場合もあった。

少なくとも、Windows機をサブノートにしなきゃいけない理由は減ってきた。 いいことだなぁ。

Chromebook C720/2をUbuntuマシンにする


たまたま、Chromebook C720/2 の中古を見つけて安く手に入ったので、Ubuntu専用機として環境整備をしてみた。

C720/2のスペックは、
Celeron 2955U(Haswell世代)
4GB RAM
16GB SSD(M.2)

USBポートが左右に一つずつ、オーディオジャックとSDカードスロットがあるだけの割りきった設計。

 2~3万円でWindowsタブレットやWindows10の激安ノートが新品で手に入る時代だけれど、 ハードウェアに32bitOS縛りが無いものはその2倍程度になってしまう。

 ファンレスではないが、最大負荷でもほとんど音が聞こえない、静かなファンを搭載している。
価格なりの点としては、液晶がTNなのと、キーボードの日本語配列は英字配列の枠をそのまま使って、キーを分割して詰めこんであるあたり。 やや慣れが必要だ。



ChromeOSそのものはブラウジングだけでいろいろ完結するので、ストレスなく利用できる。 スワイプ動作が秀逸。
  貧者のMacbookAirと呼ばれるけれど、北米では教育機関への導入でAppleのシェアを奪っているという記事もあった。

Linux機としての利用

ChromeOSそのものはlinuxカーネルで動いていて、Ubuntu等を利用する場合は3通りの方法が存在する。

ハードル(ChromeOS、ハードウェアへの影響度)の低い順だと、

1: croutonで、ChromeOSのカーネルを利用して、Ubuntu環境を追加で導入する。(開発者モード)
2: Chrxの導入で、予備のパーティションを利用してChromeOSとのデュアルブート環境を構築する。  (開発者モード、レガシーブートの有効化)
3: Ubuntuをクリーンインストールする。 (開発者モード、レガシーブートの有効化、USBブートの有効化)

 一通りの導入を試してみた結果、自分の場合はクリーンインストールが最もストレスが少なかった。
もしSSDが16GBのままなら、デュアルブート環境では残り容量の点でかなり厳しいという弱点もある。

ChromeOS自体は、BIOS設定で失敗して文鎮化しなければ、リカバリメディアを作成していつでも復旧できる。

1はChromeOSにログインしてから、Ubuntuデスクトップへ切り替える形で、共存させて動かすことができる。 いろいろと制約はあるけど、一番お手軽だ。
2、3の方法ではBIOSの設定が必要。ChromebookのBIOSはChromeOS専用にカスタマイズされているので、通常は起動プロセスは遮蔽されている。 開発者モードに移行したChromeOS上から、コマンドでレガシーブートの有効化、USBブートの有効化を行う。

カーネルを触れる開発者モードと、レガシーブートへの移行には起動時のキー操作が必須になる。 

2、3では起動時にCtrl+Lを押さないとレガシーブートに移行しない。 自動的にレガシーブートへ移行させるには、マザーボードの物理的なライトプロテクトスクリュー(ネジ)を一時的に外してBIOS設定をすることになる。 利便性のために、筐体の分解作業と保証を外れるというリスクがある。

1,2ではインストールした時点でChromebook用のパッチ適用やホットキー設定などが一通り済んでいるので、日本語環境の導入をすれば使えるようになる。 ただ、カーネルバージョンやパーティション設定などの制約があったりする。 しばらく試してみたが、必要なソフトウェアを入れることができなかった。 

Ubuntu14.04 LTS日本語版の導入

日本語版をUSBブートでインストールする。 WindowsだとWin32 DiskImagerを使うと今のアーキテクチャで変な相性問題が出ない。

そのままだとタッチパッド、ホットキー、サスペンドと終了時ができないという問題が発生するので、USBマウスを使いながら、まずカーネルを3.19にアップデートする。

sudo apt-get install linux-generic-lts-vivid
これでタッチパッドのパッチが導入されたカーネルになる。
そのままだとカーネルの過去のバージョンが/Bootを圧迫するため、いずれアップデート時に警告が出る。 不要なイメージは削除したほうが良さそう。

ホットキーとサスペンドの問題については、幾つかのファイルをgrubなどに追加する。下記のサイトが参考になった。

Fixing Suspend in Xubuntu on the Acer C720 – A Simplified Guide


周辺機器やバッテリ設定(TLP)などは、下記のサイトを参考にした。(カーネルについては3.19の導入で対策済み)

(Part 3/3) Clean Installing Linux on the Acer C720P/C720 Chromebook – A Complete Guide


FnキーはChromeOSのアイコン表示しかないので、Ubuntuでの利用を考え、自分でカスタマイズすることにした。

2年経っているモデルでもあり、情報が多くて助かった。 サスペンドに入れない問題が解決しなかったら、おとなしくChromeOSのままだったかもしれない。

現在はM.2 SSDを128GB(MyDigitalSSD)に換装して利用中。 (一部のSSDは電源管理の機能の有無によって相性問題があるようだ)

 M.2規格は初めて見たけど、とても小さい。  現行の低コストなノートPCは、ほとんどがタブレットと同様にeMMCのオンボードになっているので、換装といった拡張性は望めなくなっている。 ノートPCがスマホ部品に依存しはじめている兆候なのだろうか。

個人的には配線された電解コンデンサとケーブルが、チップ固体コンデンサの単価より安いのか気になるところ。

2016/01/05

Arduino互換機で円周率を求める

年末に書いていたつもりが、もう2016年ですね。

32ビットのArduino互換機を比較してみる目的で、円周率を計算させ、実行速度を出してみた。

「C言語によるアルゴリズム辞典」 に載っていた多倍長演算による円周率の計算(Machinの公式)を使って、1000桁ほどを実行するのにかかる時間を調べる。

手元の32ビットな互換機は、
・ChipKit MAX32 (PIC32MX795F512L MIPS32 M4k )
・Arduino DUE ( SAM3X8E ARM Cortex-M3 )
・MSP432launchPad (MSP432 ARM Cortex-M4F )
・Teency LC (MKL26Z64VFT4 ARM Cortex-M0+) 2017_Feb 追加

それぞれ開発環境はArduino, MPIDE(Chipkit Core), Energia

参考枠として、8ビットのATmega328Pにも頑張ってもらった。

結果

処理時間/ (MCU名、@動作周波数)/ 処理時間x動作周波数 / ( ATmega328Pのスコアを1とした時の倍率)
732ms    ( PIC32MX795F512L @15MHz )  10980 (29.8)
364ms    ( PIC32MX795F512L @30MHz )  10920 (30.0)
136ms    ( PIC32MX795F512L @80MHz )  10880 (30.1)
139ms    ( SAM3X8E @84MHz )               11676 (28.1)
222ms    ( MSP432 @48MHz )                 10656 (30.8)
2149ms  ( MKL64Z @48MHz )                103152 (3.2)
20512ms ( ATmega328P @16MHz )         328192 (1)

周波数の差を補正したスコアでは、32ビットMCUを比較すると、大体似たような結果になった。
ATmega328Pの場合、8ビット長、かつ除算器が無いことが結果に表れた。
Cortex-M0/M0+も同様に除算器が無く、32ビットMCUとしては10倍程度の差がついた。
ちなみにRAMが64kB以上あれば、そのままのコードで2万桁も出力できた。 80MHzのPIC32MXで56秒ほど。

その他

・本当の比較という点では、CoreMarkのような組み込みマイコン向けのベンチマークが参考になる。同時期の同じクラスの製品であれば、圧倒的な差とはなりにくい。
・ 今回の処理では浮動小数点は使用されていないけれど、MSP432には単精度のFPUが内蔵されている。 Energia IDE上ではfloat型をつかえば自動的にハードウェア支援の恩恵が得られる。
・ PIC32MXやSAM3X8Eは、07~09年に登場している。 パフォーマンス重視の石なので、互換ボード系の実装ではクロックも最大値で動作し、消費電力も大きい。 今回の実験で、高性能なArduinoとして使うだけなら、クロックを15~30MHz程度まで落としてもたいていの用途には問題なさそうということが分かった。 コンスタント電流消費や素子の熱損失がかなり抑えられる。

・ PIC32MXの実行速度の変更は、改変したブートローダーで行った。 30MHz時の消費電流は40mAほど。

・最近登場したMSP432は、今トレンドのエネルギー効率を重視した設計になっている。
 複雑なデータ処理を伴うアプリケーションが増える中で、リッチなCPUで処理時間を短縮し、スリープ時間を増やすことで省電力を目指す。内部のパワードメインはMSP430を引き継いだ多彩な省電力モードを備え、さらにスリープ時データ保持用に8kBの専用SRAMをもつ。

・マイコンのエネルギー効率の指標にはULPBench(http://www.eembc.org/ulpbench/index.php)というものがあり、サイトで各社のマイコンとスコアが公開されている。  スコア上位は32ビットアーキテクチャが多い。

・ AVR、MSP430/432、PIC32の純正開発環境でも、最近はArduinoAPIでコンパイルできる拡張機能の整備が進んでいるので、本格的な開発環境でデバッグしながら開発するというのもとっつきやすいかもしれない。