.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 Huawei Technologies Co., Ltd.

SO Install & Configure
==========================================

Get Ubuntu
----------
Get the Ubuntu ISO image from ubuntu.com. The recommended version is 16.04.3 LTS (Long Term Support), desktop edition.

Get VirtualBox and VirtualBox Guest Additions
---------------------------------------------
Make sure you have the VirtualBox Guest Additions ISO for your version of VirtualBox.  I'm using VirtualBox 5.1.28.  Save the Guest Additions ISO on your host computer along with the Ubuntu ISO.  Get the Guest Additions ISO from here:
    http://download.virtualbox.org/virtualbox
*NOTE*: Guest Additions versions prior to 5.1 will not work with Ubuntu 16.04.3.  If you have an earlier version of VirtualBox, you should upgrade to the latest 5.1 version.

Create a new VM in VirtualBox for Ubuntu
----------------------------------------
Type: Linux

Version: Ubuntu (64-bit)

At least 2048 MB memory

At least 40 GB VDI

Network: Attached to: NAT

Create a port-forwarding rule for SSH
-------------------------------------
Create a port-forwarding rule so that you can use PuTTY (or other SSH client) to connect to the VM.

Go to "Network" settings in VirtualBox, add a port forwarding rule:

Name: SSH

Protocol: TCP

Host IP: 127.0.0.1

Host Port: 1022

Guest IP: <leave blank>

Guest Port: 22

.. image:: images/Configure_ubuntu_SO_1.png

.

.. image:: images/Configure_ubuntu_SO_2.png

Create Shared Folder
--------------------
This is oriented to Windows users.  If you're using a MAC or a Linux host computer, the details may be different.  You can share any folder on the host computer with the Ubuntu VM.  On Windows, a practical choice is to share the C:\Users folder, so that your Windows home directory will be accessible from the Ubuntu VM.

Go to "Shared Folders" settings in VirtualBox, add a share:

Folder Path: C:\Users

Folder Name: Users

Auto-mount: <checked>

Read-only: <unchecked>

.. image:: images/Configure_ubuntu_SO_3.png

.

.. image:: images/Configure_ubuntu_SO_4.png

Install Ubuntu in the VM
------------------------
On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your Ubuntu ISO image.

.. image:: images/Configure_ubuntu_SO_5.png

After selecting the ISO image, start the VM.

Follow the prompts to install Ubuntu.

Proxy Configuration (optional)
------------------------------
If you're behind a corporate firewall, configure some proxy settings.  NOTE: your proxy configuration may require username and password credentials, not shown here.
**Ubuntu system proxy setting:**

	System Settings → Network → Network proxy
	
	(Replace "proxyhost" and port with your actual proxy information)

.. image:: images/Configure_ubuntu_SO_6.png
	
**apt proxy setting:**
	Edit /etc/apt/apt.conf and add one line at the top (replace "proxyhost:port" with your actual proxy information):
	
		Acquire::http::Proxy "http://proxyhost:port";
		
	Reboot the VM.
	
Install SSH Server
------------------

.. code-block:: bash

    sudo apt update
    sudo apt install openssh-server

Connect to the VM from your host computer
-----------------------------------------
	The PuTTY SSH client is popular.  A connection to localhost:1022 (or whatever port you have forwarded) will go to the VM.

.. image:: images/Configure_ubuntu_SO_7.png
	
Install VirtualBox Guest Additions
----------------------------------
On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your VirtualBox Guest Additions ISO image.

.. image:: images/Configure_ubuntu_SO_8.png

In a VM terminal window, mount the cdrom:

.. code-block:: bash

	sudo mkdir -p /media/cdrom
	sudo mount /dev/cdrom /media/cdrom
	
Install necessary dependencies:

.. code-block:: bash

    sudo apt update
    sudo apt install gcc g++ dkms
	
Install the guest additions.  NOTE: look for errors in the command output!  If you see an error that says you are missing kernel headers, the most likely cause is that you are using a VirtualBox version that is too old.  The error message is misleading.

.. code-block:: bash

	cd /media/cdrom
	sudo ./VBoxLinuxAdditions.run

.. image:: images/Configure_ubuntu_SO_9.png	
	
Add yourself to the vboxsf user group (replace "userid" with your user ID):
	
.. code-block:: bash	
	
	sudo usermod -a -G vboxsf userid
	
Reboot the VM.

In a VM terminal window, verify that you can access your home directory on the host computer, which should be mounted under here:
	/media/sf_Users
	
Further Reading
----------------------------------------	

.. toctree::
   :maxdepth: 1

   Install_Docker.rst
   Configure_git_and_gerrit.rst
   Workspace_and_Development_Tools.rst