3. Chromium OSでECHONET Lite通信

# この記事は？
もう使わないかな？って思っているパソコンにChromium OSをインストールして，Web見るには十分使えるよ！ってなるためのメモ書き程度のもので，役に立てばいいなと思ったやつです．2015年くらいに流行りまして，その時やったのをもう一回再燃してやっている感じです．

というのは，ついでのNode.jsをインストールしてしまえば簡単な開発環境を作れるし，軽い処理のサーバーなら十分作れるのでECHONET Liteでスマートハウス化してしまったらどうかという提案記事を書きたいのです．

## 記事の条件

実施日 : 2016.06.22
Croudready : ver. 46.1.20


## Chromium OSをインストールする．

参考文献[1]を参照してやりました．
使用したのはCroudready[2]のver. 46.1.20です．


## Terminalを使う
Terminalを出す手段には2種類あります．

（方法１） Webブラウザ上で__Alt + Ctrl + t__
利点：複数のTerminalを出せる．ブラウザ見ながら作業ができる．

（方法２） __Alt + Ctrl + F2__
利点：root権限を簡単にとれる．フルスクリーンで作業しやすい．
ちなみに戻ってくるのは__Alt + Ctrl + F1__

### rootになる方法

（方法１） WebブラウザのTerminalならX terminal（$TERM = xterm）です．

> __crosh >__ shell
> __chronos@localhost / $__ sudo su

passwordは下記のどれかだと思います．私はchromeでした．

- password
- chrome
- chromeos
- chronos
- facepunch

> __localhost / #__

（方法２） Alt + Ctrl + F2の画面ならコンソール（$TERM = linux）です．

> __localhost login:__ root
> __localhost ~ #__

コンソール画面で日本語入力とJISキーボード認識ができない．どうやるんだろう？


## Driveの書き込み権限，実行権限
Chromium OSのハードディスクは基本的にRead-only file systemになっているので，書き込み可能にする．
これはマウントしなおすことで何とかする．

> __localhost ~ #__ mount -o remount, rw /

下記のほうが実行可能にもなって良いのかな？configure, make等をやりたいときには実行権限がないとPermission deniedくらいます．

> __chronos@localhost ? $__ mount -i -o remount,exec /home/chronos/user


## Linuxで利用する基本的なコマンド（ツール群）のインストール
Chromium OSには基本的なツールすら無いので，まずはそこからインストールする．
これはchromebrewという素敵なツールが公開されているのでそれを利用しよう．
Webブラウザで　にアクセスし，ダウンロードフォルダにダウンロードする．

user状態で下記コマンドを入力する．

> __chronos@localhost ? $__ cd
> __chronos@localhost ~ $__ wget -q -O - https://raw.github.com/skycocker/chromebrew/master/install.sh | bash

残念ながら，みんなの大好きなaptは入らない．


## Chromebrewが入ればかなりのことができるようになる．

Rubyをインストールした．バージョンは2.0.0p247
> __chronos@localhost ? $__ crew install ruby


Node.jsをインストールしたらPython2.7系も一緒にはいりました．Nodeのバージョンは4.3.0，npmのバージョンは2.14.12で，Pythonのバージョンは2.7.10でした．
> __chronos@localhost ? $__ crew install node

Emacsも入りました．入れたらついでにPerlも入っちゃいました．
> __chronos@localhost ? $__ crew install emacs

ただ，nanoエディタが入りません．どうやるんだろう？コンパイルでエラーが出ます．


## ECHONET Liteを使ってみる．

ここまで来たら，下記の記事に従ってスクリプトを作って実行します．
https://www.npmjs.com/package/echonet-lite

受信しません・・・と思ったらポート開放設定でした．

> __chronos@localhost ? $__ sudo iptables -I INPUT -p udp --dport 3610 -j ACCEPT


完璧！
> __chronos@localhost ~/Download/node $__ npm i echonet-lite
> __chronos@localhost ~/Download/node $__ node test.js

---
## __おまけ__ (aptを使いたい) ChromiumOSにUbuntuをインストールする方法

世の中では「apt-getを動作させる」というのは「UbuntuをインストールしてX上で動作させる」ということと等価になってるみたいい．
やってみてわかりましたがWindows上にCygwinを入れるような感じです．Ubuntu on ChromiumOSという感じ．
自分としてはChromiumOS上で作りたいので他の方法を模索したいですが，とりあえずまとめておきます．

まずはインストール可能なUbuntuのバージョンを確認する．ここで＊がついているものはダメだそうです．
> __chronos@localhost ? $__ sudo sh ~/Downloads/crouton -r list

Ubuntuのバージョンはとりあえずpreciseでやります．下記に記述してますが，Ubuntuのバージョンはおしゃれに名称がついているらしいです．
> __chronos@localhost ? $__ sudo sh ~/Downloads/crouton -r precise -t kde,keyboard,audio,extension,chrome

下記が必要かどうかわかりませんでした．また，X windowがうまく動きませんでした．インストールに２時間程度かかりました．
> ,keyboard,audio,extension,chrome

Ubuntu用のuserとpasswordを聞いてきますので，例えば下記みたいな感じで書いてみました．
> ex.
> __Please new specify a username for the primary user:__ chronos
> __Enter UNIX password:__ chrome
> __Retype UNIX password:__ chrome

## Ubuntu on ChromiumOSの起動

さて起動してみます．
> __chronos@localhost ? $__ sudo enter-chroot -n precise

user名とpasswordを入力して，下記のコマンドラインが出てくれば成功ですね．
> __(precise)chronos@localhost: ~ $__

後はたぶん好き放題．
> __(precise)chronos@localhost: ~ $__ sudo apt-get update
> __(precise)chronos@localhost: ~ $__ sudo apt-get upgrade
> __(precise)chronos@localhost: ~ $__ sudo apt-get install tcpdump
> __(precise)chronos@localhost: ~ $__ sudo apt-get install ruby


### Ubuntuのバージョン

Wikipediaに，Ubuntuのバージョンと名前の対応表があります．
なんでこんなに分かりにくい方法でやるんだろう？かっこいいとでも思ってるんだろうか？
MacOSも意味不明なネーミングつけて喜んでるから何か意味でもあるんだろうか？

| ver|  name  |
| :--: | :--: |
| 12.04 LTS | __Precise__ Pangolin[80] |
| 14.04 LTS | __Trusty__ Tahr[86] |
| 16.04 LTS | Xenial Xerus |

### Chromium OSの小技もまとめています．

http://qiita.com/Sugimura-Laboratory/items/607780801f2f7838876f

---
### 参考文献

すみません，そこらじゅうを参考にさせてもらってますので下記では全然足りません．
参考文献もきちんとまとめたい・・・

[1] Croudreadyのインストール記事，
http://cloud-work.net/chromium-os/cloudready/

[2] Neverware
http://www.neverware.com/

[3] Chromebookに開発環境を実装する方法2 ― Chromebrew編,
http://chromesoku.com/chromebrew/