2014年11月6日木曜日

Edisonでデスクトップ表示(VNC接続)

先日、EdisonでDebian(ubilinux)が動いたとツイートしたら今までにないくらいリツイートされて驚きました。

さて、EdisonはすでにLinuxボード化になっているのですが、やはりデスクトップ表示もしてみたいということでやってみました。もちろんEdisonにはモニター出力がありませんので、リモートデスクトップでやってみることにしました。

こちらのIntelのGalileoにVNC接続するを参考にさせていただきました。

構成としてはX Window環境+Xvfb(仮想ディスプレイ)+VNCサーバーです。

X Window環境(デスクトップ)としてLXDEにしてみました。

コマンドラインからデスクトップ環境を「apt-get install lxde」でインストールできます。

続いて仮想ディスプレイ「Xvfb」も「apt-get install xvfb」でインストールします。

VNCサーバーとしてx11vncを「apt-get install x11vnc」でインストールします。

以上でインストールは完了しました。

次に実行方法ですが、

最初に仮想ディスプレイを立ち上げます。
コマンドラインで
「export DISPLAY=:1」
「Xvfb :1 -screen 0 1024x768x24 &」

続いて、Windowマネージャーを起動します。LXDEにはOpenBoxが含まれているので
「openbox &」

次にVNCサーバーを起動します。
「x11vnc -display :1 -bg -nopw -listen 0.0.0.0 -xkb」

途中フォントがないとか色々表示されますがそのままでも大丈夫でした。
これでEdison上でデスクトップ環境が動くようになりました。

あとはホストPCからVNCクライアントで接続すればデスクトップが表示されます。

最初は真っ黒ですが、右クリックするとメニューが表示されます。


ブラウザーを立ち上げてみました。

とりあえずEdisonでデスクトップ環境が使えることを確認できました。
自動起動などの設定はあまり詳しくないので試していません。

標準のYocto Linuxでも同じ手順(LXDEが動くかどうかはわかりませんが)でできると思います。(もう一度Yocto Linuxに戻してもいいのですが、eMMCの書き換え寿命が気になるのであまりやりたくないのです。Edisonモジュールだけ追加で購入しようかな)

次はWebカメラを接続してブラウザに表示できるか試してみたいと思います。


2014年11月2日日曜日

Debian(ubilinux) on Edison

Edisonの公式LinuxイメージはYocto Linuxになります。ベースは Ångstrom Linuxでしょうか。
公式イメージでは比較的コンパクトな構成になっているので、意外と使いにくい(エディタはViとか、パッケージ管理システムはopkgとか)と思います。

既にDebian(Wheezy)ベースのイメージが公開されています。

実際にインストールしてみました。
環境はWindowsからのインストールです。

-----------------------------------------------------------------------
準備
-----------------------------------------------------------------------
ubilinuxのサイトからイメージファイルをダウンロードします。
(Galileo用もあるみたいです。後日試してみようかと思います。)
ダウンロードしたファイルはgz形式なので7zip等で展開しましょう。
次にファームウェア更新用のプログラム(dfu-util.exe)をダウンロードします。
ダウンロードしたファイルをイメージファイルを展開したフォルダへ移動しておきます。

こちらのサイトからダウンロードしてください。

-----------------------------------------------------------------------
更新の実行
-----------------------------------------------------------------------
EdisonをUSBケーブルでPCに接続しておきます。(途中経過を見るのに2本とも接続してもいいでしょう)

コマンドプロンプトを管理者権限で起動します。

イメージファイルを展開したフォルダへ移動します。

「flashall.bat」を実行します。

リブートするように指示が表示されるので、一旦Edisonの電源を切ってからもう一度入れなおします。



しばらくするとフラッシュメモリの書き換えが始まります。このときシリアルコンソールを開いておくと作業の経過を見ることができます。


書き換えが終わるとしばらくして自動的にリブートします。

起動するとログインプロンプトが表示されるので、ユーザー「root」、パスワード「edison」でログインします。

-----------------------------------------------------------------------
ネットワークの設定
-----------------------------------------------------------------------
イメージを書き込んだ直後はWifiの設定が完了していないので、Wifiで接続できるようにします。

「/etc/network/interfaces」ファイルを以下のように編集します。

10行目 「#auto wlan0」->「auto wlan0」
13行目 「wpa-ssid Emutex」->「wpa-ssid 自分のアクセスポイントのSSID
14行目 「wpa-psk passphrase」->「wpa-psk 自分のアクセスポイントの共有キー

保存してから念のためにリブートします。

再起動時にDHCPサーバーが見つかればネットワークの設定は完了です。


あとは apt-get update & apt-get upgrade を実行してシステムの更新や、rootパスワードの変更などをしておきましょう。

ここまでくれば、あとはDebianが動くLinuxマシンと一緒です。サーバーにするもよし、GPIOも利用できるのでセンサーを付けてみるもよし(ただしArduinoIDEで動くかどうかは試していません。)

純正Linuxと同じくpythonやNode.jsはインストール済みなのですぐにサーバーとして使うことはできそうです。

-----------------------------------------------------------------------
その他
-----------------------------------------------------------------------
現在わかっている問題点(?)として、標準LinuxではホストPC上にディスクがマウントされるのがドライバーが読み込めなくてマウントされなくなります。今のところ特に不都合はなさそうなのですが・・・・

もし、標準Linuxに戻したい場合には公式サイトから最新の「Edison Yocto complete image」をダウンロードして展開しておきます。展開したフォルダに「dfu-util.exe」をコピーしてから管理者コマンドプロンプトで「flashall.bat」を実行すれば元に戻すことができます。手順は一緒になります。


以上 EdisonにDebianをインストールする手順でした。

Edisonの初期設定メモ

Edisonの初期設定については、すでにいろいろなサイトで説明されています。
参考にさせていただいたサイトのリストです。 基本的にWindowsでのセットアップです。

Edison開発方法 
  初期設定の方法やBrakeoutボードのピンアサイン表など参考になります。

Edison - Software Downloads 
  Intel Edisonの公式ダウンロードページです。
  初期設定に必要なソフトウェアはここからダウンロードしましょう。

KEI SAKAKI's PAGE.
  ファームウェアの更新について説明が掲載されています。

switch-science Edison wiki
  スイッチサイエンスさんのEdisonWikiページです。ここでEdison購入しました。


あとはターミナルソフトとマイクロUSBケーブルを2本用意すれば初期設定は問題なくできると思います。

メモ:
個人的にちょっとはまったのがここ・・・
COMポートが2つ出ていますが、シリアル接続は「USB Serial Port」を選択します。
はじめ「Intel Edison Virtual Com Port」で接続しようとして何も表示されずに焦りました。



Intel Edison

Galileoに続いてEdisonを購入しました。

購入したのは「Intel Edison Breakout Board Kit」です。
これはEdisonメインモジュール+拡張ボードの組み合わせです。
これ以外に「Intel Edison Kit for Arduino」もありますが、Galileoと大体同じようなものですね。

実際開発環境もArduinoIDEなどはGalileoと共通のようですが、BreakoutBoardの場合はGPIOなどはピンソケットなどをボード上にはんだ付け等行わないと使えません。

なのでLinuxサーバ的な使い方を色々試したいと思います。(そのうちGPIOなども使ってみるかもしれませんが)

箱の大きさはGalileoと比べて随分と小さいです。

GalileoGen2と並べてみました。左側がメインモジュール、右側がBreakoutボードです。