“Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”.When I think about why I hadn't begun exploring the GNU/Linux space five, ten or even twenty years ago (yes, I'm old), I'm often reminded of a classic work by philosopher Eric Fromm from 1941: The Fear of Freedom. Fromm argues that individuals seek out authoritarian systems precisely in order to avoid the disorienting and potentially traumatic experience of actual freedom and the responsibilities that come along with it. It is much easier to let others tell you what to think and how to act than it is to think and act for oneself. Anyway, philosophical digressions aside, I've collected a fair number of resources on GNU/Linux since that first install, and thought I'd share some of them here to help orient others who are interested in exploring alternatives to the Microsoft/Apple digital duopoly. Below, you'll find resources on Linux distributions, installation, the command line, as well as how to set up a file server, a development server and conduct remote management. Feel free to leave your own recommendations in the comments!
There is a wide variety of GNU/Linux distributions to choose from in the wild. Wikipedia's list of Linux distributions reaches into the hundreds. DistroWatch lists even more. How-to Geek has a helpful article on what a distribution is and how they are different from one another. For beginners, it likely makes the most sense to choose from among those that are the most popular, since it will be easier to find answers to everyday questions.
- Distro Watch's Top Ten Major Distributions
- Linux.com's Top Seven Distros for 2014
- Tech Radar's 50 Top Distros for 2013
- ZDNet's Top 5 Distros from 2012
Once you've decided to check out a distribution or three, the next step is to install it. There are many options here too: 1) a full install to a specific machine (overwriting the current operating system), 2) a dual boot install that allows you to run a second operating system alongside your primary one on a given machine, 3) a virtual install that allows you to run a second, third, fourth, or fifth operating system on top of your primary one, 4) or even so-called live versions that boot from a CD or USB drive and which you don't install on your machine at all! All the necessary information should be available from the official website and related forums of the distribution(s) you've chosen to explore. For the present post, we'll take Ubuntu as an example:
- How to Burn the System Image to Disk
- How to Create a Bootable USB Stick from Windows
- Virtualbox Virtualization Guide
- Ubuntu Official Installation Guide
VirtualBox free software package. VirtualBox is an application that allows you to create a virtual environment on your host computer in which you can install a so-called guest operating system that runs on top of your host's system the same way any other software application would.
- The VirtualBox User Manual
- A VirtualBox Beginner's Tutorial
- How to Install Ubuntu on VirtualBox
- Build a Virtual Development Server with VirtualBox
- Build an Ubuntu LAMP Server with VirtualBox
Despite it's name, the command line terminal is the beginning, not the end! Finding your way around the command line can be intimidating at first, especially for those of us who have only ever used Windows Explorer or Mac Finder to navigate a computer's file system. But I guarantee that after a bit of experience you'll soon be asking yourself how you ever went without it! Would you rather copy and rename 300 pictures from your camera onto your computer one by one in a graphical interface, or with one relatively simple command from the terminal?
- Linux Command Line Book Tutorial
- The Command Line Crash Course (highly recommended!)
- Ryan's Linux Command Line Tutorial
- Bash Shell Command Line Index for Linux
- Command Line Reference
- Command Line Cheat Sheet
- Customize Your Command Line Prompt
Linux distributions are great for re-purposing old computers. Lots of people have old laptops or desktop machines gathering dust in the closet. These can easily be transformed into file and media servers for your home network.
- How to Make an Ubuntu File Server (highly recommended!)
- How to Set Up an FTP File Server on Ubuntu
- Ubuntu's Official Samba Server Setup Guide
LAMP Stack Development Server
A LAMP stack is a software bundle used for running services like web sites, databases and the like. LAMP stands for: Linux (operating system), Apache (web server), MYSQL (database server), and PHP (server side scripting language). Setting up a full fledged LAMP stack is actually ridiculously easy once you get the hang of it.
- How to Setup an Ubuntu Server LAMP Stack in VirtualBox
- Build Your Own Dev Server with VirtualBox
- How to Install a LAMP Stack on Ubuntu 12.04
- How to Install a LAMP Stack on Ubuntu 14.04
- How to Set Up a Home Server
Open SSH Server
Once you've set up a dedicated home server of some kind, you don't really want to have to keep it hooked up to a monitor, keyboard and mouse. You want to put it in a closet and forget about it, but you still need to be able to dial into it for updates or maintenance. And that's what the Open SSH Server is for. Basically, Open SSH allows for secure login to a remote machine over a given network.
- How to Install and Configure OpenSSH Server in Linux
- How to Use SSH to Connect to a Remote Server in Ubuntu
- Ubuntu's Official Open SSH Server Guide
Well, that's all folks! I hope you've found some of these resources helpful. As always, recommendations of your own favorite resources are welcome in the comments, as are suggestions, criticism and angry tirades!