As an introduction to Linux I'd highly recommend using Puppy Linux.
It's a very easy to use and small linux distro that can boot from live CD (you can also make live USB stick as well with it).
It runs all in RAM, but can create a small save space as well on a Windows drive (a 2FS file system file) so you don't need to re-partition your hard drive or install it or anything, just put the CD in the drive and get the CD to boot.
By default the system doesn't include the main compilation commands like make, gcc etc but they can be added by just downloading an SFS file and attaching it simply to the system with the boot manager (it's just a case of opening the boot manager up and adding the development file to the list and the n re-booting, nothing too complicated - if you know the basics of Windows you should be able to do that blindfolded!).
Quite a few items of software are available for Puppy as PET files, these are pre-compiled and just need installing, very similar to how Windows installs, plus if you download the Lupu version it's based on Ubuntu so can also accept many Ubuntu DEB packages too.
The most important thing to remember on Linux is that not everything comes pre-packaged, pre-compiled. If your a low level programmer in Windows and use stuff like C++ you shouldn't have much difficulty actually getting your head around this.
Some items when you download them in Linux you will find they are what is called a "source tar-ball". These can be quite complicated to use if you don't understand programming, but if you know programming there not that hard - and actually once you've installed a few source packages you soon get the idea...
A source package can be really useful as well because it builds the source specifically to work with your machine - this is very advantageous (and if Windows did this it could cure a large number of bugs!). As you are probably aware there are millions of different combinations of "IBM PC compatibles" out there - some might have an Intel CPU in them, AMD CPU, nVidia GPU, ATi GPU, 3DFX GPU, 2Gb RAM, 4Gb RAM, 32-bit CPU, 64-bit CPU, etc... there is a lot of combinations when building a PC, so by compiling the source package on your PC it builds the binary to work specifically with what ever hardware you have in your machine and utilise whatever technology you've got in there.
The only problem with a source package is all the other problems faced with it and how to install it as it's not a standard just run a program and off it goes.
To start with when installing a source package you need to ensure you have the development tools included in the Linux distro (thankfully with Puppy that is just download something like lupu_devx_528-4.sfs and then attach it to the boot manager - if your not sure whether the distro has the development tools just open up a terminal window and type make --help and press enter. If it comes back with make: command not found then you've not got the dev tools installed, if it comes back with a big help screen then your ready to begin.
Next stage is to download the tar ball - this is just like a zip/rar archive of all the source code, we don't need to worry about anything that's in there - all we need to do is use the archiver to extract it to a specific directory where we will remember where it is.
Then we just need to open up a terminal window and change directory to the spefic download location - e.g. cd /mnt/home/my-program (the handy thing is, if you can't remember the path properly you can always press TAB and it will show you possible auto-complete choices - Windows recently started copying this but it isn't as good).
now once your in the program directory there are just three simple commands you need to run....
./configure (remember the ./ at the beginning this is very important!)
This runs the configuration script that builds the program specifically for your computer, based on your hardware, and software installed. It also checks to make sure if there are any dependencies missing - dependencies are other programs that the program may need to run. Like for example in windows if you wrote a program that used a DirectX 9.0 library, then to run it on another computer you'd need to install DirectX 9.0 on that machine as well. Dependencies are the same idea.
So if there are any dependencies missing you need to go get them - same as when you view a web page with flash and you've not got flash player installed you need to go get flash player - same idea Flash is just a dependency for that web page.
After sorting all the dependencies out - small programs probably won't have that many - if any, larger programs might need many - like GTK+, QT, etc, which also may have their own dependencies your ready to move on to the second command
The second command is
make (no ./ required here)
this builds (or makes) the program, the configure program created makefiles which are specific to the machine that is running them and make uses those makefiles to compile the program - the same way when you compile a program and produce an executable in C++.
and the third and final command is
This installs the program for you, so to install a program from source you just need the following three commands
and that's it. It may seem a little bit tricky at first to get your head round building from source but after a few it's not too hard.
Now one of the other major differences you may notice in Linux is the file system...
Windows has a file system of drives A: drive (floppy), B: drive (second floppy) C: (HDD), D: (CD), etc...
Linux has one starting point which every drive branches off... the root folder
so instead of a c drive or d drive to access these drives they are located in "mount"points.
Windows automatically mounts a drive when it's plugged in - so when you plug your USB drive in Windows detects it, and shows it as a new drive. Then when you want to remove it you need to use safely remove hardware to "unmount" it.
Linux however doesn't automatically mount/unmount drives just because they're plugged in. Years ago Linux needed to have configuration files edited to access new drives, however thankfully now most distros including Puppy auto-detect when a drive is plugged in - BUT they don't automatically mount the disc. In Puppy when you plug a new drive in you will see a new icon on the desktop for that drive. To mount it you just click the drive, and it will mount and open up so you can view the files, at this point as well a green dot will appear on the drive icon. This is to warn you that the drive is now mounted and DO NOT remove the drive without properly unmounting it first (the same as "safely remove hardware" in Windows). To unmount it just right click on the icon on the desktop and click unmount. You will notice though Linux unmounts drives a lot faster than Windows and you don't get the unable to unmount message from Linux either (this is because Linux's ability to terminate programs is far superior to Windows) - btw Linux can be a little less unforgiving if you remove a drive without unmounting it first than Windows can.
When you mount a drive it is positioned in the folder tree under it's mount point, most mount points are located under
(replace <device id> with the device name.
so hard drive one might be at
and usb might be at
By default most of the mount points are created in the mnt folder, however you can create the mount points where ever you want as long as there is a folder there for them, but that is getting too complicated.
If you go into the drive folder and you find there is no files in there when there should be - this is because the drive probably isn't mounted, check for the green circle on the drive icon. Sometimes the circle may be other colours like orange or red, this can depend on your icon preferences or it can indicate a problem with either mounting or unmounting a drive - for example the main drive that has all the linux files will normally show up red as it is the main drive and cannot be unmounted - which would be the same for Windows - can you imagine disconnecting your C: drive in Windows whilst the computer is switched on? yeah exactly - although I have seen one computer that you can do that too - a Silicon Graphix which one of the lads doing his PhD had in one of the computer rooms when I was at University, he demonstrated it to us and it was amazing - and that was back in 1999.
One final thing I forgot to explain as well was - above you may be wondering why ./ was so important in the ./configure command and yet wasn't needed with the make command...
This is because of the way Linux deals with commands which is again different to Windows... in Windows when you run a program Windows/MS-DOS looks first in the current directory for the program, and then the path for the command, however Linux only looks at the path variable for the executable, unless it's location is specifically stated at the beginning of the command (./) the configure program is located within the current directory which isn't in the path so we have to tell Linux look in the current directory for the command, however the make command is normally located in either /bin or /usr/bin which is in the path so we don't need to tell Linux where to look for that. Of course this does add an extra layer of security to Linux, as in Windows you could create a folder and put for example a file called deltree.exe in there, as long as the person is in that folder and types deltree they will run that program within that folder, and not the official deltree command that is located in C:\windows\command which depending on what that other executable does could lead to interesting results, possibly even virus infection, where as Linux would have ignored it and gone straight for the official command in the path. At Uni a common trick if someone left themselves logged in was to do something like this - the trick was to create a fake "menu.bat" file with the one command logout in it, or if you were feeling nice a message like "echo 'Remember to logout next time'" and the first menu file the computer came across was the fake menu.bat not the one on the path (which was on Z drive!), of course if someone did put logout into the file then you'd be logged out the minute you logged in and it would take one of the IT technicians to remove the file for you, of course if that had been Linux it wouldn't have been possible because you'd have to change the startup command from menu to ./menu which you only the IT tech's could do.
Anyway I hope you try out Linux and enjoy playing with it and hope this information helps - sorry if I've gone on too long (I do have Asperger's so am prone to going on too long on something which interests me!)
Edited by TheKLF99, 15 February 2013 - 03:37 AM.