linux intro

Linux: It's freely distributed implementaion of unix like kernel. Linux is just a kernel, not an operating system (OS). Unix was an OS developed at Bell Labs. Many UNIX like OS were developed (like Solaris, FreeBSD, Linux, etc) which conformed to IEEE POSIX specs. Linux took inspiration from UNIX, but didn't include any proprietery code from Bell Labs.

Brief history of Linux: Richard Stallman started Free Software Foundation (FSF) in 1985 to help develop GNU (GNU is not Unix) OS. It had a goal to develop an Open Source OS which could be installed on any computer hardware. A Unix-like operating system is very complex and includes a kernel, compilers, editors, text formatters, mail software, graphical interfaces, libraries, games and many other things. By 1990, almost all the components of GNU OS were written except the kernel.The kernel portion of GNU kept on getting delayed. Frustrated by the absence of a free open source OS, Linus Tarvolds, a young undergrad student developed a free open source kernel called Linux. This kernel could be used with other applications to create a full blown OS. GNU endorsed it and called it "GNU/Linux OS" which would have the Linux kernel and all GNU packages. They allowed anyone to download this GNU Linux system, and make their own GNU/Linux distribution by adding/removing/customizing stuff, as long as they followed guidelines put in place by GNU.

This should be your first link to find anything about GNU/Linux system => www.gnu.org

Very good doc for Linux is on tldp.org website: Good intro for novice: https://www.tldp.org/LDP/sag/html/index.html

To make GNU/Linux system, we need to install other software programs on it along with the kernel (Unix systems already came bundled together, so that end users didn't have to do the work). We can compile the Linux kernel, then install programs/utilies on it and make a system, however it's very cumbersome. Companies and people have put together "distributions" which contain not only kernel, but also many other programming tools and utilities (mostly GNU utilities). Most of Linux distro now come with X-window system, which is GUI instead of CLI. Terms Linux and Unix are used interchangeably, as almost all programs written for Unix will work on Linux, and most of the times, binary executable from Unix can be run directly on Linux.

Some well known Linux distro are as shown below. GNU/Linux doesn't endorse any of these as they contain proprietery code (or non open source code called blobs) in them. However all of these are developed from GNU/Linux project. The ones they endorse contain entirely open source code, but then those OS are difficult to handle as some critical hardware on your laptop may not have a open source binary for it, so 100% open source may not be an option.

1. SUSE: A German company. It maintains free version openSUSE, and a paid commercial version, SUSE Enterprise Linux, which is derived from openSUSE.

2. Red Hat: An American company. it maintains free version Fedora, and a paid commercial version, RHEL (Red Hat Enterprise Linux), which is derived from Fedora. CentOS and Mandriva Linux are Red Hat derivatives, that are free too. CentOS is pretty popular in enterprise as it's free, and works almost same as RHEL.

3. SLS (softLanding linux system): This was the oldest and earliest distro of Linux in 1992. It was very comprehensive, but short lived. It was not well maintained, so 2 new distro came out based off it:

  • Slackware in July, 1993. Slackware remained more Unix like, so is less popular than Debian
  • Debian in Dec, 1993. Debian became very popular. Almost all popular Linux distro are based off Debian.

Debian has a lot of derivatives as Linux Mint Debian Edition, Ubuntu, etc. Of these Ubuntu is most popular linux distro today, which itself has more derivatives sprung off it, as Kubuntu, Linux Mint, etc. Ubuntu is maintained by British compnay, Canonical Ltd, so it has financial/resources support system similar to Suse and RedHat. There are 1000's of Linux distro, and many of them are derivatives of derivatives of derivatives to power 6. But the core kernel comes from Linus Tarvolds Linux Kernel, and they all have similar shell, support unix cmds. They only differ in terms of look, feel, ease of use and what additional software/packages they come preinstalled with.

4. Misc: ArchLinux (and it's derivative Manjaro), Gentoo (and it's derivative Chromium OS), etc are many other distro, which are popular too.

 

Which Linux OS should you use?

Well, if you search on internet, you will find that Debian based distributions are among the most popular, as Ubuntu, Linux Mint, Debian, Elementary OS consistently get most page hits, as reported on distrowatch.com. Ubuntu is by far the OS with most support of all Linux OS. I've always installed it without any issues on a laptop running windows, as it has already been tried and tested on lots of laptops/desktops with differing configuration all over the world. Another Debian based distribution which is getting very popular is Raspbian OS for Raspberry Pi, which is the cheapest computer that you can make for under $10.

Fedora, CentOS and openSUSE are other popular distro based off non-Debian base. Linus Tarvolds himself uses Fedora, and considers Debian difficult to install and use. If you plan to use open source from RedHat, I would suggest using CentOS instead of Fedora, as CentOS is compiled from same source code as RHEL, and so is essentially a free version of RHEL. If you want a very light weight Linux distro (may be because you are using a very old laptop from 90's), PeeperMint, Lububtu, LinuxLite (all derivatives of Ubuntu) and TinyCore (sprung off from DSL=Damn Small Linux)  will serve well, but will require a lot of work to get internet, sound, graphics etc working.

So, to narrow it down, these should be your Linux options:

  1. Linux Mint: This is the most popular and most intuitive Linux OS for any newbie. It's based off ubuntu, but a more user friendly version of Ubuntu. This should be your first choice
  2. CentOS: This is a copy of RHEL, but I can't say how impressed I'm with it's functionality. It works for years without ever rebooting. It runs fast, you can install almost all software with ease. If you aren't really a newbie who has never heard of Linux, I would say try CentOS.
  3. Ubuntu: Ubuntu used to the first choice, but now a lot of it's derivatives are more popular. Apart from Linux Mint (), it has many other derivatives as Lubuntu (lighter version of Ubuntu), CentOS (copy of RHEL), OpenSuSE (support of SuSE, but not sure if they use same source code), Manjaro (more user friendly version of ArchLinux).

NOTE: documentation and help with any issues are the biggest challenges in adopting any OS, so go with these largest, most popular OS listed above. Going with any OS which doesn't have large user base is quickly get you frustarted, especially if you run into issues, and you can't find any support or answer.

Running Linux:

All linux distro are very small in size (compared to proprietary OS). They can can easily fit inside 16GB usb drive, so that means you can run any linux distro from usb pen drive. There are 2 ways to run Linux:

1. Installed on Hard Drive: This is where you install linux from usb pen drive or cd/dvd to your hard drive. Then on powerup, it starts running Linux.

2. Live Linux: This is live usb or live cd/dvd: here you do not install linux to your hard drive. Instead os runs from your pen drive without loading itself on hard drive. Anything you do on os is not written to anywhere on hard drive. There are again 2 options here: one is where nothing gets written in pen drive (i.e any files you write, etc are just written in volatile memory of computer, and not to permanent memory of usb, so anything new written is lost on taking powering down the system or taking usb out), and the other is where OS allows you to write new stuff permanently on usb drive, so that you can carry all new changes with you (aka persistent os). Ideally we would be looking for option 2 of option 2 (i.e os running from pen drive without installing on HD, but also allowing us to save files etc on usb)

The usb/cd/dvd option is very convenient as you do not have to install anything on your laptop. you can just keep running os from your flash drive, and take it with you anywhere. It's just like an extra software running on your machine, which is completely isolated from windows os. There are various options available to create bootable live usb/cd/dvd for linux os. I'go thru one such option.

Linux from Scratch:

So far, we downloaded binaries for Linux OS. If you want to build complete Linux OS from scratch (i.e from source files) for learning purpose, it's not too easy, but not impossible either. It may take couple of weekends. A very good website for that is => linuxfromscratch.org

Desktop Environment:

Each distro of Linux comes with it's own desktop environment (DE). DE is the GUI interface that you see on computer (icons, bars, etc). Without DE, you will have CLI, which is how unix computers in 70's used to be. Early 80's brought DE to computers.

DE is a bundle of programs running on top of OS, which share a common GUI, sometimes described as a graphical shell.  Desktop GUIs help the user to easily access and edit files. However, they usually do not provide access to all of the features found in the underlying operating system. Instead, the traditional CLI is still used when full control over the operating system is required.

In X window system (any Linux/Unix like system uses this), a desktop environment typically consists of several separate components, including a window manager (such as Mutter or KWin), a file manager (such as Files or Dolphin), a set of graphical themes, together with toolkits (such as GTK+ and Qt) and libraries for managing the desktop. All these individual modules can be exchanged and independently configured to suit users, but most desktop environments provide a default configuration that works with minimal user setup. KDE and Gnome were 2 most popular DE that came about in late 90's. Most popular linux distro use KDE or GNOME2, though lots of others have come up now. KDE Plasma Desktop is latest DE from KDE which is very powerful, and is the default on OpenSuse, Kububtu, etc. GNOME2 is the default on SuSE, RHEL, Fedora, Debian and many other derivatives of those (incl Ubuntu, CentOS, etc). GNOME3 is latest DE from GNOME but due to complete redesign, it wasn't liked by many users, 2 DE sprung out of GNOME2 - Cinnamon and Mate. Ubuntu switched to it's own DE "Unity", but then switched to GNOME3 starting from version 17 of OS. See wiki for various DE.