Linux on a Chromebook: The Complete Guide

Published on by

A Chromebook on a wooden desk showing the ChromeOS desktop with a Linux terminal window installing a software package

Most people buy a Chromebook for Chrome and Android apps, then discover something surprising: there is a full Linux environment sitting inside ChromeOS, ready to run desktop software, developer tools, and command-line programs. Google calls it the Linux development environment, and the part that trips up newcomers is how little it takes to switch on. You do not need to put the Chromebook into developer mode, you do not wipe anything, and you do not risk your existing files. This guide covers what the feature really is, how to enable it, the first commands worth learning, how to install both terminal and graphical apps, and when you would be better served by a full Linux install instead.

What “Linux on a Chromebook” Actually Means

When people say they want Linux on a Chromebook, they usually picture wiping ChromeOS and installing Ubuntu the way you would on an old laptop. That is one option, but it is not the one Google builds in, and for most readers it is not the one they want. The built-in Linux development environment runs a lightweight Debian system inside a container on top of a small virtual machine, so it lives alongside ChromeOS rather than replacing it. Your Linux programs run in their own sandboxed space, appear in the app launcher like any other app, and share a folder with the ChromeOS Files app, while ChromeOS keeps its automatic updates and verified boot intact.

That sandboxing is the whole point. Because Linux runs in a contained environment, a broken package or a bad command cannot take down ChromeOS or touch your Google account data. You can delete the entire Linux environment and start over from Settings without reinstalling the operating system. The tradeoff is that the container does not get raw access to every piece of hardware, so a few specialized tasks are off-limits, which is the topic of the last section. For coding, scripting, running LibreOffice or GIMP, spinning up a local database, or learning the Linux command line, the container is more than enough. If you are curious about which distribution is doing the work under the hood, we cover that in detail in our explainer on the Linux distro behind ChromeOS.

Which Chromebooks Can Run It

Nearly every Chromebook released in roughly the last several years supports the Linux development environment, including budget models with modest specs. The feature stopped being experimental a long time ago, so if your Chromebook is reasonably current, you almost certainly have it. The main exceptions are very old or very low-powered devices where Google never enabled it, and managed Chromebooks issued by a school or workplace, where an administrator can block the feature through policy. If you are on a school-managed device and the Linux option is missing or greyed out, that is a policy decision you cannot override from the user side.

Hardware still matters for the experience. Linux runs in memory and on disk that it shares with ChromeOS, so a Chromebook with 4GB of RAM will feel cramped once you open a few Linux apps alongside a stack of browser tabs, while 8GB or more gives you real breathing room. Storage is the other consideration, since the container needs space to grow as you install software. It is also worth knowing your processor architecture, because some Linux apps ship only for Intel and AMD chips (x86_64) and not for the ARM processors in certain thin-and-light and tablet-style Chromebooks. If you are still choosing hardware with Linux in mind, the Chromebook comparison chart lets you sort by RAM, storage, and processor so you can pick a model that will not feel starved.

How to Enable the Linux Development Environment

Turning the feature on is the easy part. Open the ChromeOS Settings app, then under About ChromeOS choose Developers, and find the Linux development environment entry. Select the option to turn it on, and ChromeOS walks you through a short setup wizard. You pick a username for your Linux session and, if prompted, accept the default disk allocation, which you can always resize later. From there ChromeOS downloads and configures the Debian container, a process that usually takes a few minutes depending on your connection.

When setup finishes, a Terminal app appears in your launcher, and that is your doorway into Linux. Nothing about ChromeOS changes: your existing apps, files, and settings are untouched, and you can turn the whole environment off again from the same Settings page if you decide it is not for you. The first thing worth doing after setup is bringing the system fully up to date, which the next section covers.

Meeting the Terminal and Your First Commands

Open the Terminal app and you will land at a command prompt that ends in penguin, which is simply the name ChromeOS gives your default Linux container. That prompt is where the searches for “penguin Linux Chromebook commands” lead, and the good news is that these are ordinary Debian Linux commands, not anything Chromebook-specific. The single most important pair to run first updates your package list and then upgrades everything already installed:

sudo apt update
sudo apt upgrade

The sudo part runs the command with administrator rights, and the first time you use it you may be asked to confirm. Running these two commands regularly keeps your Linux software patched, separate from the ChromeOS updates that Google pushes to the rest of the device. A handful of other everyday commands will carry you a long way: ls lists the files in the current folder, cd moves between folders, pwd prints where you currently are, and apt handles installing and removing software. Copying and pasting behaves a little differently inside the terminal than elsewhere in ChromeOS, so use ctrl shift c to copy and ctrl shift v to paste when you are working at the command line.

Installing Apps: Command Line and Graphical

Most Linux software installs with a single command through apt, the Debian package manager. To install the GIMP image editor, for example, you would run one line and let it pull in everything it needs:

sudo apt install gimp

Graphical Linux apps you install this way show up automatically in your ChromeOS launcher, usually grouped in a Linux apps folder. You launch them exactly like a Chrome or Android app: press the search key, type the app’s name, and hit enter. There is no separate step to register them.

Not everything you want lives in Debian’s default repositories, and the versions there sometimes lag behind the latest release. When you need newer software, Flatpak is the common answer. It is a universal Linux package system that keeps apps sandboxed and updated on their own schedule, and you set it up once with a couple of commands:

sudo apt install flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

After that you can install Flatpak apps from the Flathub catalog, and they land in your launcher alongside everything else. Two of the most common reasons people set up Linux in the first place are a second browser and better media playback, and we have step-by-step walkthroughs for both: installing Firefox on a Chromebook covers the browser (including the difference between Intel/AMD and ARM machines), and setting up VLC on ChromeOS gets you a media player that handles the formats the built-in one refuses.

Sharing Files Between ChromeOS and Linux

Your Linux environment and ChromeOS keep their files mostly separate by design, which is part of the sandboxing, but moving files across the boundary is simple. In the ChromeOS Files app you will see a Linux files folder, and anything you drop there is visible to your Linux programs. Going the other direction, you can right-click any ChromeOS folder (such as Downloads) and choose Share with Linux to make it available inside the container. This is how you hand a downloaded file to a Linux app, or pull a file your Linux program created back out to somewhere ChromeOS can see it. Keeping the two sides deliberately separate is a feature, not a limitation, because it means a misbehaving Linux app cannot rummage through all of your ChromeOS storage.

Troubleshooting Common Snags

A few issues come up often enough to be worth naming. If a Linux app you just installed does not appear in the launcher, restart the environment: right-click the Terminal icon in your shelf, choose Shut down Linux, then reopen Terminal, and the launcher should pick up the new app. If graphical apps look tiny or blurry on a high-resolution screen, that is a display-scaling mismatch between ChromeOS and the Linux container; many apps offer a density toggle when you right-click their launcher icon, and you may need to restart the app for it to take effect.

Running low on space is the other frequent complaint, especially on Chromebooks with small drives. The Linux environment starts with a modest disk allocation, and you can increase it from the same Settings > About ChromeOS > Developers > Linux development environment page where you turned the feature on. If Linux feels sluggish, closing some browser tabs frees up memory that ChromeOS and Linux share, and a full restart of the container clears things up more often than you would expect. When something goes badly wrong, remember that you can remove the entire Linux environment from Settings and set it up fresh, and your ChromeOS side stays untouched the whole time.

When a Full Linux Install Makes More Sense

The built-in environment handles the vast majority of what people want, but it is not the whole of Linux, and it is worth being clear about the ceiling. Because your Linux runs in a container, it does not get direct, unfiltered access to the graphics hardware, low-level USB devices, or the kernel itself. That rules out a narrow set of tasks: demanding 3D gaming that leans on the GPU, software that needs custom kernel modules or raw device access, and running a specific distribution that is not Debian-based. If your goal is a particular flavor of Linux with total control of the machine, the container will frustrate you.

The alternative is a full install, either replacing ChromeOS entirely or dual-booting, which generally requires enabling developer mode or modifying the device firmware. That path buys you complete hardware access and your choice of distribution, but you pay for it: you give up ChromeOS’s verified boot and its seamless automatic updates, you take on more setup and more ways for things to break, and you lose the tight integration that makes Linux apps feel native. For most readers that is a bad trade. Coding, running local servers and databases, office and creative apps, and learning the command line all work comfortably in the built-in environment, and modern Chromebooks are genuinely capable development machines out of the box; we walked through exactly that in our piece on using a Chromebook for AI-assisted coding. Reach for a full install only when you have hit a specific wall the container cannot get you over.

The built-in option is all most people need

The Linux development environment turns an ordinary Chromebook into a capable Linux workstation with a few clicks in Settings and no developer mode required. Once it is running, you have a real terminal, the entire Debian software catalog through apt, newer apps through Flatpak, and graphical programs that live in your launcher next to everything else, all sandboxed so a mistake never threatens ChromeOS. Start with the built-in feature, keep it updated with sudo apt update and sudo apt upgrade, and only consider a full install if you run into one of the narrow limits the container cannot cross. For the overwhelming majority of people who want Linux on a Chromebook, the answer was built into the machine all along.