Running Native Ubuntu Linux Under Windows 10

This is very new and very hot.  For many years now we have been able to run all sorts of Linux distros (Ubuntu, Debian, RedHat, etc.) on Windows boxes by use of “virtual machines”, either from within VMWare or from Oracle’s VirtualBox.  These programs emulate the architecture of the CPU and install and run the various distros within their frameworks.

This new product from Microsoft, while still in beta mode, runs Ubuntu natively, not via emulation. It’s called “Bash on Ubuntu on Windows.”  This development effort, while being implemented by Microsoft, is getting support from the Ubuntu community.

Note again that this is a beta product.  If you are running a normal Windows 10 operating system on your computer then this software is not yet available.  You need to sign up and become a member of the Microsoft Insider Program.  Being in this program will get you newer Windows software, newer features and, for course, possible bugs.  I have now been on the “fast track” option of the Insider program (which is also required to get this beta software) for well over a month and have yet to experience any problems.  Microsoft will occasionally bug you with a message asking for your input on some feature or another but I consider that to be quite acceptable and I do respond with as much detail as I can. To sign up for the Insider Program, go to this link.

For those of you interested in understanding a little about the architecture surrounding Bash on Ubuntu on Windows, you might find this 21 minute video interesting: architecture link.

To get started with Bash on Ubuntu on Windows, you must be running Windows 10 version 14316 or later.  I am currently on version 14332.  To find your version number, go to Settings –> System –> About.  The version number is the “OS Build”.

Here is the procedure for installing Bash on Ubuntu on Windows.  I am assuming you are already signed up for the Insider Program and that you have version 14316 or later of Windows 10.  Go to Settings –> Update & Security –> For Developers.  You want to select “Developer mode” as shown in this picture:

ForDeveloper

Once done, close the dialog box.

Next, go to Windows –> search –> and enter “windows features on or off”.  In the dialog box that will appear, scroll down until you see “Windows Subsystem for Linux (Beta)” and select it, as shown in this picture:

WindowsFeatures2

After you click on the OK button above, Windows will initiate the download of the Ubuntu file, bash.exe.  Once done, the computer will need to be restarted.  After the computer as restarted, launch a command prompt (“cmd”) and enter the command “bash”, as shown in this picture:

bash1

Enter “y” to initiate the download of the Ubuntu operating system, as shown here:

bash2

Depending on the speed of your Internet connection, this might take some time to complete.  Once done, enter “exit” to close the cmd window, as shown here:

bash3

At this point, everything is done. Ubuntu for Windows has been installed.  Now simply open Windows and search for “Bash on Ubuntu on Windows” and select it.  A real bash shell will now open up as shown here:

bash4

You are now running Ubuntu on Windows.  There are a few important points that you need to make note of:

  • Not all Ubuntu software will work; for example, ping does not yet work.
  • While it appears you that you don’t have Internet connectivity (due to ping not working) this is not true; you can use apt-get to download and install additional packages just like in a normal Ubuntu environment.
    • If you do have connectivity issues, see this link.
  • sudo works fine; use it.
  • If you want to access your Windows home directory from within Ubuntu, do an “ls /mnt/c/Users/yourUserName” to see the list of files.
  • Read the FAQ to get a better understanding about this product, current status, etc.

Bash on Ubuntu on Windows (they need to come up with a shorter name) has only been out for a couple of months.  There is a lot of activity taking place with this software (see here) especially flushing out bugs.  But there’s a lot of potential, too, for developers to work in a heterogeneous environment when the need exists.

I’ll have more articles on this subject as I continue to play with it.  Stay tuned.