Babbies first Linux

From /tech/ Wiki
Jump to navigationJump to search
Tip: IG import. Information is out of date. Will begin cleanup


Installing a distribution can be boiled down to a few easy steps.

  1. Determine what distribution you want. Maybe people freeze up on step one. The solution is simple.
  2. Download the correct ISO, making sure to pick the proper architecture for your CPU.
  3. (Optional) Verify the integrity of the download if a checksum is provided.
  4. (Optional) Test it out in a virtual machine or with a liveUSB.
    • VirtualBox is recommended for beginners.
    • If you are already using a Linux distribtion, there's also kvm accessed from the virt-manager GUI.
  5. (Optional) Backup your system.
  6. Produce a bootable USB
    • Use the image tool recommended in your distribution's install notes to copy the ISO to your USB-drive and make it bootable. Note: There are many universal tools available, but they do not always work correctly for all distributions. Some of them include: UNetbootin, Pendrivelinux, LinuxLive USB Creator
    • Tip: UEFI systems may require "Secure Boot" to be disabled in the motherboard settings. For UEFI support your flash drive must be formatted with FAT-32 (also called vfat) filesystem.
    Another method involves the dd command and an ISO specifically crafted for USB drives or a "hybrid" CD/USB image. Most distributions will mention the type of ISO on their download page.
    Using the commands lsblk or fdisk -l (as exemplified bellow), find what [drive letter] is the letter of your removable device. Please note that it is the device (e.g. /dev/sdb), and not the partition number (e.g. /dev/sdb1).
    fdisk -l
    Warning: The dd command is also known as "disk destroyer" because it is very easy to annihilate the data on a device unintentionally. Make absolutely sure that of=/dev/sd[drive letter] is the correct device!
    Now use run dd to write the ISO to the device of choice.
    dd bs=4M if=[/path/to/distro.iso] of=/dev/sd[drive letter] status=progress
    Wrap your path in quotations if it contains spaces.
    Last, wait patiently until the command has executed.
  7. Boot the USB and install Linux following the graphical installer or the instructions provided by the distribution.

Desktop operating systems

Linux distributions can be grouped into distro families.

Debian Family


Debian GNU/Linux
Developer(s) The Debian Project
Init System Systemd
Desktop Environment(s) GNOME (default), Plasma, XFCE, LXDE, MATE, Cinnamon and others
Package Manager dkpg

Debian GNU/Linux is a reliable Linux distribution intended for both desktop and server use. It comes in three variants:

  • Stable - The production version that has a release cycle of two years. It is made by feature freezing testing for a few months as bugs are fixed and packages with too many bugs are removed; then the resulting system is released as stable. It is updated only if major security or usability fixes are incorporated. Much of its software will be outdated and won't get an update, but you can use backports. It is commonly used on servers.
  • Testing - The preview branch that will become the next stable. The packages included in this branch have had some testing in unstable, but they may not be fit for release yet. It contains newer packages than stable, but older than unstable. This branch is updated continually until it is feature frozen. It is commonly used on desktops.
  • Unstable - The active development version which is also called Sid. Packages are accepted without checking the distribution as a whole. This branch is usually run by developers who need the latest libraries and by those who prefer bleeding-edge software. It is not recommended unless you know what you're doing.

Devuan is a fork of Debian without Systemd.

Debian GNU/Hurd uses the GNU Hurd kernel instead of Linux.


Developer(s) Canonical
Init System Systemd
Desktop Environment(s) GNOME
Package Manager aptitude (dkpg)
Warning: Previous version of Ubuntu included spyware called the "Unity Amazon Lens" that was used to provide targeted advertisements within the operating system.

Ubuntu is a popular distribution based on Debian. Beginning Linux users commonly choose Ubuntu (or Linux Mint) as their first distribution due to its low learning curve and foolproof graphical installer. Ubuntu is well supported; a LTS (Long Term Support) version is released every two years and supported for five years. Regular versions are released every six months and come with bleeding-edge packages, but are only supported for nine months. There are several official flavors that are not commercially supported by Canonical. The most popular are:

  • Xubuntu uses the XFCE desktop environment and has a small memory footprint.
  • Kubuntu uses the KDE Plasma Desktop. It is much heavier on RAM, but has a nice user interface that comes with a lot of extra gadgets. Check out KDE neon for the more flagship KDE support.
  • Lubuntu uses the LXDE desktop environment. It is great for low power machines, due to its low memory usage.
    • LXLE is based on LXDE with a Windows-like GUI.
  • Ubuntu MATE uses the MATE desktop and is perfect for those who want a user interface similar to Ubuntu versions prior to 11.04.
  • Ubuntu Budgie uses the Budgie desktop environment.

Linux Mint

Linux Mint
Developer(s) Linux Mint Developers
Init System Systemd
Desktop Environment(s) Cinnamon, MATE, XFCE
Package Manager aptitude (dkpg)
Warning: In February 2016 the Linux Mint website, ISO downloads, and forum database were all compromised. After the incident, Debian developer Adrian Glaubitz questioned the overall quality of the distribution and the reliability of its developers.
Tip: Ubuntu Cinnamon may be a decent alternative to Mint.

Linux Mint is a common beginner's distribution based on Ubuntu LTS and by corollary Debian. Mint's default Cinnamon desktop is well polished and user friendly. Editions are available for the MATE and XFCE desktop environments.

An experimental release called LMDE is based on Debian.

Red Hat Family


Developer(s) CentOS Project
Init System Systemd
Desktop Environment(s) GNOME
Package Manager rpm

Main article: CentOS

CentOS is a server distribution closely related to Red Hat Enterprise Linux (RHEL). The project is sponsored by Red Hat, but technical support is provided by community volunteers. For more options you may add additional repositories such as EPEL.


Developer(s) Fedora Project
Init System Systemd
Desktop Environment(s) GNOME
Package Manager rpm

Fedora is a distribution sponsored by Red Hat that aims to be cutting edge; - it is used as a testing ground for packages later down-streamed to CentOS/RHEL. Its release cycle is six months and each version is supported for about a year. It is almost as user friendly as #Ubuntu, but with the advantage of more up to date packages and better upgrade between versions. However, its repositories are not nearly as large because it does not allow proprietary and patented software[1]. The repositories are more expansive than those found in Centos/RHEL.

Unsupported software can be installed via third-party COPR repositories. Netinstall is good for minimal installs because it lets you choose which packages you want and gets the latest versions. However, it is not recommended over a slow or unstable internet connection.

RPM Fusion is a popular third party repository for Fedora and other RHEL based distributions.

There are three officially supported editions:

  • Fedora Workstation Edition
  • Fedora Server Edition - if stability is paramount use CentOS/RHEL instead.
  • Fedora Cloud Edition

Community editions, supporting alternative desktop environments are called spins and there are several.


Developer(s) openSUSE Project
Init System Systemd
Desktop Environment(s) KDE (default), GNOME, XFCE
Package Manager zypper

openSUSE is a distribution designed for advanced and beginner users alike. One of the key draws of OpenSUSE is YaST (Yet another Setup Tool), a powerful control panel for system configuration during and after installation. YaST can be used graphically or in a TUI interface, useful for remote management.

OpenSUSE provides two versions with different release models:

  • OpenSUSE Leap is an LTS distribution based on commercial SUSE Linux Enterprise. Major Leap versions are supported for at least three years while minor versions for one year.
  • OpenSUSE Tumbleweed is a rolling release distribution that delivers stable packages automatically tested with OpenQA.

OpenSUSE hosts the Open Build Service which is a development platform that simplifies compilation of a single package for multiple distributions including Debian, RHEL, Fedora, Ubuntu and all SUSE versions.

Arch Family

Arch Linux

Arch Linux
Developer(s) Arch Linux Developers
Init System Systemd
Desktop Environment(s) User choice
Package Manager pacman

Arch Linux is a popular rolling release distribution. No graphical installer is provided. If you find the installation process daunting, consider EndeavourOS or Manjaro.

  • Extensive documentation is available at the Arch Linux Wiki. The wiki is relevant for other distributions.
  • Arch Linux boasts an absolutely massive community repository known as the AUR (Arch User Repository). AUR packages can be managed with an AUR helper such as yay, which doubles as a front-end for Arch Linux's default package manager: pacman.

Parabola GNU/Linux-libre is a distribution based on Arch Linux, but only includes free software. It also blacklists certain freely-licensed software such as Chromium and Firefox that haven't always followed the spirit of free software (Binary blobs in Chromium, Pocket in Firefox, etc).

ArchBang is a minimal Arch based distribution.


Developer(s) Manjaro Development Team
Init System Systemd
Desktop Environment(s) XFCE, Plasma, GNOME
Package Manager pacman

Manjaro is a distribution rising in popularity which combines the versatility of Arch Linux with the ease of use of a distribution like Linux Mint. Like Arch Linux, Manjaro is rolling release, but it does hold back packages for a testing period. It ships with an array of pre-installed software such as Steam and LibreOffice.

There are four official editions of Manjaro: XFCE, KDE, GNOME and "architect" as many unofficial community editions.

Having trouble accessing the website? Just travel back in time.


Gentoo is a source-based distribution for advanced users focused on customization and modularity. Gentoo's documentation is well-annotated and easy to follow. Gentoo is also renowned for its extensive community support on IRC and its forums. There are binary packages available in its package manager, which can be automatically fetched by default when available by modifying a setting in make.conf.

  • Funtoo is a Gentoo-based distribution that uses git to sync repositories. It can also be installed from the Gentoo LiveCD.
  • We would be remiss not to mention CloverOS GNU/Linux.

Independent distributions

Distributions that do not fit inside a category will be added here until an appropriate category is made.

Alpine Linux

Alpine Linux is a mostly GNU-free Linux distribution using musl-libc and busybox instead of your usual GNU utilities. It is primarily designed for "power users who appreciate security, simplicity and resource efficiency" and, as such, uses OpenRC, as well as PaX and grsecurity patches in the default kernel. All user space binaries are compiled as position-independent executables with stack-smashing protection, more commonly known as 'hardened'.


CRUX is a lightweight distribution aimed at experienced Linux users. It uses a "keep it simple" philosophy with BSD-style init scripts and tar.gz-based package system.


NixOS is an independently developed Linux distribution that aims to improve the state of the art in system configuration management. Built on top of the Nix package manager, it uses declarative configuration and allows reliable system upgrades. Two main branches are offered: current Stable release and Unstable following latest development.

Puppy Linux

Puppy is a distribution aimed at being lightweight, fast, easy and portable. Puppy Linux can be run entirely from RAM. It is meant to be booted from a CD or USB as opposed to being installed. Variations such as Racy Puppy exist.


Slackware is a Linux distribution created by Patrick Volkerding in 1993. Originally based on Softlanding Linux System, Slackware has been the basis for many other Linux distributions, most notably the first versions of SUSE Linux, and is the oldest currently being maintained. Slackware aims for design stability and simplicity and to be the most "Unix-like" Linux distribution. It makes as few modifications as possible to software packages from upstream and tries not to anticipate use cases or preclude user decisions. In contrast to most modern Linux distributions, Slackware provides no GUI installation procedure and no automatic dependency resolution of software packages. It uses plain text files and only a small set of shell scripts for configuration and administration. Without further modification it boots into a CLI environment.

There is no formal issue tracking system and no official procedure to become a code contributor or developer. The project does not maintain a public code repository. Bug reports and contributions, while being essential to the project, are managed in an informal way. All the final decisions about what is going to be included in a Slackware release strictly remain with Slackware's benevolent dictator for life, Patrick Volkerding.

Void Linux

Void Linux is a Linux distribution utilizing the xbps package manager. Although in some ways similar to Arch, it uses runit as its init instead of systemd or Gentoo's OpenRC. It also uses LibreSSL security library from OpenBSD and the availability of an x86_64-musl port with the musl C library.

Specialist distributions

Some distributions serve other purposes like scanning for malware, data forensics, penetration testing and more.

  • GParted Live is a live distribution aimed at helping users partition their disks.
  • iPredia is a Debian based distribution designed for i2p users. This has many i2p applications included such as Robert torrent client and iMule.
  • Kali is a Ubuntu-based distribution aimed at penetration testing.
Time to choose.

Linux Crash Course

The shell and terminal

Main article: Shell

The shell is a command interpreter. The default shell used in Linux is bash, the Bourne-Again Shell which is derived from the sh shell written by Steven Bourne of Bell Labs for Unix. The terminal is a thoughtless file from which data is read and written to. The term "terminal" has also come to mean the graphical program in which the shell is run, i.e. xterm or st.

To manage multiple user sessions on a single machine, Linux (and UNIX) use what is called a TeleTYpeWriter (TTY) for each user to interface with the kernel. Each tty is handled by its own special device file, located in the directory /dev. It also uses Pseudo Terminal Slave (pts) to handle other types of terminal interface, but this is beyond the scope of this guide.

You may be wondering what the difference between shell and TTY is. Shell is the command interpreter that runs everything you type in, and TTY is the connection that handles the data between Linux and the shell.

A good explanation of the above can be found here.

The shell uses files called stdout, stdin and stderr to handle text input and output to and from programs.

  • stdin - Standard Input - All your typed text input goes into programs through here.
  • stdout - Standard Output - All successful program output goes to here.
  • stderr - Standard Error - All error messages and problem codes go to here.

You should get familiar with man pages, which are essentially the manual, and will display help pages on almost all commands.

$ man command

Where command is replaced with whatever command you want help on. Press q to exit a manual page. Alternatively, most commands will allow you to add --help or just -h on the end to get their own personal help pages. Some commands use another form of documentation called info pages, accessed with the info command. If you just want to know what a command does in a sentence then run $ whatis command which prints a program's definition found at the top of its man page.

Every key pressed sends a character to the terminal and you can send different characters by holding down keys like [Ctrl] or [Alt]. This is how the shell can tell what key is pressed, and thus, allow shortcuts to be defined. Some of the more useful keyboard shortcuts are defined:

  • UpArrow or DownArrow - Scroll through typed commands
  • Shift+PageUp or Shift+PageDown - Scroll up or down through shell output
  • Home or End - Move to the start or end of a line, respectively
  • Tab - Autocomplete a file name, directory name or command name. May require the bash-completion package in some distributions.
  • Ctrl+c - End a running process
  • Ctrl+d - End-Of-File (EOF) character (usually ends a process or signifies the end of input data)
  • Ctrl+z - Send the currently running process to the background
  • Ctrl+l - Clear the screen, same as running the clear command

Common commands

  • pwd - Print Working Directory. Outputs the full path of the current directory.
  • cd - Change Directory. Used to switch to a different directory.
  • ls - List. Lists files and directories in the current directory.
    • ls -a Lists "hidden" files and directories also. Hidden files are preceded with a full stop.
    • ls -l Lists further information about the files, including size, modification date, owner and permissions.
    • ls -t List by modification date, with the most recently modified files at the top.
  • cp - Copy a file
    • cp -r Descend into directories (recursively copy all directory contents).
  • mv - Move or rename a file.
  • rm - Delete a file.
    • rm -r Delete directory contents. (Never rm -r /) Note: this won't work anymore anyway
  • chmod - Changes file permissions for the Owner, Group and Others, also known as World.
  • chown - Changes the owner of a file.
  • chgrp - Changes the group owner of a file.
  • date - Display or modify current date and time.
  • who - Displays a list of currently logged in users.
  • echo - Prints to stdout.
  • cat - Concatenates text to stdout.
  • less - View the contents of text files
  • grep - Searches for strings in a file or stdin.
  • su - Switch user. Defaults to root.
  • sudo - Similar to su but uses your own password instead. Lets you configure access in /etc/sudoers.
  • passwd - Change password. Defaults to current account.
  • rsync - Synchronizes files and directories. May not be available by default.
  • halt - halt the system
    • halt -p - also shut off the power
  • systemctl - Interface to systemd.
    • systemctl poweroff - Shutdown.
    • systemctl reboot - Reboot.
    • systemctl start service Start a service.
    • systemctl stop service Stop a service.
  • journalctl - Interface to systemd logging.

Some commands alias other commands. For instance ls is commonly aliased to ls -la. You can escape an alias by prepending \ to the command. The type command can reveal aliases. Running type type reveals that type is shell-builtin command. Builtin commands are just what they sound like - they represent part of the shell itself rather than external programs invoked by the shell.

Piping and redirection

Piping takes the stdout of the left program and connects it (i.e. pipes it) into stdin of the right program with the pipe operator.

For example:

  • Count number of words in helloworld.txt
$ cat helloworld.txt 

Redirection directs data in and out of files, i.e.:

  • Redirect stdout to file
$ echo "Hello world" > helloworld.txt
  • Redirect stdout to the end of a file
$ echo "world." >> hello.txt
  • Redirect a file to stdin
$ cat < helloworld.txt
  • Redirect stdout to another program
$ cat helloworld.txt | less

Useful links regarding command-line

  • Linux Command explains the shell, indispensable to users who want to take full advantage of GNU/Linux distributions.
  • Commandlinefu provides a fun experience while offering a lot of useful command-line gems making it a great site to explore and learn more about the command line.

Useful Links

  • Forbidden Items, Fedora Project