chromebookにcroutonでubuntuをいれる

Acer C720/2が届いた。
メインメモリ4GBで、SSDストレージ16GB。
ubuntuと同居させるには、ストレージが物足りないが、それはUSB3.0のメモリを挿しておくことでなんとかなる。

ということで、ubuntuを動かすまでにやったこと。

## 動作モード
chromebookには、3つの動作モードがある。

* 通常動作
  * ふつうに電源をいれて、エンドユーザとしてchromeの制約下で使うモード。
* レスキューモード
  * chrome OSの復元や、他のOSを起動するときのモード。
* デベロッパーモード
  * デベロッパーモードでchrome OSを起動すると、terminalのcroshで`shell`コマンドが使える。`shell`と入れると、bashを使うことができる。

### その他機能
* OS確認機能

  chrome OS以外のOSを使うことができるようにする。

* BIOSでのブートデバイスの選択機能

  USBやSDカードを挿入時、そのデバイスからOSを起動することができる。

### 各設定および機能の有効化方法
#### レスキューモードでchromebookを起動する
* 電源OFF状態から`esc+reload(F3相当の位置)+電源`を長押し。

#### デベロッパーモードの有効化+OS確認機能の無効化
* レスキューモードで起動すると、OSが見つかりません、という旨の画面がでるので、そこで`ctrl+d`を押す。
  * OS確認機能をOFFにするにはEnterキーを押してください、と出るので、Enterキーを押す。

#### BIOSの有効化
* デベロッパーモードでログインする
* wifiの設定をする
* ログイン画面でログインをせず、`ctrl+Alt+ →(F2相当)`でterminalを出す。
* loginプロンプトで、`chronos`でログイン
* `sudo bash`でrootになる。
* 以下コマンドを実行
```crossystem dev_boot_usb=1 dev_boot_legacy=1```

* 上記の1を0にすると、もとに戻る。
* CLI画面からGUIのログイン画面に戻るのは、`alt+←(F1)`

### 日常的なスプラッシュ画面での操作
上記、デバイスの有効化とBIOSの有効化をしてあれば、電源OFFにする状態から通常の電源ON直後、スプラッシュ画面がでる。

* `ctrl+d`でデベロッパーモードになる。
* `cltrl+l`でSeaBIOSによるOS選択画面になる。

BIOSの有効化は、下記操作では必ずしも必要ではありません。その場合、`ctrl+l`は使えません。

## chrome OSのリカバリ
OSをいろいろいじるには、工場出荷状態に戻る方法を確立しておく必要がある。

### リカバリーメディアの作成
リカバリーメディアの作成方法は3つ。
内蔵SSDのリカバリ領域から復元することもできるが、外部USBにリカバリメディアを作っておくと、SSD内リカバリ領域が壊れた時でも安心。(通常、書き込み制限がかかっているらしいので、めったに壊れない)

* `chrome://imageburner`を開いて、USBメディアを挿して作成。(僕の場合、ダウンロードがうまくいかなかった)
* chrome webストアから[chromebook復元ユーティリティ](https://chrome.google.com/webstore/detail/chromebook-recovery-utili/jndclpdbaamdhonoechobihbbiimdgai")をダウンロードしインストール。
  * リカバリーイメージのダウンロード15分
  * USB書き込み10分くらい
* Linux/OSXマシンを使って作成
  * [recovery.sh](https://dl.google.com/dl/edgedl/chromeos/recovery/linux_recovery.sh)を実行し、ダウンロードして、USBを挿して作成。使っているモデル名を検索する必要がある。C720の場合、Pettyで検索。

以下、備忘。

- リカバリディスクをchromebook上でダウンロードするとき、diskスペースが足りないと、ダウンロードと解凍が失敗する。ダウンロードに600MB、展開時2GBくらい?
- C720のイメージURLは[ここ](https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_6158.70.0_peppy_recovery_stable-channel_mp-v2.bin.zip)


###リカバリ方法
googleの[こちら](https://support.google.com/chromebook/answer/6002417)にあるとおり。以下の3つの方法がある。

* リカバリーメディアを使った初期化方法
  * リカバリーモードで起動。(電源OFF状態から`esc+reload(F3相当の位置)+電源`を長押し。
  * リカバリーメディアを挿す。

* 内蔵リカバリーメディアを使った初期化方法
  * 通常ログインしたchromeの詳細設定画面からPowerWashを選択

* [リセット方法](https://support.google.com/chromebook/answer/183084?hl=ja)は、ログイン画面で`Ctrl+Alt+Shift+r`

## ubuntuとの併用
現在、ubuntuと併用する方法は、[こちらのブログ](http://oohito.com/nqthm/archives/2343)によると以下の3つがある。
方式としては、大きく2つに分類できそうだ。

* 内蔵ディスクをパーティション分割し、マルチブートする方法。
  * chrubuntu
  * BodhiLinux
* chroot環境で起動する
  * croutonを使う

chrubuntuは、16GBのディスクを分割するとサイズ的に厳しく、またアンインストールするにもパーティションを戻さなくてはいけないのでやめる。(リカバリーすれば戻る)
chrome OSのファイルシステム上で比較的自由になりそうな、croutonでいれてみる。(`/usr/local/chroots/`領域をUSBに持っていくとかを将来検討)

2014-12-30追記：[こちらの記事](http://qiita.com/yasuki/items/f4b9a004305c8a96baa0)でUSBにインストールする手順を公開しました。

### croutonをインストール
1. デベロッパーモードで起動して、ログイン。
1. Chromeで、`https://goo.gl/fd3zc`にアクセスし、`crouton`スクリプトファイル
をDownloadディレクトリに保存する。(絶対パスでは/home/chronos/user/Downloads)
1. terminalからshellを起動
1. 以下のコマンドでダウンロードおよびインストールを開始。(一時間以上かかる)

```
$ sudo sh -e ~/Downloads/crouton -r trusty -t xfce,keyboard,audio,extension,chrome -e
```
1. 最後にubuntuユーザのIDとPWを求められるので、入力してインストール終了。
1. インストールが終わったら、`sudo startxfce`で、X-windowおよびxfce4がchromeとは別アプリとして起動する。


#### TIPS
* 末尾の`-e`をつけると、chroot配下を暗号化するかどうかを選択。
* -r オプションは、ディストリビューションを選択する。何が選べるはは、以下のコマンドで調べられる。

```
$ sudo sh crouton -r list
 Downloading latest crouton installer... ######################################################################## 100.0%
Recognized debian releases:
    potato* woody* sarge* etch* lenny* squeeze* wheezy jessie sid
Recognized kali releases:
    kali
Recognized ubuntu releases:
    warty* hoary* breezy* dapper* edgy* feisty* gutsy* hardy* intrepid* jaunty*
    karmic* lucid* maverick* natty* oneiric* precise quantal* raring* saucy*
    trusty utopic*
Releases marked with * are unsupported, but may work with some effort.
```
* -t はwindow managerやパッケージを選択する。同じく、-t listで調べられる。
* 再度インストールを実行したいときは、/usr/local/chroots/trustyをディレクトリごと削除する。(-uをつけないと、ディレクトリが存在するということで、インストールが開始しない)
* もしくは、-uをつけることで、updateインストール。前回エラー中断したところから再開できる。
* 推測だが、何度もインストールを短時間で繰り返していたら、以下のエラーが出るようになった。ubuntu側で単位時間あたりのセッションが多過ぎて、なにかの上限値にひっかかってしまったのだろうか。

```
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb  Connection failed [IP: 91.189.91.23 80]
```

## 画面遷移

###画面とキーの対応
1. chrome OSのGUI画面
`ctrl+alt+←(F1)`
2. chrome OSのCLI console画面
`ctrl+alt+→(F2)`
3. chroot(crouton)で動作している X window画面
`ctrl+alt+reload(F3)`

### TIPS

* 1.chrome OS GUI画面からは、2.chrome OS console画面にしか行けない。
* 2.chrome OS console画面からは、1にも3にも行ける。
* 3.X window画面からは、1にも2にも行ける。
* ctrlとaltは、一度画面を切り替えたら、キーを離さないと認識しない。押しっぱなしは認識しない。

## おまけ
## キーボードショートカット
なにはともあれ、操作を覚える。

* ヘルプの表示 `Ctrl+Alt+/`

## コマンド
通常のセットアップをして、`Ctrl+Alt+t`でterminal画面(crosh)を起動すると以下の様なコマンドが使える。

* ping
* ssh
* top
* tracepath
* network_diag

通常`help`と`help_advanced`がある。
多少、help_advancedのほうがいろいろできるが、実用的なほどではない。