Basics of Linux by Tietun
Yes, Linux is free, and most programs for it are free. Some games and e-books cost money.Copyright (C) 2013 Ville Rissanen.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
Why Linux?Linux is not just one operating system. Its a base on which Linux operating systems are built on. These are called distributions, "distros". Linux is the largest collaboration project in the history of computing. Having several different distributions running Linux has several advantages and disadvantages over other operating systems. By being developed by several projects simultaneously Linux can gather and adopt new innovations quickly. It also enables fast development of new and existing programs. The downside is that sometimes there is massive flame wars about non-free software and controversial features, this is a notorious for Debian and Linux kernel development, but sometimes can affect the whole community. Major shortcomings are lack of DirectX (OpenGL is technologically more advanced, but less popular.) and the lack of .exe program format. There is a similar files to .exe though. Major advantages is the amount of free software available and technologically more advanced innovations such as systemd, EXT4 and unrivaled malware security. And of course the freedom to build an OS that is YOU, not something defined by a corporation for you. If you want to still have Windows on your computer, you can always set up a dual-boot by using GRUB2 bootloader, which is the default for most distros and they all offer automatic setup for dual-booting.
The BasicsUnlike other operating systems, Linux does not include any kind of graphical interface with it. It is completely console based if plainly installed. Most distributions of Linux offer a pre-installed desktop environment with it and you won't notice the following things going on in your computer. Let me explain how this actually works.
There is the console, it can execute and all commands you can do in a desktop environment, browse internet with console browser, edit texts and hax and so much more. But people need to see pictures and use graphical interfaces too. Here is where X11 steps in. X11 (also called simply "X") is a short for X Windows, developed by X.org. It is the "program" which acts as an internal server for any graphical interfaces installed on top of it. By itself X won't do anything but "run" at the background. You need a set of graphical interfaces which together form the "Desktop" as you see it. For reference the Apple OS X uses X Windows and therefore is named OS "X". Windows has its own window system and users are forced to use it.
When you got your X running, you need a Display Manager to manage the windows displayed on the desktop by defining their coordinates and sizes. There is several of these but KDM and GDM3 are the most popular, named after the Desktop environments (KDE and Gnome) they are developed for, but both run most of the available desktop environments.
Now, you have X and a Display Manager, then you can install the "Desktop Environment". There is 5 major choices out there.
Gnome - The most popular and user-friendly, eye-candy on demand and pretty good configuration. Very simple to learn to use.
Unity - Developed by Ubuntu, highly Gnome-like, but has taken influences from Android and Win8, some eye-candy, but less configurability than Gnome or KDE.
KDE - A bit kind of a mix of OS X and Windows, with a Linux twist. You can practically configure everything and it can be quite confusing for a novice to use, but can be also easy to adopt if moving from Windows. Has a large collection of widgets for install and many eye-candy features.
XFCE - The original lightweight desktop for older machines, but some people prefer the simplicity of it. A bit like old Win98 and Win95.
LXDE - The ultimate lightweight desktop, it's basically a barebones build for very small machines like Raspberry Pi and the like. Yet feels more modern than XFCE

Now the thing about Desktop Environments is not just the look of it, but the programs that are developed for it.
There is a plethora of programs developed for Desktop Environments. From Text Editors to Partition Managers to Browser to Bootloader configuration. But if you prefer one program over another, you can always install the said program developed for another desktop and install it and it will work flawlessly. The only thing that might change is the look of it, depending for which GUI language the program is written, but this can be fixed by installing inter-compatibility libraries. The major GUI languages are GTK+ (Gnome, Unity) and Qt4 (KDE).
You can always change your Desktop Environment without losing any data, it just requires installing the said environment and changing the boot script to boot the said environment.
An excellent documentation over .xinitrc boot script by ArchLinux wiki:
https://wiki.archlinux.org/index.php/XinitrcThis way you can boot into console without any desktop environment and load any particular one you fancy at the time simply by using commands:
xinit gnome, xinit kde, xinit xfce and so on...
(Personally I have Gnome, KDE and XFCE installed, with KDE being default.)
Most distros are based on few "Major"-distros:Debian, fully community developed. There is no company or corporation funding or controlling the development of Debian. They are very popular for servers, since the Stable version of Debian is one of the most stable operating systems in the world. Current stable build is Debian 6.0 Squeeze. Debian Stable if infamous for releasing new versions with "Its ready when its ready" -mentality, since the requirements are that the programs included in Stable cannot and will not crash.
There is also Debian Testing version, which includes cutting edge updates and programs, cutting edge is a program/library/something that hasn't had any new bug reports in 10 days straight. Current Testing build is Debian 7.0 Wheezy, this is frozen before shortly before new Stable release and then forked anew along the version of Stable from Unstable to develop the next version of Stable.
Debian Unstable (Permanently named Sid), differs from the previous two versions. It is a rolling release, which means there is no need to "upgrade" your operating system ever to a newer version, but the updates are available every 6 hours and that way the operating system stays up to date, updated one bit at a time. Unstable includes bleeding edge programs, which are programs that do mostly work, but problems and bugs can arise. Unstable isn't horrible, unusable operating system, it just presents problems like a broken updates or bugs, which have workarounds and patches, but it often requires advanced Linux skills to keep it at 100% all of the time.
Fedora, Test-Bed for Red Hat Enterprise Linux. Is a community project financially backed by Red Hat, which produces enterprise Linux solutions for payment. They develop a paid Linux version for factory SAP systems, massive office desktop operating system bases and much more advanced technological stuff built on top of Linux base. Fedora is the test-bed for these new programs and features to be included in Red Hat Enterprise Linux, and often do include innovative technologies and programs which are cutting edge. There is a developer version available similar to Debian Unstable, but it's really meant only for developers and can bork your system without necessary precautions taken. The Fedora Project releases a new version every 6 months, and the operating system can be upgraded within the system so no worries about losing data on hard drive or stuff. The Fedora project and Red Hat are pushing all innovations upstream to make the innovations available to everyone and are the single most largest contributor to the Linux kernel.
ArchLinux The most popular "build from scratch" distribution that is based on minimalism and effeciency. Uses Pacman package manager to install programs from source (tar.xz files) so practically can install any Linux program that is open-source. Not recommended for new users.
Slackware oldest surviving Linux distribution (Debian is 3 months younger), I do not personally know many specifics, but it remains a strong niche distribution for those who take a liking to the mentality and usability of it. Not recommended for new users.So what are the differences between the distros?Well, it's a matter of principle. And software compability.
Debian uses .deb packaging to distribute programs, and it uses Apt-Get tool to unpack and install programs.
(Syntax for installing: "Sudo apt-get install (enter program name here)"
Fedora uses .rpm packaging to distribute programs, and it uses Yum tool to unpack and install programs.
(Syntax for installing: "Sudo yum install (enter program name here)"
Sudo, is the be-all tool of Linux. By executing anything with sudo in front will give you unlimited access to any files installed on the system, and therefore required for installing/removing programs. It will prompt for super-user (Also called root) password on the first time sudo is run on that console window. More on commands later.
The RPM packaging is the official standard for Linux, as decreed by the Linux foundation, but DEB is far more popular by merits of Ubuntu and Mint using the same format. This is a subject of constant debate.
The largest difference for normal users is between all distros is that Steam is currently officially supported on Ubuntu (And therefore on Mint), but workarounds for Debian and RPM based systems are available and all games work as intended because at the core, games just use Linux and OpenGL base and libraries which are included in all Linux distros.
To be fair, Ubuntu is the leading Linux platform programs are developed on, but most programs will eventually find their way upstream and there to other distributions.
In the end, both work very much alike and the only difference is the command or graphical interface they use.
The Newbie DistrosUbuntu, the 3rd most used OS in the world. New releases quarterly and is based on a Debian Unstable build. Can be upgraded seamlessly from previous version like Fedora. It revolutionized Linux by adding a corporate layer on top of Debian (Which most open-source fans dislike), but proved popular with its ease of use and offers of paid software and services like e-book store and games distributed through Steam and Ubuntu Software Center. Ubuntu is so far from Debian that some DEB packages for Ubuntu don't work on Debian and vice versa. There is workarounds for both ways, but the trend seems to favour Ubuntu as developing platform. That is called binary incompatibility and will probably lead to Ubuntu being branded as it's own OS in the Linux space with its own packages some day. Ubuntu comes in various flavours, which are based on the Desktop Environment they use: Ubuntu (Unity/Gnome), Kubuntu (KDE), Xubuntu (XFCE), Lubuntu (LXDE)
Linux Mint, a fork of Ubuntu. It is intended to be the most user-friendly operating system for migrating users from Windows or new computer users. Also offers a fork based directly on Debian. The abovementioned binary incompatibility applies here too. Ubuntu is Ubuntu and Debian is Debian. It's basically Ubuntu without the added hassle of free-software ideals and just offers a working Linux system with the basic set of non-free programs like Flash, Java, MP3- and DVD-codecs etc... Also has Mint KDE with KDE desktop as default.
Fedora was explained above, so OpenSUSE is just what Mint is for Debian, a bit more complicated than Mint, but uses the Fedora RPM packages and innovations. Haven't used this distro so I don't know too much about it.
Linux is a Command Line Interface."Graphical User Interfaces are overrated." ~ Linus TorvaldsYes, the Command Line can be annoying and hard to get used to at the start, but with time it will develop to a power tool that saves time and time is money. From what I gather, you have to browse the internet, download an installer and go through a labour of licenses and stuff to install programs on Windows. This is not true on Linux.
The before mentioned apt-get and yum do the installing for you! (Because of force of habit, I'll demonstrate using apt-get, but all commands can be used by just replacing that with yum.)
First, before any installing can be done, you must have root privileges so others won't derp your system.
That we can do by opening a console (Numerous emulators available, I prefer Guake for pleasing aesthetics and a decent hot-key system.)
Then you type "su" which is short for super-user. It will prompt for the root password, type that in.
Then you will notice that the console prompt changes from Name@Computer$ to Root@Computer$, which means the console will execute any commands without any restrictions.
Then we can get to the installing.
"apt-get install (insert name here, e.g. Firefox)" and it will download and install firefox, and any codecs/libraries it requires to run automagically, this is essentially a fire-and-forget system. You don't need to interact with installing any further.
"apt-get remove (insert name here)" removes the program, simple.
"apt-get update" updates repositories, the repositories are the servers all the programs are hosted on and it is the place you download the programs from. You may need to add additional repositories to have latest versions or some programs on your computer because the distribution either doesn't allow having such programs on their servers or the new versions haven't been approved yet.
"apt-get upgrade" reads all the repositories for updates for any installed programs and prompts you with (y/n) to install the updates.
Those are the basics you will need, the internet has many, many guides for newbie distros from where you can copy paste commands into the command line and have the basic set of programs ready for use. There is many graphical front-ends for these commands, most popular being Ubuntu Software Center, Synaptic, Apper, Muon and GDebi for Ubuntu/Mint/Debian and Yummer for Fedora/OpenSUSE
Ubuntu (works for Mint): http://www.noobslab.com/2012/10/important-thingstweaks-to-do-after.htmlhttp://www.techdrivein.com/2012/10/20-things-to-do-after-installing-ubuntu1210-quantal-quetzal.htmlFedora: http://ashhar24.wordpress.com/2013/03/22/top-things-to-do-after-installing-fedora-1817/http://linuxmotion.com/tutorials/87-fedora-18-post-installation-top-things-to-do-after-installing-fedora-18GamesOne of the weakpoints of Linux. Most Windows games will not run natively on Linux, but this can be compensated by using Wine (Windows Emulation Layer) and VirtualBox to actually install Windows inside Linux! This is necessary for me, because AutoCAD has no Linux candidates for 3D modeling and Wine doesn't run it smoothly enough. Naturally Windows inside VirtualBox will act like normal Windows installation and all programs will run like supposed to. The root of this problem is OS-specific languages like .NET and VisualBasic and the use of DirectX. Linux offers more advanced tools, but most existing developers refuse to learn these new languages and make the switch to Linux. GPL licenses are designed so that eventually Windows and OS X will be out-dated in the face of innovative open-source projects, but the way is long and there will be many lawsuits and debates. GPL is in practice a license that requires ANY code from it being also free and open-source. Windows and OS X have tried to use GPL code without making those parts of their OS open-source, but have been always exposed and forced to publish those components of their operating systems to the internet along with proper GPL documentation.
Wine is another story. It doesn't require buying/owning a Windows OS, but installing some games or software may require some tweaking. Here is listed all the programs Wine can run, and how well they perform. If tweaking is required it is described per program basis.
http://appdb.winehq.org/Developers' CornerLinux is the par-none operating system for developing "free" languages like Java, C, C++, Assembly, Python, Ruby, PHP, CSS, HTML5, Qt4 and GTK+. Python was exclusively developed for Linux and therefore has a special place in distributions like Debian. GNU GCC compiler collection is the largest compiler set there is and it understands almost every language. Java on Linux can be done with open-source OpenJDK kit with Hotspot JIT compiling (Also developed by Oracle) or the standard Oracle(Sun) Java. This comes at the price of abandoning Windows programming languages like C# and .NET.
This fact is acknowledged by the industry and almost every IDE and compiler is also available to Linux, including, but not limited to:
IDEs: NetBeans, Eclipse, Code::Blocks.
Compilers: Intel C/C++ compiler, MinGW compiler.
My ComputerMy main rig:
Architecture: AMD64 (x86_64)
OS: Debian Unstable using some Experimental repositories. (LibreOffice, Codices)
Display Manager: KDM
Desktop: KDE, Gnome, XFCE4
VirtualBox OS: Windows 7 Ultimate (For using AutoCAD, no 3D equivalent available for Linux)
Wine emulator: MS Office 2000 Pro, Skyrim, Audiosurf, Star Wars: The Old Republic, CS:GO, Warhammer 40k DOW series, Space Marine.
Raspberry Pi Remote File and Desktop Server:
Architecture: Armelv5
OS: Debian Unstable
Display Manager: Openbox
Desktop: XFCE4, LXDE
Server software: OpenSSH, FTP-server, LAMP-stack.
GNU Free Documentation Licensehttp://www.gnu.org/licenses/fdl.htmlP.S. Linux was invented and written by Linus Torvalds, a citizen of Finland, at the University of Helsinki. GOOOO FINLAND!