ChromeOSでLinuxを動かすには、以前にはDeveloper Modeにしてcroutonを使う必要がありました。現在(2020/06/27)、ChromeOSではLinux (beta)という機能でVM上でLXDを使ってLinuxを動かす機能が搭載されました。
現在(Version 84.0.4147.64 beta)は、まだこの機能ではDebianのディストリビューション(のコンテナ)しか提供されていませんが、LXDを直接操作することで、任意のディストリビューションを実行することもできます。penguinという名前のコンテナとして用意しておけば、認識するようです
参考元の記事
https://www.reddit.com/r/Crostini/wiki/howto/run-ubuntu
しかし、1つだけこの機能は、cros-guest-tools、cros-ui-configというGoogleが提供するパッケージに依存しています(機能的にはVirtualBoxのGuest Addition的なの)。このパッケージは現在Debianでしか提供されていないようです。そのため、前述の記事ではDebianパッケージからコードを取り出して改変することで、実現しています。
構築手順
Version 84.0.4147.64 beta、Ubuntu 20.04で実行する手順を示します。
コンテナの作成まで
ChromeOSのSettingsを開き、Linux betaをTurn onし、ターミナルにログインできるところまですすめる。
Chromeを開き、Ctrl+Alt+Tを押し、ターミナルを開き、以下のコマンドでVMに入る。
vmc start termina
元のDebianのコンテナを一旦止めて、別の名前に変更する。
lxc stop penguin --force
lxc rename penguin debian
起動したいディストロのコンテナをpenguinという名前で起動する。
lxc launch ubuntu:20.04 penguin
以後、以下のコマンドでpenguinコンテナのrootになって作業する
lxc exec penguin -- bash
デフォルトユーザ名の変更
デフォルトユーザ名がGoogleアカウントの名前になるので、変更する。
mkdir /home/nnyn
usermod -l nnyn -d /home/nnyn ubuntu nnyn
groupmod -n nnyn ubuntu
パッケージのインストール
既存パッケージのアップデートと、作業に使うツールをインストールする。
apt update
apt upgrade
apt install binutils
ChromeOSのツールのリポジトリを追加する。
echo "deb https://storage.googleapis.com/cros-packages buster main" > /etc/apt/sources.list.d/cros.list
if [ -f /dev/.cros_milestone ]; then sudo sed -i "s?packages?packages/$(cat /dev/.cros_milestone)?" /etc/apt/sources.list.d/cros.list; fi
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
apt update
cros-ui-configというパッケージを取り出して、競合するパッケージを取り除く。そして、cros-guest-tools cros-ui-configをインストールする。
apt download cros-ui-config # ignore any warning messages
ar x cros-ui-config_0.12_all.deb data.tar.gz
gunzip data.tar.gz
tar f data.tar --delete ./etc/gtk-3.0/settings.ini
gzip data.tar
ar r cros-ui-config_0.12_all.deb data.tar.gz
rm -rf data.tar.gz
apt install cros-guest-tools ./cros-ui-config_0.12_all.deb
以下のパケケージもインストールすると、GUIアプリでマウスカーソルが小さくなりすぎるのを防ぐ。
apt install adwaita-icon-theme-full
再起動する
一度、コンテナを終了させる。
shutdown -h now
このあと、Linux betaを再度起動させるために、一度ChromeOSをシャットダウンして再起動する。
ChromeOSのランチャーからLinux Apps->Terminalを選択する。すると、そのコンテナ上で実行されます。