How To Install Ubuntu On Chromebook

How To Install Ubuntu On Chromebook

Reading time1 min
#Linux#Ubuntu#Chromebook#Crouton#DeveloperMode#LinuxInstallation

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:

  1. Fully shut down (not just sleep) the Chromebook.
  2. Press and hold Esc + Refresh (F3), then tap Power.
  3. As soon as “Chrome OS is missing or damaged” appears, press Ctrl + D.
  4. At the prompt, hit Enter to confirm. Chromebook will restart, then take 10–15 minutes to reconfigure.
  5. 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 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.