ChromebookのLinux環境について
ChromebookにLinux環境を整える方法は以下の通りです。
-
Crostini
- 公式のLinux環境作成機能
- KVMとLXCを使用し、DebianやArch Linux、CentOS等を起動できる
- Sommelierというウィンドウマネージャを使ってGUIアプリを表示する
- 仮想マシン + コンテナなので動作が重い
- Chromebookのハードウェアの使用に制限がある
- デベロッパーモード不要
-
Crouton
- 非公式のLinux環境作成スクリプト
- chrootを使用し、Ubuntu、Debian、Kali Linuxを起動できる
- xiwiというChrome拡張機能を使ってGUIアプリを表示する
- xorgを使ってChrome OSと切り離されたGUI表示を行うことも可能
- Chromebookに接続したUSB機器に直接アクセスできる
- デベロッパーモード必要
-
Chromebrew
- 非公式のChrome OS用パッケージマネージャ
- 他のLinuxディストリビューションを入れる訳ではなく、Chrome OSに直接パッケージをインストールする
- Sommelierというウィンドウマネージャを使ってGUIアプリを表示する
- デベロッパーモード必要
たぶんこんな感じ。
他にはChrxを使ってデュアルブート環境を作成する方法もありますが、割愛します。
動作の軽さですが、体感は以下の通りです。
Chromebrew >= Crouton(xorg) >>> Crostini > Crouton(xiwi)
今回はCroutonにChromebrewを使ってSommelierをインストールし、GUIアプリを表示出来るようにしたいと思います。
(バージョン: 83.0.4103.77(Official Build)beta (64 ビット)にて確認)
デベロッパーモードへの切り替え
ESC + F3 + 電源キー
を同時押しし、リカバリモードを起動します。
リカバリ画面にてCtrl + D
を押下し、画面表示にしたがってEnter
押下等すればデベロッパーモードに切り替わります。
この際Chromebookが初期化されるので注意してください。
Croutonコマンドをインストール
dnschneid/croutonに従いhttps://goo.gl/fd3zcにアクセスし、ファイル「crouton」をダウンロードフォルダにダウンロードします。
Ctrl + Alt + T
を押下し、croshを開きます。
shell
コマンドを実行し、bashを起動します。
sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton
を実行し、croutonコマンドをインストールします。
これでcroutonコマンドが使用可能になりました。
Croutonコマンドを使ってUbuntu20.04をインストール
インストールするのはfocal(Ubuntu20.04)ですが、とりあえずbionic(Ubuntu18.04)用の「3 Steps to Install Bionic Beaver · dnschneid/crouton Wiki」に従います。
まず、下記コマンドを実行します(10分程ダウンロード/インストールが行われます)。
sudo crouton -r focal -t core,audio,cli-extra
完了したら
sudo enter-chroot
にてLinux環境に入ります。
sudo apt install xterm xinit
を実行し、完了したらCtrl + D
かexit
を実行しLinux環境を抜けます。
残りのcroutonで入れたいターゲットを、下記コマンドでインストールします(-uオプションで既存の環境を更新)。
sudo crouton -r focal -t audio,chrome,cli-extra,extension,keyboard,touch,x11,xiwi,xorg -u
Ubuntu20.04 + xiwiでGUIアプリを表示する
Sommelierをインストールする前に、一旦xiwiでGUI表示できるか確認します。
まずcrouton integration - Chrome ウェブストアをChromeにインストールします。
sudo enter-chroot
にてLinux環境に入ります。
GUIを持つLinuxアプリを、何でも良いですが今回はgvimをインストールします。
sudo apt install vim-gtk3
インストールできたら
xiwi gvim
を実行し、Chrome OS上にgvimがウィンドウ表示出来ることを確認します。
(ツールバーの表示がおかしいですが、スクショ以外では正常でした。)
Ubuntu20.04にChromebrewをインストール
SommelierをインストールするためにChromebrewをインストールします。(Chromebrewを使わない方法もあるようですが、動作しませんでした。)
skycocker/chromebrewに従い下記コマンドを実行します。
sudo apt install curl
curl -Ls git.io/vddgY | bash
crew
コマンドのインストールは成功すると思いますが、crew
を実行すると下記のエラーを吐きます。
/usr/local/lib64/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': libcrypto.so.1.0.0: cannot open shared object file: No such file or directory - /usr/local/lib64/ruby/2.7.0/x86_64-linux-gnu/digest/sha2.so (LoadError)
下記みたいな感じで適当に対処します。
cd /usr/local/lib64/
ln -s libcrypto.so libcrypto.so.1.0.0
crew
コマンドが使えるようになったと思います。
ChromebrewでSommelierをインストールし、GUIアプリを表示する
下記インストールコマンドを実行しSommelierをインストールします。
crew install sommelier
インストール完了時に下記の指示がありますので、適当に従います。
To complete the installation, execute the following:
echo '# Sommelier environment variables + daemon' >> ~/.bashrc
echo '# See https://github.com/dnschneid/crouton/wiki/Sommelier-(A-more-native-alternative-to-xiwi)' >> ~/.bashrc
echo 'if [ ! -d /tmp/.X11-unix ]; then' >> ~/.bashrc
echo 'mkdir /tmp/.X11-unix' >> ~/.bashrc
echo 'fi' >> ~/.bashrc
echo 'sudo chmod -R 1777 /tmp/.X11-unix' >> ~/.bashrc
echo 'sudo chown root:root /tmp/.X11-unix' >> ~/.bashrc
echo 'alias startsommelier="set -a && source ~/.sommelier.env && set +a && initsommelier"' >> ~/.bashrc
echo 'startsommelier' >> ~/.bashrc
source ~/.bashrc
To start the sommelier daemon, run 'startsommelier'
To stop the sommelier daemon, run 'stopsommelier'
To adjust environment variables, edit ~/.sommelier.env
You may need to adjust the SCALE environment variable to get the correct screen size.
Please be aware that gui applications may not work without the sommelier daemon running.
If you are upgrading from an earlier version of sommelier, run
'stopsommelier && startsommelier' or logout and login again.
sommelier.envは自動作成してくれなかったので、下記の内容で作成します。
(Chrome OS側にてChromebrewを使いSommelierをインストールした際に作成されたもの)
GDK_BACKEND=x11
CLUTTER_BACKEND=wayland
XDG_RUNTIME_DIR=/var/run/chrome
WAYLAND_DISPLAY=wayland-0
DISPLAY=:0
SCALE=1
また、ターミナルを開くたびにパスワード入力するのも面倒なので、以下の通りGUIを使いたい時だけstartsommelier
を実行し起動する感じにしました。
# Sommelier environment variables + daemon
# See https://github.com/dnschneid/crouton/wiki/Sommelier-(A-more-native-alternative-to-xiwi)
if [ ! -d /tmp/.X11-unix ]
then
mkdir /tmp/.X11-unix
fi
#sudo chmod -R 1777 /tmp/.X11-unix
#sudo chown root:root /tmp/.X11-unix
alias startsommelier="sudo chmod -R 1777 /tmp/.X11-unix && sudo chown root:root /tmp/.X11-unix && set -a && source ~/.sommelier.env && set +a && initsommelier"
#startsommelier
これでstartsommelier
を実行すると、下記のエラーを吐きます。
sommelier: error while loading shared libraries: libxcb-composite.so.0: cannot open shared object file: No such file or directory
aptでlibxcb-composite0をインストールして対処します。
sudo apt install libxcb-composite0
/usr/lib/x86_64-linux-gnu/libxcb-composite.so.0
が作成されてエラー解消されたのだと思います。
これでstartsommelier
を実行すると、下記のエラーを吐きます。(しつこい)
/usr/local/bin/Xwayland: error while loading shared libraries: libffi.so.6: cannot open shared object file: No such file or directory
適当に対処します。
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libffi.so.7 libffi.so.6
これでstartsommelier
でSommelierが起動できるようになりました。(以下の通り文句を言われておりますが、スルーします。)
Warning: Unknown scale factor: 1429
Warning: Unknown scale factor: 1176
Warning: Unknown scale factor: 1111
Warning: Unknown scale factor: 1053
Warning: Unknown scale factor: 909
Warning: Unknown scale factor: 833
Warning: Unknown scale factor: 769
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Unsupported maximum keycode 569, clipping.
> X11 cannot support keycodes above 255.
> Internal error: Could not resolve keysym Invalid
> Internal error: Could not resolve keysym Invalid
> Error: Key <CAPS> added to map for multiple modifiers
> Using Mod3, ignoring Lock.
Errors from xkbcomp are not fatal to the X server
sommelier process 22829 is running
Sommelierが起動している状態でgvim
を実行し、Chrome OS上にgvimがウィンドウ表示出来ることを確認します。
以上、CrostiniやCrouton(xiwi)より軽いLinuxGUIアプリ実行環境が作成できました。