Crostini
Crostini は Chrome OS で Linux アプリケーションを簡単に使えるようにするサポートの Google による総称です。
この記事ではコンテナで (Crostini を使って) Chromebook に Arch Linux をインストールする方法を説明します。デベロッパーモードを有効化する必要がなく、他の Chrome/Android アプリと一緒にアプリを動作させることができます。
- メリット
- デベロッパーモードを有効にする必要がありません。公式にサポートされており、ChromeOS を変更したり、BIOS を書き換えなくてすみます。
- バッテリーの持ちが良くなります。Linux を使いながら Chrome のバッテリーの持ちを活かせます。
- Android アプリや Play ストアを使用できます。
- デメリット
- OpenGL がサポートされていません (2018年11月24日現在)
- 音声出力がサポートされていません (2018年11月24日現在)
目次
イントロダクション
Linux のサポートの有効化
設定の Linux を開いて有効化してください。Debian Linux コンテナがインストールされるので、後から Arch Linux コンテナに置き換えます。
- Settings > Linux > Enable
Crostini は Chromebook にローリングリリースされています。Linux を有効化するオプションが存在しない場合、あなたの使用しているノートパソコンの安定版チャンネルでまだリリースされていない場合、ベータあるいはデベロッパーチャンネルに切り替える必要があります。Settings > About Chrome OS > Channel > Dev/Beta からチャンネルを切り替えられます。
デフォルトの Debian Linux コンテナを Arch Linux に置き換える
以下の手順は https://www.reddit.com/r/Crostini/wiki/howto/run-arch-linux から引用しています。
1. Arch Linux コンテナのインストール
Chrome で新しいターミナルを開いて (Ctrl + Alt + T)、ターミナルに接続して Arch Linux コンテナを作成:
vsh termina run_container.sh --container_name arch --user <gmail username> --lxd_image archlinux/current --lxd_remote https://us.images.linuxcontainers.org/
<gmail username> は Chromebook でログインしているユーザーに置き換えてください。@gmail.com とドットは取り除きます。例えば foo.bar@gmail.com なら --user foobar とします。ChromeOS のランチャーから起動したアプリは指定したユーザーで実行されます。
2. デフォルトの Debian コンテナを Arch Linux で置換
デフォルトの Debian コンテナの名前は penguin です。上記で作成したコンテナ "arch" を penguin に名前を変えることで、Chrome は arch コンテナから Linux アプリを起動するようになります:
lxc stop arch lxc stop penguin lxc rename penguin debian lxc rename arch penguin
3. gmail ユーザーのパスワードを設定
デフォルトでは gmail ユーザーにはパスワードが設定されていません。lxc exec を使ってパスワードを設定してください:
lxc exec arch -- bash
sudo を追加してユーザーを sudoers に追加すると良いでしょう。
4. Crostini コンテナツール、GUI アプリを使うための Wayland と、X11 アプリを使うための XWayland をインストール
Arch Linux コンテナのコンソールセッションを開いてください:
lxc console penguin
cros-container-guest-tools-gitAUR パッケージをインストールしてください。また、GUI ツールを使うために wayland と xorg-server-xwayland をインストールしてください。
2018年11月24日現在、xkeyboard-config 2.24 では sommelier-x サービスが動きません。/usr/share/X11/xkb/keycodes/evdev
の "<i372>" と "<i374>" から始まる行をコメントアウトすることで問題が解決します。修正したらサービスを有効化・起動してください。
$ systemctl --user enable sommelier@0 # For Wayland GUI apps $ systemctl --user enable sommelier-x@0 # For X11 GUI apps $ systemctl --user start sommelier@0 # For Wayland GUI apps $ systemctl --user start sommelier-x@0 # For X11 GUI apps
以下のコマンドを実行してサービスが正しく動作していることを確認してください:
$ systemctl --user status sommelier@0 $ systemctl --user status sommelier-x@0
Arch Linux でアプリをインストールすると、自動的に ChromeOS から起動できるようになります。GUI アプリは動作しますが、レンダリングはソフトウェアベースで、OpenGL はサポートされていないので注意してください。
既知の問題
動作することを確認:
- Pycharm
動作しないことを確認:
- Gnome (No OpenGL)
- glxgears (No OpenGL)
- Audacity (No recording devices)
トラブルシューティング
Pixelbook でネットワークが動作しない
Pixelbook でネットワークを動作させるには以下の設定が必要であると https://tedyin.com/posts/archlinux-on-pixelbook/ で報告されています。設定後、コンテナを再起動してください。
lxc profile set default security.syscalls.blacklist "keyctl errno 38"
DNS による解決が機能しない
DNS 解決がコンテナで機能しないことがあります。/etc/resolv.conf を作成することで解決します。
Chrome OS でアプリが開かない (ロードが終わらない)
コンソールセッションを起動していると (lxc console penguin)、Chrome OS でアプリが起動しないことがあります。コンテナを一度停止してから再起動することで Chrome OS ランチャーが動くようになります:
lxc stop penguin lxc start penguin
lxc のコンソールセッションを使うかわりに、ChromeOS から起動した Linux の標準的な GUI ターミナルを使うことで問題を回避できます。