How to Run Ubuntu Container in Chrome OS

Chromeos Crostini Ubuntu Featured

Since Chrome OS 69, Chrome OS users (on selected Chromebooks) can install and use Linux apps. Referred to as project Crostini, what it does is run a Linux operating system in an LXD container (similar to a virtual machine) so you can install and run Linux apps in a sandboxed environment. The default Linux distro used in Crostini is Debian, which is a stable distribution that you can rely on. However, if you are not a fan of Debian because of its old software list, you can switch to Ubuntu instead.

This switching procedure will require you to access the Terminal and type tons of commands. If you are not comfortable with the terminal, then this is not for you. For the rest, here is how you can run Ubuntu container in Chrome OS.

1. Boot up your Chromebook. Do not open any Linux app. Open the Chrome browser and press Ctrl + Alt + T to launch the Crosh shell.

Chromeos Crosh Terminal

Start the terminal with this command:

Chromeos Crosh Start Termina

2. The default Debian container is labeled as “penguin,” which is used to integrate with the Chrome OS filesystem. To replace Debian, we will first need to strip the Debian container of its “penguin” label:

3. Next, create a new Ubuntu container named penguin:

This will take quite some timem as it pulls the image from the Internet.

Chromeos Termina Launch Ubuntu

4. Once this is done, boot into the new container:

5. Update and upgrade the system:

6. Install the Crostini packages so it can integrate with the native filesystem. Enter the following commands to add the cros-packages’ repo:

Install the dependencies:

7. Even though we added the repo, we won’t be able to install the Crostini packages directly. Here is the workaround.

Download the Crostini package with the command:

You will receive a warning message. Ignore it.

Chromeos Termina Download Crostini Packages

Now extract the downloaded packages:

Install the Crostini package from the deb file:

8. Lastly, remove the downloaded package:

9. Install the adwaita-icon-theme-full package. Without this package GUI Linux apps may have a very small cursor.

10. The default user in the container is “ubuntu.” We need to remove it and replace with your Gmail username. Using your Gmail username (the Gmail account you use to sign in to your Chromebook) is essential if you want to integrate this Ubuntu container with the native filesystem. Without this, you won’t be able to access your Linux files from the File manager.

Note: replace “gmail-username” with your own Gmail username.

11. Once this is completed, shut down the container

and reboot the Chromebook. Once restarted, start the Terminal application from the launcher. If it fails, try again.

12. Try updating the system again.

If you see the error message:

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7638D0442B90D010 NO_PUBKEY 04EE7237B7D453EC

that is because the private key of the Crostini package is not found in the system. Add the private key with the command below:

and you should be able to run apt update with no issue.

You can now start to install Linux apps with the apt install command. For example, to install the latest version of Firefox, use the command:

Removing the Debian container

If you have no more use for the Debian container, you can remove it to free up storage space.

1. In the Chrome browser, press Ctrl + Alt + T to launch the Crosh shell.

2. Start the terminal:

3. Remove the Debian container:


If you prefer stability and security, then sticking with the default Debian container is the best choice. If not, you can switch to Ubuntu, as it provides more flexibility and software options. There are plenty of LXD images you can use, so you are not restricted to Ubuntu either Prefer Arch Linux? It is available too.

Damien Damien

Damien Oh started writing tech articles since 2007 and has over 10 years of experience in the tech industry. He is proficient in Windows, Linux, Mac, Android and iOS, and worked as a part time WordPress Developer. He is currently the owner and Editor-in-Chief of Make Tech Easier.


  1. I was having a lot of trouble with the default Debian installation and Snap installations. Your instructions helped me setup a more stable Linux environment on my Lenovo C630. Thank you.

  2. This was a complete fix for me – thank you a ton for making this! The level of detail you provided was perfect for a Linux novice.

  3. I did exactly what you stated and here is the error I keep running into how do I get past this?

    crosh> vmc start termina
    (termina) chronos@localhost ~ $ lxc stop penguin –force
    (termina) chronos@localhost ~ $ lxc rename penguin debian
    (termina) chronos@localhost ~ $ lxc launch ubuntu:18.04 penguin
    Creating penguin
    Starting penguin
    Error: Failed to run: /usr/sbin/lxd forkstart penguin /mnt/stateful/lxd/containers /mnt/stateful/lxd/logs/penguin/lxc.conf:
    Try `lxc info –show-log local:penguin` for mor

Comments are closed.