Linux applications and .NET Core on a Chromebook makes this an increasingly interesting device

I have been writing about Google Chromebooks of late and as part of my research went out and bought one, an HP Chromebook 14 that cost me less than £200. It runs an Intel Celeron N3350 processor and has a generous (at this price) 32GB storage; many of the cheaper models have only 16GB.

This is a low-end notebook for sure, but still boots quickly and works fine for general web browsing and productivity applications. Chrome OS (the proprietary version of the open source Chromium OS) is no longer an OS that essentially just runs Google’s Chrome browser, though that is still the main intent. It has for some time been able to run Android applications; these run in a container which itself runs Android. Android apps run fairly well though I have experienced some anomalies.

Recently Google has added support for Linux applications, though this is still in beta. The main motivation for this seems to be to run Android Studio, so that Googlers and others with smart Pixelbooks (high-end Chromebooks that cost between £999 and £1,699) can do a bit more with their expensive hardware.

I had not realised that even a lowly HP Chromebook 14 is now supported by the beta, but when I saw the option in settings I jumped at it.

image

It took a little while to download but then I was able to open a Linux terminal. Like Android, Linux runs in a container. It is also worth noting that Chrome OS itself is based on Linux so in one sense Chromebooks have always run Linux; however they have been locked down so that you could not, until now, install applications other than web apps or Android.

Linux is therefore sandboxed. It is configured so that you do not have access to the general file system. However the Chromebook Files application has access to your user files in both Chrome OS and Linux.

image

I found little documentation for running Linux applications so here are a few notes on my initial stumblings.

First, note that the Chromebook trackpad has no right-click. To right-click you do Alt-Click. Useful, because this is how you paste from the clipboard into the Linux terminal.

Similarly, there is no Delete key. To Delete you do Alt-Backspace.

I attribute these annoyances to the fact that Chrome OS was mostly developed by Mac users.

Second, no Linux desktop is installed. I did in fact install the lightweight LXDE with partial success but it does not work properly.

The idea is that you install GUI applications which run in their own window. It is integrated so that once installed, Linux applications appear in the Chromebook application menu.

I installed Firefox ESR (Extended Support Release).  Then I installed an application which promises to be particularly useful for me, Visual Studio Code. Next I installed the .NET Core SDK, following the instructions for Debian.

image

Everything worked, and after installing the C# extension for VS Code I am able to debug and run .NET Core applications.

I understand that you will not be so lucky with VS Code if you have an ARM Chromebook. Intel x86 is the winner for compatibility.

What is significant to me is not only that you can now run desktop applications on a Chromebook, but also that you can work on a Chromebook without needing to be deeply hooked into the Google ecosystem. You still need a Google account of course, for log in and the Play Store.

You will also note from the screenshot above that Chrome OS is no longer just about a full-screen web browser. Multiple overlapping windows, just like Windows and Mac.

These changes might persuade me to spend a little more on a Chromebook next time around. Certainly the long battery life is attractive. Following a tip, I disabled Bluetooth, and my Chromebook battery app is reporting 48% remaining, 9 hrs 23 minutes. A little optimistic I suspect, but still fantastic.

Postscript: I was always a fan of the disliked Windows RT, which combined a locked-down operating system with the ability to run Windows applications. Maybe container technology is the answer to the conundrum of how to provide a fully capable operating system that is also protected from malware. Having said which, there is no doubt that these changes make Chromebooks more vulnerable to malware; even if it only runs in the Linux environment, it could be damaging and steal data. The OS itself though will be protected.

5 thoughts on “Linux applications and .NET Core on a Chromebook makes this an increasingly interesting device”

  1. Hi Tim,
    Great article. I was able to duplicate your efforts on my Acer Chromebook 14. I was not able to get an asp net core app up and running though… or rather it would successfully compile but I could not load it in the browser. Have you had any success with this?

    Thanks,
    Chris

    1. Hi Chris

      Yes, I compiled and ran an ASP.NET Core app using Firefox. I cannot get it to load in Chrome though.

      Tim

    2. Hi Tim,
      One more question please. Do you mean you used the linux app version of firefox or one installed on chrome os?

      thanks again,
      Chris

  2. Hi Tim,

    I’ve been having some trouble with VSCode + dotnet on my Chromebook, but was encouraged when I saw your post. Unfortunately, even after wiping my Linux container and following your instructions, I still have the same problem. When I attempt to start debugging in VSCode, VSCode just spins. It almost seems as if it’s waiting for some background process that never finishes. I _can_ successfully run the program (in this case, just the default console app resulting from ‘dotnet new console’), so it’s not an intrinsic dotnet issue, and I can use VSCode to debug Node successfully. The same issue occurs when I try to ‘attach’ to a running process, so it’s not like I could start the dotnet process externally and try to connect. Any thoughts? Thanks!

  3. I’ve used .net core on windows often and I believe the chrome issue is related to there not being a self signed certificate installed on the system. It might be possible to remove the use HSTS and SSL Redirects in startup and navigate to http://localhost:. I have not verified this myself because it seems to work just fine in Firefox, as long as you add a certificate exception but Chrome may be enforcing sites to have a secure connection and there is no option presented in the Chrome browser to proceed at risk.

Comments are closed.