This is for everyone who is just getting started with Linux, and is looking for guidance, in particular the recent influx of new Linux users caused by the Windows 10 release. I will try to link relevant and useful guides, and to supplement those with my own writing and knowledge. Keep in mind, I am not a robot; If you notice a problem, speak up, and I will correct my error.
Before we begin, please keep the following in mind:
- Linux is not Windows!
- The Linux community is not paid. We are not your personal on-call tech support, but we are a community of people who like to help beginners. Be polite and respectful, and you can expect the same in return.
- You are responsible for your actions. If you install Linux on your primary computer without making backups, break it, and lose your data, that is on you. You as an adult need to make an informed decision about what level of risk is acceptable, and it is your responsibility to keep effective backups.
What is open source?
opensource.com has a nice writeup. Basically, it means anyone can modify and redistribute program logic for any open source project, with restrictions depending on license.
What is copyleft?
The GNU project has a good writeup of this topic. Basically, copyleft is a (legal) subversion of the copyright system. In spirit, it is similar to public domain, but is implemented much differently, namely in the sense of actually enforcing user freedoms by legal means.
What is Linux?
Linux is a kernel. Linux also commonly refers to distributions based on the GNU/Linux operating system, or the GNU/Linux operating system itself. Unless talking in the context of development, it is acceptable to refer to GNU/Linux or derivatives as simply Linux, but you should know the difference.
What is GNU/Linux?
The Debian project has a nice writeup about this.
What is a distro?
HowToGeek has a good writeup about this.
Do I need to be a programmer to use Linux?
Nope! It helps though, especially if you are using a developer-centric distro, such as Archlinux. Users of "beginner-friendly" distros such as Ubuntu or Mint should not need to worry about it at all though.
Do I need to know the shell?
Nope! But it helps, and it's easy to get started! Check out this guide for more information.
What distro should I use?
This will be covered in a later section...
What distro do you use?
I use Archlinux. I do not recommend Arch to beginners, but I see this question a lot. Also, since most distros include a GUI, while Arch does not, I will note that I use i3 as my Desktop Environment. I also do not recommend i3 to beginners.
What is a desktop environment (DE)?
Check out the ArchWiki page on the subject.
Can I run Microsoft Office on Linux?
Sort of. WINE allows you to run some windows programs on Linux. Some older versions of office will run, but not particularly well. I strongly suggest using LibreOffice over MSOffice via WINE.
Can I still use my Windows files on Linux?
In general, yes. Microsoft NTFS, exFAT, and FAT32 formatted hard drives and flash drives are all usable via Linux. LibreOffice has strong support for MS Office documents, and most other files have native viewers or editors for Linux.
Things to know
You don't need to know everything in here, but you will likely find this information helpful when selecting and using a Linux.
To those switching from Windows or Mac, Package Management will be a new concept. On Linux system, packages can be installed in one of two ways:
Manually, by copying binary files, libraries, etc. to the correct location within your filesystem
Automatically, by using a prepackaged format, such as .deb or .rpm. The Windows equivalent would be .msi, and the Mac equivalent would be .pkg.
Most people will choose the second option, given the choice. The idea of a prepacked program format itself is not particularly new, as mentioned above. Windows has these in the form of .msi installers, and Mac has .pkg installers, which behave similarly. Linux has several ways to accomplish this functionality, the most popular being rpm and dpkg, using the rpm and deb package formats respectively. The vast majority of distros use one of those two.
What makes Linux unique is it's package managers, which manage the aforementioned packages. Examples of package managers include:
- aptitude (often accompanied by the apt-get front end)
A package manager lets you do something like this:
apt-get install firefox
In this case, the above would install Firefox. That is, apt-get will download the Firefox package, any other required software, then install all of it for you. Every time you update your system, updates to Firefox will also be installed automatically. This applies to every single software package on your Linux system, barring those installed by method 1 above. If you decide you don't want Firefox anymore, you just run:
apt-get remove firefox
This remove every file installed on your system by Firefox. No lingering program data, registry entries (Linux doesn't use a registry anyway), or any other unwanted trash.
Another useful ramification of package management is easy managing of shared-object libraries. Software on Linux is usually compiled using a process called dynamic linking. Let us for an example imaging we are installing thee different games on our system. All of these games use a software package called DirectY (yes, I am poking fun at DirectX). On a Windows system, each game would install it's own copy of DirectY, wasting disk space and CPU time. On a Linux system, all three games would use the same install of DirectY, which would be installed automatically by your package manager when you installed the first game.
The benefit to the end user of using this method is faster install times, and drastically reduced disk usage. Now you can go ahead and forget the previous paragraph, you don't need to remember all that for everyday use, after all your package manager does it all for you in the background!
For those who do not like to install, update, and remove software by typing into a shell, most distros also ship with a GUI package manager of some kind. For Ubuntu, this is the Ubuntu Software Center. For Debian, this is usually Synaptic. Anyone who has used an app store before will likely find the experience very familiar, although everything is usually free (technically, the Ubuntu Software Center does have paid apps now, but they are a minority).
Of partitions and filesystems
While knowledge of partitions and filesystems is not required for daily usage, it will make dual booting with Windows more painless, and make troubleshooting much easier.
A disk (for the rest of the article, hard disk will refer to any directly attached block device, including HDDs, SSDs, flash drives, etc.) is what is called a block device - a device which allows access to binary data stored on said device. A block device can contain other block devices, usually a disk will contain several partitions (on Windows, your C:\ drive is a partition, as is your "Recovery" drive (often D:\), if you have one). Each partition is also a block device. A filesystem is a program that tells the operating system how to access data on a block device, describing things like what data should be stored about a file (eg. name, length, owner, etc.), how files should be updated, how directories should be stored and organized, and so on.
Windows uses a filesystem called NTFS (New Technology File System). Linux supports many filesystems, including NTFS, although ext4 is most commonly used by most distros. This means Linux can usually read Windows partitions and disks, but not the other way around.
When dual booting, it is important to understand that partitions are very flexible. It is quite easy to resize or move both NTFS and ext4 partitions using both command line tools, and GUI tools such as gparted.
It is also important to understand that Linux uses a Hierarchal filesystem, where every file and folder exists below root (/), while on Windows, every disk is it's own separate "root" aggregated under the conceptual root "My Computer". On a Linux system, there is no "My Computer" analogy, since any disk can be mounted anywhere. For example, if you mount a partition to /home (the equivalent of C:\Users or C:\Documents and Settings), any data read or written to /home actually goes to that partition. Raw block devices, such as disks and partitions are located int he directory /dev, and usually begin with "sd". For example, your first disk is generally named /dev/sda, your second /dev/sdb, and so on. Partitions are indicated numerically, for example /dev/sda1 refers to the first partition on /dev/sda. While this is not a hard and fast rule, it will apply to 99% of end user configurations.
(post is too long, see the comments for the rest...)