Get Linux Running on Your Chromebook: Practical Guide for Engineers
Chromebooks aren’t just for web browsing and basic tasks—they're compact, reliable hardware, often with decent CPUs and SSDs. With the right configuration, they handle full Linux stacks for development, CI/CD pipelines, and lightweight self-hosted services.
Below: direct, tested methods to deploy Linux on a typical Chromebook without compromising security—plus one fallback (Crouton) for legacy devices.
Assess Hardware and Compatibility
Not every Chromebook shipped before ~2019 supports Crostini (the Chrome OS Linux container). Don’t waste time without checking:
- Open Settings > Advanced > Developers (naming sometimes varies with OS version).
- Look for “Linux development environment” or “Linux (Beta)”.
- If Turn On is present, Crostini is supported out-of-the-box.
- If not present: See Crouton section.
Note: Devices with ARM chips may run aarch64/armhf only. Not all software will be available as binaries.
Enabling Linux with Crostini
Linux via Crostini is a containerized Debian 11 environment running under Chrome OS’s security sandbox (no root access to host). Ideal for dev tooling and most GUI apps. Critically, no firmware or kernel changes required.
Steps:
- In Chrome OS settings, click Linux development environment > Turn On.
- Choose disk allocation (at least 8GB recommended for dev work).
- Complete setup. A
Terminal
window launches.
Immediately update and upgrade base packages:
sudo apt update && sudo apt upgrade -y
Gotcha: Default image is usually Debian 11. Other distros (Fedora, Ubuntu) aren’t officially supported in this container.
Essential Development Tooling
Performance is better when working in Crostini than using only web-based code. Install required tools as you would on any Debian box.
Example: Install Git, Node.js (LTS), VS Code
sudo apt install -y git curl
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
wget -O code.deb "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"
sudo apt install -y ./code.deb
rm code.deb
Verify:
git --version
node --version
code --version
Known issue: Some GUI apps may have rendering quirks or menu glitches in Crostini due to the nested X server. Occasionally, Electron-based editors perform better than native ones.
File System Interop
Linux container mounts appear as Linux files
in the Chrome OS Files app. Need to access a specific directory in Chrome OS?
- Right-click the folder in Chrome OS Files > Share with Linux.
- It appears under
/mnt/chromeos/MyFiles
inside the container.
Symlinks sometimes fail between Chrome OS and Crostini due to permissions; prefer using direct directory paths.
GUI Application Support
Crostini’s newer versions support X11 forwarding for Linux GUI apps. GIMP, VS Code, and even some IDEs (PyCharm, Android Studio) work acceptably.
Example, install GIMP:
sudo apt install -y gimp
gimp &
GIMP should appear in the OS launcher; some window focus issues occur with overlapping pop-up dialogs.
Docker in Crostini: Caveats & Quickstart
Docker works inside Crostini, but there are caveats:
- No support for privileged containers or nested VMs. KVM is not exposed.
- Systemd isn’t active; some services require manual start.
Install and test (container runs as your user):
sudo apt install -y docker.io
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
If you see:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Restart the terminal or launch a new one for group changes to apply.
Alternative: Crouton for Legacy Chromebooks
Crouton is deprecated, but remains necessary for unsupported hardware or anyone needing complete Linux desktop access (for example, kernel modules or access to /dev
).
Risks:
- Requires Developer Mode (switch at boot, wipes device).
- Disables Verified Boot; weakens system security.
- Chrome OS updates can break chroots.
Installation Quick Steps:
-
Reboot to Developer Mode: Hold
Esc + Refresh
while pressing Power, then pressCtrl+D
. -
Download Crouton script:
wget https://goo.gl/fd3zc -O ~/Downloads/crouton
-
Launch Chrome OS shell (Ctrl+Alt+T >
shell
):sudo sh ~/Downloads/crouton -r focal -t xfce
Switch between environments via keyboard shortcuts (Ctrl+Alt+Shift+Back
and Ctrl+Alt+Shift+Forward
on most models).
Tip: Backup /usr/local
and your home directory before major Chrome OS version updates.
Comparison Table
Method | Security Model | Privilege | Non-obvious Limitations | Suited For |
---|---|---|---|---|
Crostini | Sandboxed container | User/Root (in container) | No direct hardware access; systemd limited; kernel locked | Mainstream dev workflows, GUI apps, Docker (non-nested) |
Crouton | Chroot (full root) | Full root on chroot | Host kernel disables some modules; reduced OS security | Power users, legacy devices, custom drivers |
Full Install | Bare metal | Full root | Firmware risks; fragile updates; complex rollback | Experimental, advanced only |
Non-Obvious Tips
- Use Debian backports or
nix
to access more current packages (Debian stable is conservative). - Cron jobs require workarounds—no systemd timers by default in Crostini.
- For cross-compiling (e.g., Rust, Go), mount external storage and explicitly set
$GOPATH
/$CARGO_HOME
to avoid running out of container disk space.
Chromebooks with Crostini now support the majority of day-to-day engineering and development tasks. With some trade-offs (no custom kernel modules, systemd oddities), the platform offers a secure, reproducible Linux dev environment—without dual-booting or major risk.
For edge cases—kernel development, hardware access, unsupported models—crouton or full Linux install are fallback options. In most scenarios, Crostini is the pragmatic choice.
Questions about a particular toolchain, GPU acceleration, or CI/CD setup on Chromebooks? Comment with hardware details and target workload; real-world constraints are often the deciding factor.