It was Nov. 28, 2016, when I came across an article on TechRepublic that talked about Microsoft’s plans for the future of Linux and Bash on Windows 10. The first read made me feel uncomfortable (I can’t really say why) but after the second read, I started believing that this is, in fact, a great opportunity. Running Linux binaries natively on Windows … that sounds awesome indeed. However, it’s quite unfortunate that Microsoft enabled the wrong Linux (that’s my personal opinion) by default within the Windows Subsystem for Linux (WSL), and it is time to change it to the real stuff.
If you are one of those people who says, “Wait a second, I’m running SUSE Linux on my desktop/laptop already and I’m not using Windows 10 by any means,” then you might want to stop reading now because you are already there. But we cannot neglect the reality that Windows is running on most of those devices, and it’s hard to have both Windows and Linux truly accessible at the same time. You’d either have to go with a dual boot setup, or you may leverage virtualization and run a Linux VM on Windows (or vice versa), or you might be familiar with Cygwin allowing you to run recompiled Linux binaries on Windows. All of those options have their advantages and disadvantages – so do we need another one?
Yes, we do. But we need one; the integrated one leveraging the green Linux from SUSE. Why SUSE? Well, SUSE knows what they are doing because they have been in the Linux business since 1992. Try to find a Linux “vendor” (or in that sense, distributor) that is older. You won’t. There aren’t any. OK, enough with the self-praise. Let’s get started.
Assuming that you are running Windows 10 already, there are simple steps you have to follow to install a SUSE Linux distribution inside WSL (as always, I’m sure there are easier ways to achieve the same. Feel free to use the comments to let everyone know how you do it differently). You have currently two options, openSUSE Leap 42.2 and SUSE Linux Enterprise Server 12 SP2. I’ll describe the process for openSUSE Leap 42.2 below (it works the same way for SUSE Linux Enterprise Server 12 SP2, just with another archive to download and extract):
- Enable the Windows Subsystem for Linux (WSL): A great step-by-step guide can be found here. During the install, you will need to create a non-root user and password. I’ll refer to this user as <linux_user> in the next steps.
- Download the openSUSE Docker userspace:
$ wget -O openSUSE-42.2.tar.xz https://github.com/openSUSE/docker-containers-build/blob/openSUSE-42.2/docker/openSUSE-42.2.tar.xz?raw=true
- Open the bash shell, which you find in your Windows Start menu under “Bash on Ubuntu on Windows” (click the Windows button, type “bash” and then hit enter). True, it’s still Ubuntu, but we only need to run a few commands there before we can replace it.
- Extract the openSUSE userspace (ignore any warnings) and exit the bash shell:
$ sudo mkdir rootfs $ sudo tar -C rootfs -Jxf openSUSE-42.2.tar.xz $ exit
- Backup the old rootfs (Ubuntu) and copy the new openSUSE rootfs. Open a Command Prompt window (Windows key, enter “cmd” and hit enter) and run the following commands:
cd %localappdata%\lxss\ rename rootfs rootfs.ubuntu move .\home\<linux_user>\rootfs .\
- The new openSUSE userspace will, of course, not include the user that you created when you installed Bash for Windows, nor does it have things like 'sudo.' To start, just set ‘root’ as the default user. While still in the Command Prompt window, run the following:
When exiting the command prompt, start bash from the start menu (Windows key, enter “bash” and hit enter) and you have your openSUSE Leap 42.2 environment running within WSL.
lxrun /setdefaultuser root
- Now let’s also change the orange icon to a cool green one. The one I’m using is coming from iconarchive.com and can be found here.
- Download the .ico file and copy it to %localappdata%\lxss\. In a command shell, execute the commands (or simply use Windows Explorer, whichever suits you best):
cd %localappdata%\lxss\ rename bash.ico Ubuntu.ico rename Saki-NuoveXT-Apps-suse.ico bash.ico
Now you’re done. Without a reboot, the Windows start menu continues to show the old, orange icon. You could rebuild the start menu index or just wait until your next reboot. If anyone knows how to update the icon shown when using the search (Windows button, enter “bash”), let me know.
Last but not least, let’s navigate to %AppData%\Microsoft\Windows\Start Menu\Programs and give the entry a proper name. I called the entry “Bash on SUSE on Windows”.
So now that we have – in my opinion – the proper Linux placed inside the WSL, it is time to do a little more with it. The content of part two is currently in the works, and I’ll update this blog once it’s published.