Advertisement

Getting Started with Linux

Started by February 15, 2013 07:46 AM
30 comments, last by _mark_ 11 years, 8 months ago

Lately I've been interested in dual booting with some Linux distribution and trying out Linux. Though with all the different Linux distributions out there I wasn't entirely sure where to start. So I thought I'd ask here as I know their are quite a bit of people here that run Linux. Though I understand the question I ask is very opinionated and will get me a lot of different answers I still thought it'd be worth to attempt to try to get some opinions on where to start.

I don't really have any major requirements or needs that I will be using the OS for, just an OS to spend some time in and using it as a "primary" OS for a little bit (I don't plan on at this time to make it my 100% primary OS, as most of my programming and serious work will take place in Windows).

Though here is what I am looking for:

* Easy to install. I really just don't feel like jumping through a ton of hoops to get it installed

*"Easy" to learn. While I will spend time to get to know it, I am looking for something that won't take a lot of work to find 3rd party software and other tools to use efficiently.

I do not know many Linux commands nor have used it's terminal in quite a while so I'd like to learn some of that too.

So what are some distributions to check out? Start out with? Any getting started guides you'd suggest for me to check out for that distribution? What to install and use to get started doing some basic C++ Programming (I don't plan to do my major C++ programming under Linux right now until I become proficient in it).

Thanks to anyone who can help me!

You forgot one:

* Easy to get your hardware to run with.

Easy to install and learn are most,but once you start to get your hardware component supported (especially videocard) the fun starts.

After killing my ubuntu attempt two times after installing the ubuntu supported nvidia driver, I went back to win7 ;-)

Btw. check out ubuntu

Advertisement

Hi Chad,

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....

Firstly...

./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

make install

This installs the program for you, so to install a program from source you just need the following three commands

./configure

make

make install

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 doesn't.

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

/mnt/<device id>

(replace <device id> with the device name.

so hard drive one might be at

/mnt/hda1

and usb might be at

/mnt/sdb1

etc...

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!)

I recommend Linux Mint (Cinnamon Edition, to be specific). It's Ubuntu-based (i.e. extremely well tested, with a huge userbase and software availability), but it's even more user friendly because it deviates from the debatable Ubuntu "features" like Unity desktop etc.

Go with Ubuntu 12.04. You get Steam and the user community is huge. Its *almost* as user friendly as Windows.

I wonder as I wander...

http://www.davesgameoflife.com

I'd recommend Ubuntu, preferrably 12.10 (the latest version) but 12.04 (the latest "long term support" version) will also do the trick. It's a commercially-supported OS based on the Linux kernel and GNU runtime and aimed at typical consumers who have no trouble using Microsoft Windows.

If you get yourself a bootable image (CD, USB drive), you can boot from that and run "live" off the image for evaluation. Installing at that point is as easy as clicking on an icon and following the prompts, it should take about 15 minutes if you've compressed your Windows drive first.

Finding and installing software is as simple as hitting the 'Windows' key and typing in search terms, then clicking on the results.

Ubuntu is the only GNU/Linux-based OS that is supported by Valve, EA, and Unity3D, and has direct inside support from nVidia and Intel for graphics drivers. There are a number of hobby projects distros that leverage the advantages that Ubuntu works for but offer a different desktop GUI shell (basic user interface).

Disclaimer: I may be considered a paid shill in some quarters.

Stephen M. Webb
Professional Free Software Developer

Advertisement

Besides already mentioned options. Debian! Easy to install and has a massive repository of packages.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Besides already mentioned options. Debian! Easy to install and has a massive repository of packages.

Yes, Debian is great. Unfortunately, to be just in neighbourhood of somewhat updated (kernel-wise, especially), you have to install the "testing" version, which is not for newcomers.

That said, I would also recommend Ubuntu BUT with a different desktop enviroment than Unity (the default). My preferred choice is currently Xubuntu 12.10.

For easy transition, Xubuntu (comes with XFCE) is very similar to what regular users call a normal desktop enviroment (elderly Windows) and use fewer resources than Ubuntu or Kubuntu (fancy KDE desktop enviroment, although not my taste).

I started years ago out with a mixture of *buntu/Debian, openSUSE, Fedora (also a good choice) and sometimes Arch, and I have yet to see something as well supported and updated as *buntu, although IMHO I would call the default distro/DE since 12.04 experimental (yes, I am looking at you, Unity).

Yes, you have to fiddle a little around in the console from time to time, but mostly things work out of the box. And anyways, once you get used to the console/bash and the "basic inner workings" of Linux, it is really not that big a deal and makes many things easier than with GUI's.

Also, be aware of how well supported your peripheral hardware (anything connected via usb) is, because the cheaper (unsupported) and primarily-Windows-supported stuff can easily take some time and skill (www and the large userbase is good here) to setup.

Linux Mint is Ubuntu is Debian...

I do not know many Linux commands nor have used it's terminal in quite a while so I'd like to learn some of that too.

Just to make it clear: for a lot of stuff you don't need the terminal (well, in the popular distros at least). I lost the count of times when somebody asks for help and everybody replies with terminal commands when it isn't needed at all. Probably it's easier to copypaste some cryptic text without giving any explanation than to guide somebody through the GUI.

And yeah, beware of hardware support, that's Linux's biggest issue. Since it isn't the defacto standard OS *coughwindowscough* driver support is less than stellar for anything not following a standard protocol. The situation is getting better over time but it's still horrible, so make sure your hardware is well supported (when it comes to video cards Nvidia is pretty much the only sane option on Linux, by the way).

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

This topic is closed to new replies.

Advertisement