Installing Ubuntu on a Chromebook: A Practical Engineer’s Walkthrough
Many developers hit a wall with ChromeOS. Native toolchains, Docker, package managers—out of reach by default. But Crouton changes the equation: a practical way to run a full Ubuntu environment side-by-side with ChromeOS without dropping into the containerized “Linux (Beta)” that comes with its own constraints.
Below, find the streamlined process that’s worked multiple times for Intel-based Chromebooks as of 2024. ARM models? Results are mixed; dependencies and PPAs may break—review support for your platform first.
Key Considerations Before You Start
- Device Compatibility: Intel-based Chromebooks only. For ARM, significant limitations exist (no VSCode, missing binaries/PPAs, multiple broken dependencies in recent LTS releases).
- Backup Data: Entering Developer Mode wipes local data. Sync or back up anything you want saved pre-setup.
- Security Impact: Developer Mode disables verified boot. If you depend on hardened ChromeOS security, consider the implications.
- Power/Battery: Effect on battery life is negligible in practice for XFCE installs; heavier desktops (e.g., KDE, GNOME) may have visible impact.
Step 1: Enable Developer Mode
Critically, data loss occurs on this step. If you skip backup, there’s no simple undo.
Procedure:
- Fully shut down (not just sleep) the Chromebook.
- Press and hold Esc + Refresh (F3), then tap Power.
- As soon as “Chrome OS is missing or damaged” appears, press Ctrl + D.
- At the prompt, hit Enter to confirm. Chromebook will restart, then take 10–15 minutes to reconfigure.
- On every boot, the “OS verification is OFF” screen displays. Ctrl + D skips the boot wait.
Note: To revert, powerwash/reset will again wipe the device.
Step 2: Prepare Environment
Open the Crosh shell:
-
Ctrl + Alt + T
-
At the
crosh>
prompt, type:shell
Obtain the latest Crouton script:
wget https://github.com/dnschneid/crouton/releases/download/v2.7.1/crouton -O crouton
chmod +x crouton
- Version as of June 2024: 2.7.1. Use releases from GitHub, not the old goo.gl redirect (deprecated, causes 404).
Step 3: Install Ubuntu with Crouton
Select a desktop environment that matches your requirements.
For low-resource Chromebooks (4GB RAM or less), XFCE is recommended:
sudo ./crouton -r jammy -t xfce
Where:
-r jammy
specifies Ubuntu 22.04 LTS (“jammy jellyfish”). Default is usually oldest supported; specify to avoid surprises if you want a specific LTS.-t xfce
pulls in the lightweight XFCE DE. Alternative targets:kde
,gnome
,lxde
,unity
, but expect heavier resource use.
Additional handy targets:
extension
enables integration with the Chrome extension (clipboard sharing, etc).keyboard
for better keyboard mapping (essential for non-US layouts).
Example for an enhanced setup:
sudo ./crouton -r jammy -t xfce,keyboard,extension
Install time: 10–40 mins, network-speed dependent. Watch for errors like:
W: Possible missing firmware /lib/firmware/i915...
Often benign on Intel—can ignore unless display glitches appear.
Step 4: Start Ubuntu Environment
Once installation completes:
sudo startxfce4
See black screen or sudden exit? Check for “Cannot open display: :0” errors—may indicate a failed graphics target or missing dependency.
Switching environments:
- Back to ChromeOS: Ctrl + Alt + Shift + Back / Forward
- Return to Ubuntu: Use the same shortcut.
Initial post-install best practice:
sudo apt update
sudo apt upgrade -y
sudo apt install git build-essential code
Note: “code” (VSCode) requires adding Microsoft’s repository on Ubuntu 22.04+. If installation fails:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update
sudo apt install code
Step 5: Optimize and Integrate
Install the Crouton Integration Extension from the Chrome Web Store. Enables better clipboard and windowing integration.
Known issue: Clipboard sync occasionally fails on high memory load. Restarting the extension usually resolves this.
Optionally, tune XFCE for performance—drop shadows, disable compositing, reduce auto-run apps.
Step 6: Maintenance
ChromeOS updates can sometimes break Crouton chroots—especially after major firmware/graphics stack changes.
To update Ubuntu:
sudo apt update && sudo apt dist-upgrade -y
When ChromeOS performs a full OS version jump, re-running Crouton installer (-u
for upgrade) can repair most issues:
sudo ./crouton -u -n <chrootname>
If X fails to start post-upgrade, check /var/log/Xorg.0.log
in the chroot for driver errors.
Known Issues and Non-Obvious Tips
- On some models (late 2017+), trackpad gestures or keyboard mapping may break. Configure manually via
xinput
or copy session xorg configs from/usr/share/X11/xorg.conf.d
. - Sound issues are common—PulseAudio may need manual restarts (
pulseaudio -k
). - Want to remove Ubuntu? Simply delete the chroot with
sudo delete-chroot <name>
, but any leftover configs reside in/usr/local/chroots/
.
Example: Using Docker in Ubuntu on Chromebook
Setup Docker (caveat: running containers under Crouton’s Ubuntu works, but networking is NAT-ed via the host):
sudo apt install docker.io
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
Note: You may see network bridge warnings—most container networking is functional, but some system-level integrations (host networking) aren’t possible due to ChromeOS kernel restrictions.
Resources
- Crouton project and issues
- Ubuntu Flavors (list of desktops, RAM requirements)
- Crouton Integration Extension
Crouton remains, in 2024, the least-compromised way to get a proper Linux stack running alongside ChromeOS, with near-zero disk risk and fast switching. It’s not perfect; expect bugs after major ChromeOS updates, and keep your workflows portable. For developers who need more than a browser, this setup punches above its weight.