What is Linux?

Linux is a UNIX® clone OS based on MINIX, created in 1991 by Linus Torvalds from the University of Helsinki. Torvalds controls all changes and releases of the Linux kernel.

For close to three decades, Linux has been one of the most commonly used and most reliable OSs for servers in the market, no matter what paid third-party reports that are plaguing the internet indicate.

Most Linux distributions include a collection of programs that run on the Linux kernel like X, KDE, GNOME, Cinnamon, Xfce, LXQt, Mate or other desktop environments as well as LibreOffice and other office or home utilities. Under the Linux name, you can get RHEL (paid subscription, enterprise licensing), Fedora (originally based on RHEL), Oracle (based on RHEL), Debian, Ubuntu (based on Debian), Mint (based on Ubuntu), openSUSE (forked from SUSE), Slackware (based on the now-defunct Softlanding Linux System), Arch Linux (inspired by Slackware) and many others. For more information on distros and how popular they are, visit the DisroWatch website.

When Linux became popular (c. 1995-99), you could buy disks for any distribution (distro) from the developers or third-party vendors. Nowadays you would most likely download the distro of your choice as an .ISO and copy (dd) it to USB drive (/dev/sdb1) making sure you have selected the correct sdbx.

          
          dd if=linux_image.iso of=/dev/sdb1
        

Installing Linux:

Before trying to install Linux, get a full inventory of what your hardware. In the past, you might have had to help the installer recognize the hardware and/or fully rewrite the configuration (config) files. Nowadays installer shipped with the distro takes care of most the configuration.

Boot from the USB drive and sit back. The only thing you would have to decide is if you want to format the whole drive or share it with another OS as well as entering your credentials (root access) and network information (802.11 if needed).

Depending on the distro, you might need to update your installation right away. If the distro is based on Debian and it has apt as in the case of Ubuntu and its derivatives like Xubuntu (my current installation, which I surprisingly like due to its simplicity and low memory consumption), you might want to run the following commands on the console as superuser (sudo -i) for root access.

          
          apt-get update &&                  # to update repository list
          apt-get upgrade -y &&              # to upgrade local packages
          apt-get autoclean -y &&            # to clean leftover packages
          apt-get autoremove -y &&           # to remove leftover packages
          apt-get purge -y &&                # to purge old packages
          reboot -n                          # to reboot machine now
        

The latter runs multiple commands as a single statement — one after another using the && (and) operator and then reboot without confirmation using the -y (yes) attribute. Of course if you do not need to reboot exclude the last && operator and the reboot -n command. I would recommend doing the latter on a daily basis to make sure your system has the most up-to-date packages and to avoid security risks.

You can also install packages using apt-get calling the correct package name.

          
          apt-get install <package_name>
          
          apt-get install -y build-essential # compiler collection from GNU
          apt-get install -y ddgr            # DuckDuckGo via command line
          apt-get install -y dosbox          # DOS emulator for games and applications
          apt-get install -y git             # version control system
          apt-get install -y lynx            # text-only web browser
          apt-get install -y nano            # command line text editor
          apt-get install -y nasm            # assembly language
          apt-get install -y neofetch        # system information tool
          apt-get install -y pip             # package installer for Python
          apt-get install -y python3         # language that we must all learn
          apt-get install -y sqlite3         # relational database with no GUI
          apt-get install -y tidy            # utility to tidy up HTML code
          apt-get install -y whois           # access to the `whois` database (domain registration)
        

If you do not want the system to ask you for confirmation, you can include -y (yes) attribute, before the name of the package.

          
          apt-get install -y <package_name>
          
          apt-get install -y build-essential
        

If you are interested in installing multiple packages at the same time, you would also need to use the double ampersand operator (&&) after each call. Note the latter can be written as a single statement.

          
          apt-get install -y build-essential &&
          apt-get install -y ddgr &&
          apt-get install -y dosbox &&
          apt-get install -y git &&
          apt-get install -y lynx &&
          apt-get install -y nano &&
          apt-get install -y nasm &&
          apt-get install -y neofetch &&
          apt-get install -y pip &&
          apt-get install -y python3 &&
          apt-get install -y sqlite3 &&
          apt-get install -y tidy &&
          apt-get install -y whois
        

Aside from apt, another common package manager that most distros can use is snap, which is developed by Canonical.

          
          snap install bottom                # memory management
        

For documentation on how to use apt, snap or other program, refer to the man (manual) page for each program.

          
          man man                            # manual for program `man`
        

Note that I started playing with Red Hat Linux 5.2 (11/1998) and then 6.0 with GNOME (10/1999), but most of my experience since 2011 has been with Ubuntu distros, developed by Canonical and based on Debian. Therefore most of what I cover in this page is related to Ubuntu distros. I used to like KDE (both on Linux and FreeBSD), but I no longer do after version 3 (sorry, but no more Kubuntu for me). I have also played with Unity (Ubuntu), GNOME (Ubuntu GNOME), LXQt (Lubuntu), Cinnamon (Mint & Ubuntu Cinnamon) and now Xcfe (Xubuntu).

Single-Board Computers:

Some vendors offer single-board computer (SBC) units. For example, the Raspberry Pi Foundation released its Raspberry Pi 1 Model A in 02/2012. After several generations with a price tag under $50, several projects have used Raspberry Pi hardware.

Windows Subsystem for Linux (WSL):

Microsoft decided in 2016 to incorporate a subsystem based on Ubuntu in Windows. Part of this decision is the reason why Microsoft bought Github and even developed a copy of apt named winget, which searches for packages similarly to apt or rather apt-get as used by Ubuntu. Personally I prefer to use Chocolatey (choco) since winget does not get as many packages and also returns a list of applications to be upgraded (winget upgrade) when already done by Chocolatey.