Fine Tuning Virtual Machine

Let us start from our previous post. Our virtual box now looks like given below:

31

Now we click on System tab and select General

32

Make changes to snapshot folders as you wish. Keep the clipboard and Drag’n'Drop to bidirectional. Now let us select System

33

Allocate at least 2GB and more if you desire. I have 12G and allocated 8G. Enable IO APIC for multiple CPUs. Leave others as they are. Let us move to processor portion.

34

I have quad core CPU and I have allocated all. You should enable PAE for more than 4G RAM support to VM.

Let us move to Display portion:

35

Allocate as much VRAM as you want. It hardly makes a difference as you will not be installing games on Linux I reckon. I have nVidia 570GTX but cannot allocate more than 128MB. Enable 3D acceleration for OpenGL. 2D is only for Windows host so wont work. I have one monitor so I chose one if you have more you can increase monitor count. Let us move to shared folders as not much is there in other sections:

26

Click on the Add icon highlighted in the picture:

36

Choose other then point to whichever you want to share. I select Auto mount and entire D: but you can add more drives if you want. You can also mount read only. Now it should look like following

38

That is all system is ready to boot. In next post I will show installation of Linux Mint KDE 14.

Configuring a new GNU/Linux virtual machine in VirtualBox

Let us launch VirtualBox which we installed in previous post. You will see a screen similar to one given below.

Step 1: Note that I already have three VMs. Two having state saved and one powered off. You will have none if you did just a fresh install.

vb1

Click on New to see following:

Step 2:

vb2

Since Mint is not recognized by VirtualBox I have chosed “Other Linux”. Name is what you want to name your virtual machine. Click on next for next step.

Step 3:

vb3

I have 12GB RAM and I am allocating 8G to my virtual machine because I am inside my Mint installation most of the time. Windows is just for booting and launching VM. Make sure you give at least 2GB RAM and in total you have more than 4GB. Click on next for next step.

Step 4:

vb4

Choose option 2 because we want to do a new installation. The entire file system will be inside this file as an image. Click on next.

Step 5:

vb5

Choose vdi format here. I will not go in details of when should you choose which one here. Click on next.

Step 6:

vb6

We do not want entire space to be allocated up front therefore choose dynamically allocated.

Step 7:

vb8

Drag it to show 40G. If you want more give more. Typically this much is enough for Linux box because we can keep data in Windows folder and access though sharing. We can install all we want in 40G and some data as well.

Step 8:

vb7

This is where your image will be stored so make sure you have enough space in C: or change it to D: or something else where you will always have 40G.

Step 9:

vb9

When you say cancel or select in step 8 and then “Create” in 7 you will have your Example VM ready. In our next post we will customize it further.

Installing Virtual Box

Virtual Box will be used as a virtualization software for GNU/Linux Installation in later posts. There are advantages and disadvantages of a virtual installation. In a VM you can run both OS in parallel and today’s machine are powerful enough to run both easily. It is also good for new people as you do not have the need to be afraid that what will happen to Windows in case something goes wrong etc. This is just like installing an application. First of all you need to go to https://www.virtualbox.org/ and the go to downloads page. Over there select for Windows hosts. As of this writing 4.2.12 is latest version. Download that. Then double click the downloaded file and follow following steps as shown in images.

Installing VirtualBox

Step 1:

virtual box step1

Step 2:

virtual box  step2

Step 3:

virtual box step4

Step 4:

virtual box step5

Step 5:

virtaul box step6

Step 6:

virtual box step7

Step 7:

virtual box step8

At this point it is installed and you should reboot Windows. In next post we will see how to install GNU/Linux Mint on top of this VB.

Why should you use GNU Linux?

If I say it is free you would think oh no money. Then I will spend hours to explain you not it is freedom and then how you protect it using GNU GPL. Then you would say that you do not care for that. If I say open source and that you get source code then you will either say that you are not a programmer or you will say that you do not care. Therefore I will not say any of that. I will say what you get and what you do not in terms of concrete softwares.

The only possible reason for using Windows is possibly games as they are rarely written for GNU/Linux and support for these in Wine/Cedega leaves many things desired. The first argument which I am going to put is GNU/Linux provides lots of software out of the box. As of now I can see in my Mint installation 40k+ software packages are listed. That covers almost every possible thing I would ever need. Now all these packages are either one click or command away. Such integration is not there in Windows.

Second is I hate setting those environment variables in Windows. Now a normal user does not care as most of his things are operated using mouse. But command line users know what I am talking about. The “Command Prompt” or its replacements in Windows simply cry in front of Konsole or Gnome-Terminal.

I do not know if you have ever been attacked by viruses but I know many people who have lost data in Windows. GNU/Linux is a lot more safer that way. Code is rock solid. Sure some people would say since GNU/Linux is not popular people do not care enough to write viruses for it. I say to them that is a lame excuse. Agreed, that GNU/Linux code may be weak but even then it is not proven and weakness of Windows is proven.

I had read a document from NASA which had outlined steps on how to make Windows XP secure. Well, the document was 700 pages.

For programmers, GNU/Linux is heaven. You have all the tools, libraries and free (open source if you prefer it that way) code (to learn from and improve upon) at your disposal.

Yes I agree Libreoffice is not as good as its Windows counterpart but then it is not that it is not improving. And for more complex stuff you have TeX/LaTeX etc. You can even use Lyx as your word processor.

The very integration of software with OS in one solid way is what make GNU/Linux better. Even if I have to pay I will PAY for GNU/Linux rather than Widows (no there is no spelling mistake. It is intended.)

Thanks for reading my posts. Please leave a reply you have something to say.

How to learn programming?

As Donald Knuth has said that programming is very rewarding and explosion of computer software and internet industry has provided the motivation to people to become programmers. In this post I will lay down the stages one typically goes though before he becomes an accomplished programmer. I will point out steps how can one accelerate his learning process.

I will categorize to-be programmers in two categories and books in two as well. Programmers are either English as native language or non-English. Non-English programmers who have very good grasp on English should put them in first group. Books are either written by language inventors or by others. Also specifications are there.

From my experience those who do not have good grasp on English can take up easy books which are not written by language inventors but English speaking programmers can take up these. The reason is that I have found these books have very terse language. At the same time some of these books are meant for programmers. So even if you know English very well your first language may hit you hard.

Second thing is first you should learn syntax and C as your first language. Many people say Python is easy so you should learn Python. I disagree. Python is easy but Python’s syntax is very different from other languages and will not assist you in learning more languages. C on the other hand will enable you to learn other languages syntax easily. Also, C is much better to learn operating system, multi-core, multi-threaded, 3D, numerical programming etc. Languages like C++, Java, Perl, PHP all inherit something from C. Even Python has many things from C. More of this you can find at http://libreprogramming.org/books/c/introduction/#why-c

Second is once you learn basic syntax do some basic programming and learn Data Structures and Algorithms. After that you can learn best practices of that language and finally you should read specification and compiler manual. Once you have performed these steps you are a competent programmer.

Some subjects like Discrete Mathematics, Automata Theory, Formal Languages, Compilers, Operating Systems, Computer Networks, Computer Architecture, ELF file format(for GNU/Linux or Unix) are very core of programming. A good programmer is good at these.

Thanks for reading my post. If you have question please comment.