Crouton and Steam on a Chromebook Setup Guide

Update: I recently updated this walkthrough for Ubuntu Xenial instead of Trusty because that’s what I’m using now.

Update #2: A Chrome security update necessitates running a command on the Crouton script before running it the first time.

You might think that ChromeOS cannot run games that aren’t browser-based, and by itself you would not be wrong. But, with Developer Mode, a script called Crouton developed by a Google employee in his off-time, and a bit of effort, you can have a low-end laptop that runs both ChromeOS and an Ubuntu Linux desktop at the same time – without dual-booting. The way this works is that your device is always using ChromeOS’s Linux kernel, but you’re running a chroot (essentially a fake root file system) that contains everything needed to run software from Ubuntu.

This should be possible on any Intel-based Chromebook. On my Acer R11 CB5-132T-C1LK with an Intel Celeron N3150, 4GB RAM, 32GB Flash storage, I can smoothly play:

  •  Crusader Kings II
  •  Gemini Rue
  •  Papers, Please
  •  Pillars of Eternity
  •  Tyranny
    I haven’t tried anything twitchy, but I would assume only older titles will perform well. The newer (and cheaper) model of the Acer R11 has an Intel Celeron N3160 with Intel HD Graphics 400, making for a cheap, fast, long battery, netbook-like device that can still play games on the lower end of the spectrum.

Getting Started: Developer Mode

Note that Developer Mode completely wipes your Chromebook, so back up any files to Google Drive or elsewhere before getting started.

  1. Power your Chromebook off. Then press and hold ESC+Refresh+Power until you get a screen that says ChromeOS is missing.
  2. Press CTRL+D. Then press Enter. This turns OS verification off.
  3. The next screen will say that OS verification is off. You will see this screen every time you boot your Chromebook in Developer Mode. If you are concerned that another person will press the Spacebar and then Enter and destroy your little experiment, press the left arrow key a few times to change the language on this screen to something like Korean – this change will be saved for future boot-ups. Now only you will know how to boot your Chromebook and there won’t be instructions on the screen. To restore your Chromebook, all you need to do is press Spacebar then Enter on this screen.

Setting up Crouton

  1. Install the Crouton chrome extension. This lets you share a clipboard between ChromeOS/Linux and open URLs in Chrome.
  2. Go to this page and click the goo.gl link toward the top to download Crouton. Do not ever delete this file from your Chromebook’s Downloads directory and do not overwrite it. I’ll show you how to update it below.
  3. Press CTRL+ALT+T to open a terminal window. Type shell and press Enter.
  4. Type this command to bypass ChromeOS’s security lockdown on the Crouton file:

    sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton

  5. Type in the following command to install Ubuntu Xenial with some Crouton targets (sort of like parameters):

    sudo crouton -r xenial -t xfce,keyboard,touch,extension

This will install the XFCE desktop environment, which is very lightweight. The ‘touch’ target is for if your Chromebook has a touchscreen – if yours doesn’t, omit this target. The ‘extension’ targets allows Ubuntu to talk to that Chrome extension you installed in step 1. The ‘keyboard’ target lets you use the Chromebook’s function keys – you will have to press the Search key before pressing VolUp/VolDown/BrightUp/BrightDown keys. I had some trouble getting audio while in the chroot, so I added the ‘audio’ target after the fact in my setup.

If you have a beefier Chromebook, you could use Gnome or Unity instead of XFCE, but because you’re wanting to game, the desktop environment with the lowest memory overhead would be best, and that’s XFCE.

Here is a Cheat Sheet of Crouton commands, which includes adding targets to existing chroots, backing up your chroot, and updating Crouton. Bookmark this!

Linux aficionados might ask why I recommend Ubuntu – because it’s the most commonly used and widely supported in the Crouton community, and because game developers primarily seem to target Ubuntu for Linux game development. Personally, I prefer Fedora on my Thinkpad, but I use Ubuntu on my Chromebook. You might also wonder why I don’t recommend xiwi (X in a Window) instead of having the full overhead of a XFCE environment: game performance in xiwi is absolute crap. Only Papers, Please and Gemini Rue were playable in xiwi.

The Ubuntu installation can take a long time, depending on your Internet connection.

Starting Crouton and installing Steam

  1. Once your chroot is set up, from the terminal tab type in: sudo startxfce4
    You will need to type this into a terminal tab each time you want to enter Ubuntu!!!!
  2. Congratulations, you’re in Ubuntu! To switch back to ChromeOS, press CTRL+ALT+Forward on your keyboard. You can use this to switch back and forth from Ubuntu to ChromeOS.
  3. Disable the screensaver in XFCE. It can cause graphical glitches and resume problems.
  4. Download TrueType fonts by entering into Xterm: sudo apt-get install ttf-ubuntu-font-family
  5. Update Ubuntu’s software: sudo apt-get update && sudo apt-get upgrade
  6. Install some basic tools (text editor, archive manager): sudo apt-get install file-roller gedit
  7. (Optional) Install VLC media player: sudo apt-get install vlc browser-plugin-vlc
  8. And Finally, install Steam:

 wget http://media.steampowered.com/client/installer/steam.deb

sudo apt-get install gdebi-core

sudo gdebi steam.deb

If you’re a Linux regular, you can also install games from .deb files, compile from source, or install Wine and run Windows executables, but I won’t cover that here because other guides on how to do this in Linux will cover it better.

Updating Crouton

You should update Crouton after each ChromeOS update. Since I’ve been using it, I’ve never had a ChromeOS update actually cause a problem with running Crouton, but it might and it’s best to keep it up to date. Because the developer essentially builds this on his free time, it might take a couple of days for an update to come out after a ChromeOS update with major changes. To update both Crouton and your chroot:

 sudo crouton -u -n chrootname

Adding Additional Storage

Most other guides don’t cover this, but I find it critical to running Steam games on a Chromebook. Your chroot environment is taking up a fair amount of space on your Chromebook’s internal storage, so you’re probably going to want to install your Steam games to an SD card. I’m using a 64GB SDXC UHS Speed Class-1 card and it performs fairly well, and was only about $25. Before you can add the SD card as a Library Folder in Steam, however, there are some hoops to jump through because ChromeOS does not mount SD cards in executable mode – so you can’t run games off of them.

  1. Insert your SD card and make sure it’s a format that ChromeOS can write files to. Format it if necessary.
    2. Eject the SD card from ChromeOS, but leave it in the slot. Enter Crouton.
    3. On the desktop, find the see-through icon for your SD card (they should be listed by size), double-click it to mount it. Open the SD card and make note of the mount location in the address bar. It should be something like: /media/[linuxusername]/[letters and numbers]
    4. Open an Xterm window and type: mount
    5. Find your SD card in the listing there by looking for the Device ID and where it mounts. The line looks like something like this:
    “/dev/mmcblk1p1 on /media/[your username]/[sequence of letters-and-numbers]”
    You want both the /dev/ information and the /media text!
    6. Back on the desktop, right-click it and Dismount
    7. Back in the Xterm window, type: vi mountsdcard
    8. Press the letter ‘i’ on your keyboard, modify the following to match your variables from above, and write it into the file:

sudo mkdir /media/[linuxusername]/[letters and numbers]

sudo mount -o rw,nosuid,nodev,relatime,seclabel,data=ordered,uhelper=udisks2 /dev/[deviceid] /media/[linuxusername]/[letters and numbers]

  1. Press Esc. Press : and enter: wq
  2. Enter into the terminal window: chmod +x mountsdcard
  3. To mount your SD card, enter: sudo ./mountsdcard

So, to recap, the process you need to follow every time –  before launching Steam needs to be:

  • Dismount the SD card from ChromeOS
  • Press CTRL+ALT+T to open a terminal tab.
  • Enter: shell
  • Enter: sudo startxfce4
  • Open Xterm and enter: sudo ./mountsdcard
  • Open Steam.

From this point, you can create a Steam Library Folder on the SD card and install your games. Once you’re done playing your game, log out of Crouton and physically eject and re-insert your SD card to see it again in ChromeOS. If your Chromebook goes to sleep, it will dismount your card, so do not allow your Chromebook to go to sleep while Steam is running or otherwise you will have to close Steam, Dismount, run mountsdcard, and possibly re-add your Library Folders.

Please refer to the Crouton Command Cheat Sheet to learn how to backup your chroot. Backing up from time to time can save you if an update breaks something, but I’ve been running my chroot since December without a backup and haven’t had any trouble.

If you want help with your specific situation and setup, you can ask me here and I can try to help you, or you can ask the collective minds at the Crouton subreddit – they will probably be able to help with more complex questions than just me.

21 thoughts on “Crouton and Steam on a Chromebook Setup Guide”

  1. I’m having a huge issue with the steps under “Adding Additional Storage”. I’m stuck on step 7 where you need to use vim. I copy + pasted code into the terminal and am getting error messages and am unable to even edit the code itself. So I end up deleting the file, and restarting step 7 over and over again. Incredibly frustrating!! Any idea of what to do?

    1. You can give nano a try (sudo apt-get install nano to install it on your Ubuntu install) in order to create the file.

      nano mountsdcard

      skip the part where you press “i” in the above directions, then type the text into the file. Once finished, press CTRL+o to write the file, press Enter to confirm you want to write it, then press CTRL+x to exit nano.

  2. It might be easier to recommend nano. Sure, vi is much more powerful and can do many advanced things, but for such a simple task, it’s probably overkill for those who aren’t already familiar with vi. Nano tends to be a more simple and straightforward terminal based text editor.

    Another note: you can format your SD card/flash drive to EXT4. This will NOT allow you to see data on it when plugging into a Windows computer, but you will no longer have to unmount it in Chrome OS in order to use it in Ubuntu; EXT4 will allow multiple mount points without issue, unlike FAT32.

    1. The reason you need to re-mount isn’t because of FAT32 – if you follow my steps you will be formatting as EXT4. ChromeOS mounts the SD card with noexec – meaning you cannot run Steam games from the SD card. To fix that, you must dismount from ChromeOS and remount without the noexec setting, which can only be done outside ChromeOS.

      Nano is probably easier for new users, but I’ve always used Vim and haven’t bothered to learn nano.

  3. i want to install ubuntu using crouton on my acer r11 chromebook and am told that sound does not work on ubuntu but it works when you return to chrome os, how can you fix that please?

  4. Hi, I’ve had just about no issues following this guide except having to figure out for “Starting Crouton and installing Steam” Step 3 “wget –no-check-certificate” needed to be “wget -–no-check-certificate” (two dashes in front of ‘no’, copypasta was failing)

    My issue is at “Adding Additional Storage” Step 3, I eject in Chrome and then switch over but get: Failed to mount “”. Not authorized to perform operation. I shut down the linux session and started it back up but it’s giving the same message, any suggestions?

    1. Thanks for the info on the dashes. I wrote it correctly, but WordPress decided to render it differently.

      As to the issue you’re encountering with mounting your SD card: make sure Crouton is not running when you eject the SD card from ChromeOS – otherwise it will probably eject it from both, and then when you plug it back it re-mount it in both, which we don’t want. Let me know how it goes.

      1. Helluva prompt response, thanks for that! WordPress also decided to eat the name of my SD card’s mount name because I put it in brackets. THE FUTURE IS NOW!

        I had previously tried shutting down from within my xfce session and then closing out of terminal in Chrome OS before relaunching and had the same issue. I went ahead and shut down xfce and then completely shut down Chrome OS, disconnected the SD card and then booted back into Chrome OS dev mode, plugged in the SD card, ejected it, and then launched xfce but unfortunately the same situation is occurring.

        Did the above again for the joy of redundancy, same issue: Failed to mount “63 GB Volume” Not authorized to perform operation

        I did initially format this SD card within Chrome OS, can that cause issues? Got an old machine around here I can use to reformat.

        FYI: first slapped on dev mode like a week ago so everything from Chrome OS to Crouton should be latest versions.

        Also, and a major sidebar here, have you just gone full Linux on a Chromebook? I’d been running Linux Mint for a hot second with no complaints but I thought it would be fun to give Crouton a go since I just got this Dell 8301 a few weeks back and Chrome OS was covering all but my gaming interests.

        Also also if I get enough room ima mess with doing PlayOnLinux (WINE gui) Steam because I had good luck with that on Mint and I’ll be happy to share results.

        Thanks!

      2. I’ll retrace my workflow and see if I can find a different way to get it to mount. I’ve not tried full Linux, mostly because I don’t use Crouton for much on a regular basis and mostly use my Chromebook for casual browsing and videos.

  5. You might try to format it from Linux as Ext4. I just now realized that my SD card might be formatted as Ext4 and ChromeOS might not format it as such (though it can read/write to it).

  6. Thanks so much for this guide. The only thing that doesn’t work anymore is the graphics update commands, as I’m sure the new files are somewhere but I can’t find them. Still seem to get decent performance on my Acer R11 though.

    1. When I was redoing mine recently, I noticed that, too. I think the needed items are now integrated into Xenial, but I could be wrong. I’ll research it.

    1. Yes, it more or less works like SD storage, however the device name under /dev/ will be completely different. It should show up as something like /dev/sdc but it might vary. Just don’t dismount your main system drive

  7. Hi there.

    Thank you for this guide, however, I’m having the same “not authorized to perform operation” issue as someone above did. I tried the troubleshooting methods that you provided, but to no avail. Any idea ow to fix it?

  8. thanks for this guide — i used it install Minecraft, with trusty a year ago. Recently run into problems with minecraft not starting up.. so i installed Xenial.. and the java edition of minecraft _ java 8. Minecraft runs but after a few mins, it starts to lag badly. Any suggestions? (i am allocated more ram which helps Minecraft load faster). this is the Acer r11 4gb chromebook

Leave a Reply to w0rd22766 Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.