Crostini

Crostini is the code name Google uses for the Linux application support for Chrome OS. On Chrome OS, Linux applications run in an LXC container that runs in a virtual machine. The VM isolates the Linux processes and applications from Chrome OS to provide security and stability.

The evolution of Crostini is embedded in ongoing releases of Chrome OS. See the Chrome OS Release Matrix page

See Chrome OS Release blog site

Instructions for using Ubuntu in the default Crostini container.

More information about managing LXD/LXC images is available on the Ubuntu blog. webpage

Here is an outline of information I've compiled about Crostini.

USB support is coming with Chrome OS 72 that is currently in the developer channel. Support for FUSE is also coming in a future release of Chrome OS .

Chrome OS 72 has been released but USB support is currently not reliable. See Pixelbook Change Log

Instructions for adjusting application level scaling.

I am using Crostini on my Google Pixelbook.

I made a backup of my crostini container on 2018-12-20 following the instructions on r/Crostini webpage I transfered the backup file to the /sda1/crostini directory on my NAS.

How to run multiple containers You should be able to backup secondary containers using the instructions above. The "built-in" Chrome OS Linux Apps backup introduced in Chrome OS 74 does not backup secondary containers.

To access the termina vm press ctl-alt-t and enter:

vmc start termina

To see what containers are running enter:

lxc list

To start a container that has stopped enter:

run_container.sh --container_name mycontainername --shell --user myuser

To log in to a container as root:

run_container.sh --container_name penguin --shell --user root

Alternately, you can enter the following at crosh page :

vmc container [vm name] [container name]

Be careful to enter the container name correctly, otherwise a new container will be created. You might see an error stating that it "Failed to launch vschd for..." which is likely a timing issue due to the container not yet running. At this point to shell in to the container enter:

vsh [vm name] [container name]

I've installed gnome-terminal in the fjmdocker container. However, I haven't found a way to add it to the ChromeOS launcher. I have to first shell in to fjmdocker using the run_container.sh script and then start the terminal. After it is running I can then exist out of crosh.

The Crostini container does not automatically start after a reboot. In fact, I don't think the virtual machine starts automatically after boot. To test, I shutdown and started the Google Pixelbook, pressed ctrl-alt-t to enter crosh and ran top. I observe no instances of crosvm, which is the Chromium virtul machine monitor.

Next, I enter the following to start the virtual machine, termina, and then list the containers that are running. I observe all containers are stopped, which to me means that any processes that normally run in these containers are not taking any of the resources of the Pixelbook.

crosh> vmc start termina (termina) chronos@localhost> lxc list

Further, I run top in termina and observe 5GB of RAM is allocated and all of it is free. I also observe little to no CPU utilization.

Next I start the Terminal app from the Chrome OS launcher, do another lxc list in terminal and observe that the container named penguin is now started and has an IP address assigned. Top shows 123 MB of RAM consumed but little CPU utlization. Running top within the Terminal as below corresponds what I see in top running in termina.

frankmcpherson@termina> top

Instructions to install CUPS printing to Crostini and get direct (non-cloud) printer support.

To access root in the Crostini container enter:

sudo -i

To create a snapshot of a container:

lxc snapshot [source container name] [snapshot name]

Get info about a container:

lxc info [container name]

To restore a snapshot:

lxc restore [container name] [snapshot name]

To delete a snapshot:

lxc delete [container name]/[snapshot name]

To copy a container:

lxc copy [source container name] [new container name]