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.

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]

Debian 10, Buster, is imminent. Crostini is built on Debian 9 but we don't anticipate Google pushing Debian 10 to Crostini any time soon. In fact, it is not clear to me how Google plans to go about handling such an upgrade. Meanwhile, there are manual instructions if one wants to do the upgrade. page

There are at least a dozen recent Chromium code commits that mention both “crostini” and “Ansible”. Not knowing what the latter was, I did some searching and quickly found that Red Hat Ansible is an open-source project to automate IT. About Chromebooks

Can you use a Pixelbook for serious software development? Do you want a workflow that is simple, doesn’t slow you down, and is portable to other platforms? And do you need support for Google Cloud Platform SDK, Kubernetes and Docker? I switched to a Pixelbook for development, and I love it! page

To check to see whether the Container is current access

chrome://components

And under cros-termina click Check For Update. If an update downloads, restart when it completes. After reboot update packages.

sudo apt-get update && sudo apt-get dist-upgrade