Mostly we code...sometimes we write. Every once in a while, we podcast.

CrossOver in a Linux VM on a Google Pixelbook: a Walkthrough


A New Technology on Chromebooks

CodeWeavers is always excited to see new platforms where we can expand Windows compatibility.  Of course we were thrilled when this year at Google I/O, the Chrome OS team announced a powerful new feature coming to Chromebooks.  Starting with Google Pixelbook, Chrome OS will be able to run a full Linux environment in a secure virtual machine.

Linux VMs on Chrome OS open up a lot of possibilities.  Google focused on the ability to use Chrome OS as a self-hosting Android development platform by running Android Studio in the Linux VM.  At CodeWeavers, of course, I was excited to try running our Linux build of CrossOver on a Chromebook inside the virtual machine.

>>> Read How Josh Got Wine Working on Android

A clarification: running CrossOver for Linux on a Chromebook is early and experimental.  Across the board, Linux containers on Chromebooks are still a developer focused feature.  Also, CodeWeavers has a version of CrossOver already available in Google Play.  That product - running via the Android system - is our more mature offering on Chrome OS and remains our current go-to means of running CrossOver on a Chromebook.  

With that said, it will be an interesting journey to try using these new Linux VMs to run Debian CrossOver on Chrome OS.  Let's get started.

Let's Explore

First, we must do a few things to enable the Linux VM on our Chromebook.  The requirements:

Once that is done, you can navigate to the Chrome OS Settings and see a new "Linux (Beta)" option.  Select that, and click 'Turn on'.


This will download and install some things, and after a minute or two you will get a new window with a bash shell running inside a Debian Linux instance.


CodeWeavers has instructions for installing CrossOver on Debian here:

https://www.codeweavers.com/support/wiki/linux/faq/Debian

So following those we first try:

wget https://crossover.codeweavers.com/redirect/crossover.deb

Our Linux VM is pretty bare-bones to begin with, and we don't yet have wget.  A

sudo apt-get install wget

fixes that, and we can do the wget command again to get a crossover.deb.

Next we need to

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install gdebi
sudo gdebi crossover.deb

Now we should have a working install of CrossOver.

Looking in our Chrome OS launcher, however, there is not yet any CrossOver icon.  It is not clear whether this is a problem with the Chrome OS / Linux VM integration, or a bug in CrossOver's packaging. However, because we have a terminal, we can launch from the command-line:

/opt/cxoffice/bin/crossover

... and up pops a little window.  It's not quite what we want, though.  CrossOver is complaining about missing packages.  From here, a

sudo apt-get install python-dbus python-gtk2

is needed, and we can try

/opt/cxoffice/bin/crossover 

again.  This time ... voila!  CrossOver appears:


Running a Windows Application

Now let's try to install Quicken.  

The first problem is that I have a Quicken.exe installer on a USB flash drive.  The Linux VM does not have access to my USB drive nor the outside filesystem.  I need to put a copy of that into the Debian container so that CrossOver can make use of it.  To do that, I insert my USB key and open the Chrome OS files app.  Now that my Linux VM is running, I see an entry in the Files app called "Linux Files."  I can easily drag the Quicken.exe file from my USB drive in there. 


After that, an easy

ls

from my terminal shows that it has appeared in my Linux VM in the root of my home directory.  Simple enough.

Now I click on CrossOver's 'Install Windows Software' button and search for Quicken 2018.  I can select the Quicken.exe installer file I just copied into my VM and the install kicks off.

Right away I get an error message complaining that we don't have libxml2.  Really CrossOver should have been able to fix this automatically, but it seems that on this Debian VM CrossOver cannot find a tool for sudo access.  I'll have to do this by hand, with:

sudo apt-get install libxml2:i386

... and re-start the install. 

The install process goes smoothly this time - same as CrossOver on any platform.  Quicken's Windows installer presents itself.


I click through several 'OK' buttons, and at the end, I have a Quicken icon in CrossOver's launcher window.  I click that, an Quicken starts up!


I can use the same features of Quicken 2018 here that I can for our Mac and Linux products.  This is nice because running Quicken is something our Android product cannot do yet, and it is a frequent customer demand.  (On the Android front: stay tuned ... we are actively working on Quicken support in our regular Android offering also and hope to announce that soon.)

There are a few bumps and warts.  The biggest is that I'm not getting a CrossOver launcher in the Chrome OS launcher, and I'm not getting Quicken launchers there either.1  In theory this ought to work.  Again, it's not clear whether this is a problem with CrossOver or with the Chrome OS Linux integration.  Things are in the early stages, though, so a few flaws are not too surpising.  

We don't know yet what the future holds for Linux VMs running on Chrome OS.  Increased security for running Windows applications is one likely advantage.  The robust developer tools available on Linux will make it easier for us to develop CrossOver for Chromebooks via a Linux VM.  Of course, smoother integration and a more seamless user experience will be paramount.

For now, I am delighted because I have what I think is a nice piece of hardware - a Google Pixelbook - with a new capability to run CrossOver in a familiar Linux environment.  It's already much more integrated than the older crouton solution, with clear aim at being user-friendly.  That said, today this is clearly for people who are comfortable at a Unix command line.  This machine is small and thin and a delight to carry around and work with.  For someone wanting a Unix box to travel with, it is a nice solution (I can even run Emacs!)

Virtual Machine technology is a powerful addition to the Chrome OS lineup.  CodeWeavers is very excited at the possibilities this opens for both Chromebooks and CrossOver.


1. If you really want launchers for CrossOver's Wine apps, you can edit /opt/cxoffice/bin/locate_gui.sh and just hardcode xdg_menu_on to 1, then re-install. For me, that produced menu entries on the Chrome side but no custom icons. Obviously a few kinks left!

About Josh DuBois

Josh DuBois is an engineer and product manager for CrossOver.

The following comments are owned by whoever posted them. We are not responsible for them in any way.

This may be obvious, but I'm guessing this will only work with x86 Chromebooks like the Pixelbook right? I know windows is getting ARM support including x86 emulation but I'm guessing it will be a while before wine/crossover catches up.

Zach Mauch wrote:

This may be obvious, but I'm guessing this will only work with x86
Chromebooks like the Pixelbook right? I know windows is getting ARM
support including x86 emulation but I'm guessing it will be a while
before wine/crossover catches up.

Yes, correct: this will only work for x86 Chromebooks. In fact, at the moment, the number of Chromebooks with the Linux VM feature is quite limited on the Chrome OS side, without regard to the question of whether the hardware is x86 or ARM. It seems likely that Google will expand that in the future. Even after that, however, x86 emulation on an ARM device is very tough to do in a way that is fast enough to be useful. It is something we have experimented with and will continue to consider, but fast hardware emulation would be another step. (Running ARM Windows binaries, of course, would be possible without the same performance penalty, but those essentially do not exist today.)

Are you stopping development on Crossover for Android on Chromebooks?

I sincerely hope not. While i know it's more difficult to implement CrossOver on Android, it runs at the same level as the OS. On Linux VM it has no HW acceleration and sine it's a virtual machine it runs very slowly.

Ulises Vazquez wrote:

I sincerely hope not. While i know it's more difficult to implement
CrossOver on Android, it runs at the same level as the OS. On Linux
VM it has no HW acceleration and sine it's a virtual machine it runs
very slowly.

Sorry for the late reply. Our Android product is still in Google Play.

On the question of hardware accelerated graphics from within the VM in Crostini, the Chromium projects public bug tracker has an issue for adding this feature to the Linux VM on Chromium OS.

https://bugs.chromium.org/p/chromium/issues/detail?id=837073

(There may be other related issues in the tracker also.)

The upshot, I think, is to watch that bug ... if you are in fact talking about access to the GPU from within the VM on Chrome OS, it looks like work is being done in that direction.

CodeWeavers or its third-party tools process personal data (e.g. browsing data or IP addresses) and use cookies or other identifiers, which are necessary for its functioning and required to achieve the purposes illustrated in our Privacy Policy. You accept the use of cookies or other identifiers by clicking the Acknowledge button.
Please Wait...
eyJjb3VudHJ5IjoiVVMiLCJsYW5nIjoiZW4iLCJjYXJ0IjowLCJ0enMiOi01LCJjZG4iOiJodHRwczpcL1wvbWVkaWEuY29kZXdlYXZlcnMuY29tXC9wdWJcL2Nyb3Nzb3Zlclwvd2Vic2l0ZSIsImNkbnRzIjoxNzI3NDcwNjA2LCJjc3JmX3Rva2VuIjoiS2hzZFljZVI2bU54YUNxZCIsImdkcHIiOjB9