Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
I've been a windows user since 1997, starting with 95 and moving on to NT. I currently dual boot between NT an 95. With amazing foresight :-) I had left a portion of my hard drive unpartitioned for future use and I would now like to install linux on it.
I have no previous experience with any other OS and dont know much about network or server administration, but I've been programming for Windows in C++ (mainly using Win32 API or MFC) for about five years. I also know a little bit about internet protocols, Winsock, some scripting languages and Java. My rough goals wrt Linux are the following:-
0. Learn the basics of how to use Linux commands.
1. Understand the X Windows system (from a programming point of view) before moving on to use a GUI library like GTK.
2. Be able to program for linux (including GUI programs).
3. Get a better conceptual understanding of the inner workings of a modern operating system like Linux (A task that is made difficult in Windows by the obfuscatory nature of that OS). Hopefully some of this understanding will carry over to MS Windows also.
4. Learn a bit of x86 assembly language. Learn something about how the OS interacts with various external devices.
A priority for me is to get a good C++ compiler that is also easy to use - preferably with a reasonably good GUI interface. I have made the assumption that there is no significant difference regarding the different distributions regarding the compiler isssue.
After reading reviews of various distro's, my tentative plan is to get both Mandrake and Slackware. I would start out with installing mandrake, but once I learn how to use some basic Linux commands - move to Slackware.
Any further advice will be gratefully accepted.
PC with MSI k7T motherboard with Athlon 866 processor.
128 Mb RAM
ATI rage 128 pro graphics card
Cable internet access via network card and Modem.
From what you are requesting, the disto with the largest printed documentation at this time is Suse 9.1 Professional. It is also on par with Mandrake 10 Pro in ease of use. Suse is cheaper, and from my experience more tested/stable across the board. Both are excellent to start out with. Mandrake's manual is kind of thin though for what you are looking at learning. I have purchased both of them, among others(gentoo/slackware/debian/etc).
And you can move to slackware or debian or whichever after you get a grasp on some of the basics from the previous listed distro's. There is lots of documentation online in that regard.
Don't worry about the compiler. All recent release distributions ship/have stable compilers. The one's to avoid are older distributions like RedHat 8.0 with broken compiler's. You will have more C++ programming software/compilers than you'll know what the hell to do with. You're safe there. Good luck.
When I tried out SuSE (for got what version it was, maybe 8 or something) it didn't come with the KDevelop IDE. So make sure the new SuSE has that if you want an IDE, although I just open up a text editor and a console now.
You should get Suse 9.1 Pro and Slackware. Suse has a lot of development programs, more then you will ever need, greate documentation (i like the helpcenter) and it is easy to use. Use it a little then move to Slackware. If Slackware doesn't have something Suse has just copy the rpm from your Suse DVD (or CD) and do rpm2tgz . It works for me (well not always). For programming i just use vi + gcc .
Hmm, hard to say really. Most of what you need is going to require you go buy some books, and after that about any installation will do.
For now I would suggest starting with getting to know the commands, in which case any CD based distro should work just fine.
Mardrake Live, Fedora, etc... as well as any HD based distro but the CD is quicker to get running.
After you get comfortable witht hat, then look into doing a gentoo level 1 or level 2 install. This will give you a little glimpse into the linux OS as you basically
will download and compile your own kernel and and some apps, if you choose level 1, you will also do boot strapping. Of course the downside to this is when you spend hours installing an OS and it flips out on you with something like "DEVFS not found, you really need to have DEVFS installed", and you must start over.
But there is no quicker way for ahuman to lern than to make a mistake, and correct that mistake, so....
I'd recommend Fedora. I was very similar to you, been a Windows developer for years, wanted to try Linux and learn to code for it etc. In my case I was a Delphi developer, but the rest is pretty much the same. So, here is some advice:
* Stick to Fedora or SuSE to start with, as these are I think the most polished and easiest distros right now. Fedora focusses on GNOME, SuSE on KDE, so quite a lot of people choose their distro based on their preferred desktop. You can try slackware later if you want, but you'll have a whole ton to learn even when using a very easy to use distro so take it easy.
* If you want to learn about operating systems, how Windows and Linux work internally, assembly language etc you could do worse than take a look at the Wine project. As it bridges the Win32 and Linux worlds, and reimplements Win32 in terms of the equivalent Linux APIs, this could be a good resource (confession: I'm a Wine developer )
* GTK+ with the GTKmm bindings are good. I think you'll prefer them to MFC. Qt is also good from a developer perspective, though I personally prefer the look and feel of GTK apps on my desktop so I tend to write GTK based software.
gtkmm is here http://gtkmm.org/ - the documentation is not complete but the bindings are a very close match to the original API, which you can find at gtk.org, "porting" documentation is a good way to contribute to this project if you want to.
* On Linux the de facto compiler is GCC, which can compile C++ quite nicely. Unlike on Windows, the compiler is not tied to the IDE in use. In fact developer tools are generally far more interoperable than on Windows. No matter what environment you use to code in, you will be compiling C++ using GCC/G++
* IDEs are not a strong point on Linux. Try learning emacs or vim, and you won't regret it - this is what nearly everybody else does. I use emacs even on Windows these days. What you lose in terms of things like integrated help/gui designer, you gain in having an environment honed for over 20 years for the purposes of editing code. It makes all the difference.
* Glade is the GTK UI designer. It generates XML files you load at runtime using libglade (or libglademm). There is a better (newer) Glade-inspired app floating around, written in Python, but I don't remember what it's called. Talk to jdahlin on GIMPnet IRC and he'll tell you where to find it...
Thank you all for your response. Based on these responses and additional reading it seems that I should go with either SUSE or Fedora rather than Mandrake as their documentation is more comprehensive and they have been around longer to mature. As for Slackware or Gentoo (thanks WhiteChedda), I can thankfully :-) make that decision at a later stage.
Outlining the two options:-
A. SUSE + KDE (+KDevelop)
B. Fedora + GNOME (+Anjuta / variety of tools)
Summary of deciding points:-
1. KDE written using QT, GNOME using GTK
2. So cant fiddle with KDE source without QT and GNOME without GTK.
3. KDevelop makes life easier for QT users.
4. But I can still use either GTK or QT to write apps on either desktop.
5. QT is more C++ oriented / GTK written in C.
6. But gtkmm provides C++ wrapper around GTK.
7. KDevelop is supposedly a more mature IDE than Anjuta.
8. SUSE documentation is better organized, KDE interface is better organized.
9. Fedora may have some Redhat -- Fedora transition issues.
(2) is not an issue at this stage. So based on the above I would go with SUSE even if I decide to use GTK/gtkmm. Moreover I liked the KDE screenshots :-).
In any case, at some point I have to stop thinking and take the plunge. Thanks, Thoreau, for the compiler and documentation tips, and many thanks, mhearn, for your suggestions. I do plan to check out Wine.
By the way I found this article in passing: GNOME vs KDE >:->
(Some of the language is quite unwashed so beware if you are easily offended)
It does not matter what Linux distribution you start with because the documentation is the same for as many other distributions. If you find a documentation for Redhat and you are using Mandrake, several of the commands and file paths will be the same. Also you do not have pay for Linux, though paying them helps the distribution put together more packages and test them for the next version. I would not say that SUSE, Fedora, and many others are mature because they use the same software as other distributions.
I like KDE cuz of the snappy windows. It's very tweakble too which I like. My window buttons are close, then a few spacer, then sticky, minimize, maximize. Other than that, I like GNOME's look and simplicity.
This is a great thread. Especially the KDE vs GNOME article. Great find emeskay. I just (yesterday) started using GNOME seriously. In the past, I had run it occasionally for about 10 minutes at a time before switching back to KDE or enlightenment. For some reason (possibly that I'm using a laptop now) the simplicity of GNOME has totally captivated me. I will be using it exclusively on my laptop--that is until I find a way to add a different session type in the blasted KDM in version 3.2. (I just compiled and installed Fluxbox 9.10.) It was never any trouble in the older version of KDE, just simply go to the login manager and type in the command in the appropriate box for the new window manager you installed. Anyway, great thread, and good luck emeskay.
Hey, just wanted to add my opinion. I'm a Comp. Sci student but first installed Mandrake a few years before my degree started. I've used every release since 9.0 and have alternated between buying the PowerPacks and just downloading the isos. Mandrake is definately a breeze to install and use, and lets me get on with learing whichever thing's on my mind on any given day, eg linux configuration&kernel recompiling, Apache+PHP server, whatever. The PowerPacks have been worth it to show support and for the non-free drivers and apps, but the downloaded versions definately arent a hassle to set up either. All the goodness of RedHat's RPMs, dependancy resolving of Suse/Slackware, no problems at all.
Only now am I starting to consider a source-based distro like Slack, now I've got nothing left to mess with/break in Mandrake (and now I have broadband of course)
Mandrake is definately a great newbie and everyday easy to use linux distro, for any task.