Open Source News

A SysAdmin's Journey into Chrome OS - Part 3

Disclaimer:

  • This article it not intended to be an endorsement or review of anything. I do not intend to spend time talking about setting up or how to use a Chromebook; there are many many websites out there that do an excellent job of that. This is just documenting my experiences with Chrome OS, and its appropriateness to my work as a Systems Administrator.
  • All statements and opinions are mine alone.

Part Three: Putting it all Together

One of the pleasures of a new device is exploring what it can do. And then of course there's the inevitable frustration of discovering what it can't. But sometimes you also get the secondary pleasure of uncovering a solution to something that frustrated you.

In this series of posts, I've been exploring the Chrome OS, with a focus on what I like, what I don't like, and how well I can use it for my sysadmin work. I'd like to start by returning to one of the frustrations mentioned in my last post. I mentioned that I tend to use multiple open terminal sessions in my work, and I was frustrated that the default Chrome OS behavior when you try to launch an app that is already open is to return you to the open app, rather than opening a new session of that app. I recently discovered that there is a keyboard shortcut to launch a new window of the Secure Shell app: Ctrl+Shift+N. I did not find this discussed anywhere; I found it by looking at the actual Google git document for the hterm keymappings: https://chromium.googlesource.com/apps/libapps...

Note that this shortcut only works when you are already focused on the Secure Shell app (in any other window it will start an Incognito Chrome session), but it does work. And it also works for the Penguin Terminal app. So that makes me a happier camper.

I want to mention another pleasant discovery. With my work laptop, I use a laptop dock to support my three external monitors and ethernet connection (a Plugable UD-ULTC4K; it has an HDMI port, connected to monitor 1, and two DisplayLink ports, which I connect to monitors 2 and 3 with a pair of DisplayLink to HDMI adapters).

I wanted to see how my Pixelbook would do with the dock, so I hooked it up. As expected, the Pixelbook immediately detected the ethernet connection and used that, and the monitor on the HDMI port immediately lit up. What was not so expected was after a little wait, the other two monitors came to life as well. I did not expect that the Pixelbook would be able to support three external monitors, but it did. Even better, the Chromebook extended the desktop across all four displays (rather than mirroring), and you can rearrange the order of the monitors in the settings.

In addition, even though the Chromebook display was still using the default 1200 x 800 resolution, the external monitors were automatically set to their full 1920 x 1080 resolution. Moving apps from one resolution window to the other maintained perfect scaling. The Shelf was also replicated to each monitor (although at the bottom, and not on the left where I placed it). Hitting the Launcher key still opened the Launcher on the Chromebook display, but you could click on the Launcher button in the Shelf on any monitor, and it would then open there.

I was only curious as to how the Chromebook would do with the dock, so I didn't test this any further. I cannot say how well it would hold up under a heavy graphics load, but I feel like the fact it could even drive three external monitors is impressive enough.

Moving on.

In my last post, I talked about enabling the native Linux app support in Chromebook, using Project Crostini. While some things work very well, there were some problems. So now I decided to try for a full Linux experience.

For that, you need to use something called Crouton. Before Google even brought Crostini to stable Chrome OS, Crouton was there to provide Linux support, developed by Google employee Dave Schneider. Very basically, Crouton uses a chroot to create a full Linux installation, running alongside Chrome OS. And you can switch between Chrome OS and Crouton with a keyboard shortcut, thus bypassing the annoyance of dual booting.

However, the big caveat is that to use Crouton you have to put your Chromebook into developer mode, which does disable some of the built in security features of Chrome OS. (Still, if you're a regular Linux user, you're probably used to handling your own security anyway.)

I'm not going to go into detail on how to put your Chromebook into developer mode or install Crouton. There's a Crouton wiki here, which talks all about it:
https://github.com/dnschneid/c...

And I found the following two sites also had very good instructions:
https://tutorials.ubuntu.com/t...
https://www.laptopmag.com/arti...

To summarize very briefly, the process is this:
- Put your Chromebook into developer mode. This WILL completely wipe the Chromebook. Your settings should be saved, but if you have any local files saved, be sure to back them up first. Anything you've installed or done in Penguin will also be wiped out.
- After rebooting (now in developer mode), re-login to your Google account and wait for Chrome to restore all your settings and apps. If you previously enabled Crostini, you may need to re-enable that as well.
- You now have access to the full power of the Crosh terminal (Chrome's built in command line application). From there, you follow the instructions to download and install the Crouton script.
- Use Crouton to install a chroot Linux. There are several options available, but most are various desktop versions of Ubuntu 16.04 (e.g. XFCE, Gnome, etc.)

(Hey, wait a minute. "Crosh"? What the heck is that? Very briefly, Crosh, or the Chrome Shell, is a shell environment into the Chrome OS itself. With a device in stable mode, crosh has a very limited set of commands. But, put your Chromebook into developer mode, and crosh now gives you nearly full access to the Chrome underlying operating system, which is based on Linux.)

Once your Linux chroot is installed, you can start it any time with the following:
- Hit Ctrl+Alt+T to launch crosh.
- Type "shell" and hit Enter.
- Type "sudo start[name of distro]" to run your Linux OS, e.g. "sudo startxfce4", "sudo startgnome", etc.
- Enter the root password you created during the Crouton installation process.
- Congratulations. You're running full Linux.

To switch back and forth between Linux and Chrome OS, you can use whichever of these shortcuts works for your device:
- Ctrl+Alt+Shift+Back
- Ctrl+Alt+Shift+Forward
- Ctrl+Alt+Back (works for me on the Pixelbook)
- Ctrl+Alt+Refresh (works for me on the Pixelbook)

(Note - The Back key is the left pointing arrow in the top row of keys. On the Pixelbook it's above the 1 number key. The Refresh key in the Pixelbook is the circular arrow key, next to the Back key and above the 2 and 3 number keys.)

The first thing you might notice about your new Linux desktop is it may not look very good. Depending on your device, the scaling may be off, colors off, etc. The Crouton wiki, mentioned above, has good information on how to tweak your display for various Chromebook devices. I recommend following the instructions there. The recommendations for the Pixelbook improved the look immensely for me: https://github.com/dnschneid/c...

One other odd thing I noticed was that when I switched to the Linux chroot, then back to Chrome OS, the display in Chrome would look terrible. It would go to high contrast, odd colors, display "tearing", etc. While it may look alarming, it's easy to fix. Any action that forces a refresh of the display should correct the problem: closing and then opening the lid, changing screen resolution, turning on then turning off the Nightlight, etc. There is an open discussion on this problem in the Crouton github site, so I'm confident it's being worked on. You may not have any problems with this, but I sure did, until I discovered the work-around.

While it's easy to switch back and forth between the Chrome OS and the Linux chroot, these are essentially two separate operating systems running side by side. There is no sharing between them. While you can copy and paste between Chrome OS, Android or Crostini Linux apps, you cannot copy and paste between Chrome OS and the Crouton chroot.

And one more thing to keep in mind. Don't close the Crosh window where you started your Linux chroot, or you will close the Linux environment.

I don't really have much else to say about the Crouton Linux environment. It's a full Linux OS. If you're experienced with that, you'll know how to use it. Most of the limitations of the Crostini Penguin container don't exist there.

However, there is (at least) one big exception. I found that trying to open an OpenVPN session still fails even in your Crouton environment. Upon further research I discovered this is intentional. There's a process ("shill") running in Chrome OS that will immediately kill any tun networks you try to start up. However, there is a work-around, documented here:
https://github.com/dnschneid/c...

Following the directions there I was able to get my OpenVPN network connection working in ALL environments at once, Chrome OS, Penguin and Crouton. One clarification to the instructions on that page: you have to run the commands given in the crosh shell, and then run your OpenVPN connection from crosh. This will tie up that crosh session, so you'll then need to run another crosh session to start up your Crouton environment.

So that's the last bit. I now have all my bases covered for whatever I might need on the go. Truth be told, even after setting up the Crouton full Linux environment, I haven't had much need yet for it. For the work I've been doing on the Chromebook since getting it, I've been able to use the Chrome OS, Android, or Crostini apps I've installed. I expect I'll only end up using Crouton for things like running VMs, Docker, or other applications I don't want to clutter up my Chrome environment.

In summary, basically everything I need is there. Despite the annoyances I've mentioned and the tradeoffs, I am overall very impressed with the Chromebook. I've been using it pretty much every evening for the past two months, and I've encountered very little that I needed that I couldn't do on the Chromebook. True, some activities are not as easy or as seamless (or as fast) as on my Xubuntu laptop. The Chromebook is not a perfect device for me, and I still prefer my Linux laptop for work. But it's a good enough compromise device that I can travel with it and feel confident it will do the job.

I said back at the beginning of this series that this wasn't going to be a device review. However, I will make a few more comments about the Pixelbook. I have to say, it is a nice machine. Thin and light? You bet. The build quality seems fantastic. The hinges seem nice and sturdy and should hold up well. (In fact, they may be little too sturdy. Opening the lid, and flipping it around to tablet mode can be a bit of a chore.) And I have to comment on the keyboard. Oddities in layout aside, this is one of the nicest keyboards I've ever used. The key spacing is great for me, and I make few mistakes using it. The feedback and travel are both good. This keyboard is a real pleasure to type on. Google also did a great job of making the touchpad recognize when you're typing, and have cut down a lot on accidental touchpad "gestures" when typing, something that is a real problem for me with pretty much every laptop I've ever used.

The Pixelbook is a 2-in-1 device, and I have not really addressed its functionality as a tablet. That's because I've barely used it in that way. It is obviously bigger and bulkier than most tablets on the market, but that's to be expected. The few times I did use it in that configuration, it simply wasn't as nice as my 10" Samsung tablet. But again, it was good enough that on my next trip, I won't need to take both my tablet and my laptop; I'll be able to get by with just the Chromebook. I just won't be using it to play Sudoku on a plane; not if I don't want people 10 rows back commenting on my game play.

Thanks for reading this, and sticking with me on this journey. I will conclude with my

Wish List for Chrome OS:

  • Make keyboard shortcuts for Home and End consistent across ALL apps and windows.
  • Allow the user to create custom keyboard shortcuts, and edit existing shortcuts; there is some customization allowed, but it's very limited. Not all the shortcuts are intuitive, and accessing some functions seem to require using the trackpad or jumping through hoops to do so.
  • Allow mounting of multiple Google Drive accounts to the Files app. A lot of us have multiple Google accounts, and being able to access all the Drives in Files would be very helpful. Right now you can only access the Drive for the logged in user.
  • Allow specifying top row as either media keys or functions per app.
  • Add a reboot option to the shutdown button.
  • When the shelf is at the bottom of the screen, hitting the launcher activates the shelf, but you have to swipe down with three fingers to get the full list of apps. However, when the shelf is docked to the left or right of the screen, then hitting the launcher key automatically displays the full list of apps. This is definitely preferable. Make the launcher work the same when docked to the bottom as it does when docked to the sides.
  • For goodness sake, Google, provide an option to order the apps list alphabetically. You can reorder them manually, but this is tedious. Without it, trying to find anything in the current list is very frustrating (if you don't remember the name).
  • Build in support for SSHFS or SFTP mounts to the Files app. Having to use 3rd party apps to do this is annoying, and requires restarting the app after each reboot.
  • Allow the user to define startup applications.

Continuing Reading A SysAdmin's Journey into Chrome OS

A SysAdmin's Journey into Chrome OS - Part 1

A SysAdmin's Journey into Chrome OS - Part 2

Read more by Larry Baerveldt

Tags chrome, chromebook