Edited at

【ChromeOS】chroot環境はSDカードにインストールしないほうがよい

More than 1 year has passed since last update.

Chromebookで開発をするためにcroutonを使ってchroot環境(Ubuntu)をSDカード上にインストールして使っていました。

参考:ChromeBook(C201とcb3-111-C670)のSDカードにUbuntuを入れる

しかしある時から「スリープからの復帰時にクラッシュする」という現象が頻発して嵌りました。

ワークアラウンドもありますが結論としては「chroot環境をSDカード上にインストールするのは色々不安定なのでおすすめできない」です。


現象


  • Chromebook(ASUS C100PA)

  • ChromeOS

  • croutonを使ってSDカード上にchroot環境(Ubuntu14.04)をインストール


  • 上記環境にログイン


  • ログインした状態でPCをスリープ→復帰


  • ChromeOSが死ぬ「Chromeは正しく終了しませんでした」



原因

croutonのリポジトリにissueが立っていました。

Suspend/resume breaks chroot when running off external SDC card

Chromebookの電源管理デーモン(powerd)がスリープ時にUSBをidle状態にする→SDカードがアンマウントされる→CromeOSがクラッシュする、ということのようです。


どうする?


ワークアラウンド

powerdの設定を上書きして「PCを閉じるとスリープ」「スリープ時にidle状態になる」という挙動を禁止するとクラッシュを回避できます。

Power manager overrides

例えば「PCを閉じるとスリープ」を禁止するには、crosh shellから下記のようにします。

sudo -u power cp /usr/share/power_manager/use_lid /var/lib/power_manager       #copy default config

sudo su #cant sudo next command
echo 0 >/var/lib/power_manager/use_lid #change the action to do nothing
restart powerd #let the change take effect
exit #exit root


根本的解決策

で、私は「そもそもSDカード上じゃなくて内部ストレージにインストールする」という結論に落ち着きました。

当該issueでも「SDカード上で使うと内部ストレージより不安定。僕を信じて!」という趣旨のコメントがついています。

なんとなく容量が不安だったので64GBの外付けSDカードにインストールしていましたが、私の場合CUIのみの最小限の構成なので、本体容量の16GBでも十分事足りました。