Chromebook Linux環境 備忘録


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。