ChromebookにLinux環境を入れてみた。インストール自体はワンボタンでできてしまう。
インストールすると下記のようなターミナルが表示されてシェルが扱えるようになる。
そもそもChrome OS自体がLinuxベースで動いているはず。さらにLinuxをインストールするとはどういうことか?気になったので調べて整理してみた。
どうやらこんな感じの入れ子構造になっているっぽい。
今回インストールしたLinuxは水色のPenguin Containerの部分。
Chrome OS
一番下のChrome OSのユーザランドには、croshでアクセスができる。croshはChromeブラウザーでCtrl-Alt-Tを押すと起動する。
unameを見ると4.19系のカーナルが動作していることが分かる。
Termina VM
crosvmでvmcコマンドを実行して、動作しているVMのリストを確認する。
terminaというVMが動作しているのが分かる。
crosh> vmc list
termina (10737426432 bytes, min shrinkable size 2723151872 bytes, raw)
Total Size (bytes): 10737426432
crosvmでvshコマンドを実行して、VMの中に入る。
unameで5.4系のカーネルが動作していることが分かる。/etc/os-releaseでディストリビューションがChromium OSであることも分かる。
上記のページに書いてある内容と一致する。TerminaはChrome OSのLinuxカーネルとユーザランドからコンテナ実行に必要な要素以外を削ぎ落としたもの。
Termina is a VM image with a stripped-down Chrome OS linux kernel and userland tools. Its only goal is to boot up as quickly as possible and start running containers.
crosh> vsh termina
(termina) chronos@localhost ~ $ uname -a
Linux localhost 5.4.119-14945-gafc97d54f809 #1 SMP PREEMPT Tue Aug 10 21:44:33 PDT 2021 aarch64 GNU/Linux
(termina) chronos@localhost ~ $ cat /etc/os-release
NAME=Chromium OS
ID=chromiumos
HOME_URL=https://www.chromium.org/chromium-os
BUG_REPORT_URL=https://crbug.com/new
VERSION=92
VERSION_ID=92
BUILD_ID=13982.81.0
Penguin Container
termina VMでLXD環境で動作しているコンテナ一覧を表示する。
penguinという名前のコンテナが動作しているのが分かる。
crosh> vsh termina
(termina) chronos@localhost ~ $ lxc list
+---------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+---------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| penguin | RUNNING | 100.115.92.203 (eth0) | 2402:6b00:752c:a700:216:3eff:fed9:6470 (eth0) | PERSISTENT | 0 |
+---------+---------+-----------------------+-----------------------------------------------+------------+-----------+
lxc execコマンドで中に入ってシェルを実行する。ChromebookにLinuxをインストールすると起動するターミナルアプリでも同じシェルが起動していると思われる。
(termina) chronos@localhost ~ $ lxc exec penguin -- /bin/bash
root@penguin:~# uname -a
Linux penguin 5.4.119-14945-gafc97d54f809 #1 SMP PREEMPT Tue Aug 10 21:44:33 PDT 2021 aarch64 GNU/Linux
root@penguin:~# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
penguinはシステムコンテナなので、カーネルはTerminaVMと同じはず。unameで確認すると、たしかに5.4.119となっていて同じっぽいことが分かる。
ユーザランドはDebian。