Help us understand the problem. What is going on with this article?

ChromeBook Crostini の構造を簡単に辿る

はじめに

テレワークの導入に伴って、会社から Chromebook を貸与され、Linux が使えるので試しにテレワークでの開発に使うことになりました。

また、Chromebook で Linux を使用するにはいくつかの方法があり1、特別これでなければいけないという理由もなかったため Crostini という Linux コンテナを利用しました。しかし、Crostini の構造が分かりづらく躓くことが多かったため、備忘録として残しておきます。

Crostini の構造については使用されている技術が書かれているページがいくつかありました。この記事では、そういった技術をあまり知らなくても感覚的に Crostini の構造を掴みたいと思い、書いた記事になります。

コロナの影響で Chromebook を使い始めた方、使い始める方もいらっしゃるかもしれません。基本的には備忘録なので、読みづらい点や間違っている点などあるかもしれませんが参考になれば幸いです。

概要

では具体的には何をするのかというと、Crostini の実体である Linux コンテナ ( LXD ) が Chromebook (Chrome OS) の中でどの位置にいるのかを辿っていきます。

なおここで言う「実体」では、デフォルトのターミナルアプリで表示されている場所のことも指しています。そこがどこにあるのかを辿っていく事で、Crostini の構造を簡単に紐解いていきます。

環境

  • Acer Chromebook CB715-1WT-A38P/E
  • Google Chrome (Chrome OS) beta 64bit

Crostini とは

Chrome OS 統合型の Linux コンテナで、「Chrome OS で Linux アプリケーションを簡単に使えるようにするサポートの総称」のことだそうです。

なお、Crostini を使用する場合、デフォルトで Debian が入ります。2

Crostini の実体を辿る際に出てくる用語

  • Crosh (ChRome SHell)
  • Temina (Termina VM)
  • LXD

Crosh とは

Chromeシェル(CROSH)は、Linux BASHまたはWindowsコマンド(cmd.exe)ターミナルと似た、コマンド・ライン・インターフェイスです。Chrome OSはLinuxベースですが、CROSHはほとんどのLinuxコマンドを認識しません。

Temina とは

読み取り専用の仮想マシンのこと。

LXD とは

システムコンテナと呼ばれる、OS 単位のコンテナの一種。

Crostini の実体を辿る

では、順を追って Crostini の実体 (ターミナルアプリで表示されている場所) まで辿っていきたいと思います。

1. Termina VM へログイン

Crosh を起動し、Termina VM へログインします。3
Crosh は Google Chorme から ctrl + alt + t、またはターミナルアプリから ctrl + alt + p で起動できます。

crosh> vsh termina
(termina) chronos@localhost ~ $

2. Termina VM 上で稼働している LXD コンテナを表示

(termina) chronos@localhost ~ $ lxc list
+---------+---------+------------------------------+-----------------------------------------------+------------+-----------+
|  NAME   |  STATE  |             IPV4             |                     IPV6                      |    TYPE    | SNAPSHOTS |
+---------+---------+------------------------------+-----------------------------------------------+------------+-----------+
| **penguin** | RUNNING | 172.20.0.1 (br-8703516dbe4d) | 2400:2413:2202:bb00:216:3eff:fed8:4207 (eth0) | PERSISTENT | 0         |
|         |         | 172.17.0.1 (docker0)         |                                               |            |           |
|         |         | 100.115.92.202 (eth0)        |                                               |            |           |
+---------+---------+------------------------------+-----------------------------------------------+------------+-----------+

3. 稼働中の LXD コンテナにログイン

デフォルトでは penguin というユーザー名の Debian が入っているので、以下のコマンドでログインします。

(termina) chronos@localhost ~ $ lxc exec penguin bash
root@penguin:~#

ログイン後、試しに実行中の Docker コンテナを表示してみます。

これでようやく Crostini の実体である Linux コンテナまで辿り着きました。
ここでのコマンド操作が、Linux アプリとして用意されている「ターミナル」と全く同じ になるという事のようです。

root@penguin:~# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                  NAMES
6822c5f1993b        nginx:stable-alpine   "/bin/sh -c 'envsubs…"   14 hours ago        Up 3 hours          0.0.0.0:8080->80/tcp   cvat_proxy
55e2b1de1b0e        cvat_cvat_ui          "nginx -g 'daemon of…"   14 hours ago        Up 3 hours          80/tcp                 cvat_ui
b6b4feb3670e        cvat                  "/usr/bin/supervisord"   14 hours ago        Up 3 hours          8080/tcp, 8443/tcp     cvat
8832f64e8f96        postgres:10-alpine    "docker-entrypoint.s…"   14 hours ago        Up 3 hours          5432/tcp               cvat_db
fcf14c4d2ca5        redis:4.0-alpine      "docker-entrypoint.s…"   14 hours ago        Up 3 hours          6379/tcp               cvat_redis

参考


  1. Crostini 以外の Linux 環境と、その比較については「ChromebookのLinux環境を整える(Crouton + Ubuntu20.04 + Chromebrew + Sommelier)」という記事が分かりやすかったです。 

  2. Debian 以外のディストリビューションを入れることもできるそうです。(Can I run a different Linux distro?) 

  3. Termina が起動していない時は、Crosh から vmc start termina と打ち込み、起動させます。 

mksh
C言語 約3ヶ月 Python 2020年3月頃〜 プログラミング初心者です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away