クロームブック(Chromebook)にあるクロスティーニ(Crostini)はLXDを利用して動作しています。
クロームブック(Chrome OS)は標準機能としてLXDを操作することができますので、今回は操作しながら見ていくことにしましょう。
細かい仕組みを見ていく前に、LXDで任意のインスタンスを作成することにします。
Ctrl + Alt + Tを押すと、

crosh(Chrome Shell)と呼ばれるターミナルが起動します。
下記のコマンドを実行して、Termina(テルミナ)と呼ばれるVMイメージを起動します。
crosh> vmc start termina
※すでにクロスティーニを起動している場合は
crosh> vsh termina
になります。
テルミナが起動すると、プロンプトが
(termina) chronos@localhost ~ $
に切り替わります。
プロンプトがテルミナに切り替わると、lxdやlxcのコマンドを実行できるようになります。
試しに
$ lxd --version
を実行してみましょう。
5.0.2
のようにLXDのバージョンが出力されます。
続いて、defaultのプロフィールを確認します。
$ lxc profile show default
config:
boot.autostart: "false"
boot.host_shutdown_timeout: "9"
raw.idmap: |-
both 1000 1000
both 655360 655360
both 665357 665357
both 1001 1001
security.nesting: "true"
description: Default LXD profile
devices:
/dev/snd/controlC0:
major: "116"
minor: "0"
mode: "0666"
path: /dev/snd/controlC0
type: unix-char
/dev/snd/pcmC0D0p:
major: "116"
minor: "16"
mode: "0666"
path: /dev/snd/pcmC0D0p
type: unix-char
/dev/snd/seq:
major: "116"
minor: "1"
mode: "0666"
path: /dev/snd/seq
type: unix-char
/dev/snd/timer:
major: "116"
minor: "33"
mode: "0666"
path: /dev/snd/timer
type: unix-char
/dev/wl0:
major: "245"
minor: "0"
mode: "0666"
path: /dev/wl0
type: unix-char
cros_containers:
path: /opt/google/cros-containers
source: /opt/google/cros-containers
type: disk
cros_milestone:
path: /dev/.cros_milestone
source: /run/cros_milestone
type: disk
eth0:
nictype: bridged
parent: lxdbr0
type: nic
external:
path: /mnt/external
source: /mnt/external
type: disk
fonts:
path: /usr/share/fonts/chromeos
source: /mnt/fonts
type: disk
fuse:
mode: "0666"
source: /dev/fuse
type: unix-char
root:
path: /
pool: default
type: disk
shared:
path: /mnt/chromeos
source: /mnt/shared
type: disk
tun:
mode: "0666"
source: /dev/net/tun
type: unix-char
name: default
used_by:
- /1.0/instances/penguin
クロスティーニとして動いているpenguinというインスタンスでdefaultプロフィールが用いられていました。
興味があれば、lxdbr0ネットワークやdefaultストレージも見ておくと良いでしょう。
インスタンス名がc1のインスタンスを作成してみます。
下記のコマンドを実行します。
lxc launch ubuntu:24.04 c1
Creating c1 Starting c1
が出力されたら、
$ lxc list
のコマンドを実行して、
+---------+---------+-----------------------+--------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +---------+---------+-----------------------+--------------------------------------------+-----------+-----------+ | c1 | RUNNING | 100.115.92.200 (eth0) | 240d:1e:3bb:5500:216:3eff:fee6:9fdb (eth0) | CONTAINER | 0 | +---------+---------+-----------------------+--------------------------------------------+-----------+-----------+ | penguin | STOPPED | | | CONTAINER | 0 | +---------+---------+-----------------------+--------------------------------------------+-----------+-----------+
インスタンスが生成されていることを確認します。
作成したインスタンスを操作してみます。
今回は下記のコマンドを実行して、インスタンスにbashログインをしてみます。
sudo lxc exec c1 bash
lxc execの後にインスタンス名とインスタンス内で実行したいコマンドを追加します。
このコマンドを実行すると、
root@c1:~#
になり、インスタンス内にログイン出来たことになります。
動作確認の為に下記のコマンドを実行してみます。
# cat /etc/lsb-release
※# はコメントではなく、rootアカウントで操作している意味になります。
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04 LTS"
Ubuntu 24.04に切り替わっている事がわかります。