Babbies first Linux
- 1 Installation
- 2 Desktop operating systems
- 3 Specialist distributions
- 4 Linux Crash Course
- 5 Useful links regarding command-line
- 6 Useful Links
Installing a distribution can be boiled down to a few easy steps.
- Determine what distribution you want. Maybe people freeze up on step one. The solution is simple.
- Download the correct ISO, making sure to pick the proper architecture for your CPU.
- (Optional) Verify the integrity of the download if a checksum is provided.
- (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.
- (Optional) Backup your system.
- 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
- Another method involves the
ddcommand 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
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.
- 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.
- 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.
|Developer(s)||The Debian Project|
|Desktop Environment(s)||GNOME (default), Plasma, XFCE, LXDE, MATE, Cinnamon and others|
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.
|Package Manager||aptitude (dkpg)|
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.
|Developer(s)||Linux Mint Developers|
|Desktop Environment(s)||Cinnamon, MATE, XFCE|
|Package Manager||aptitude (dkpg)|
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
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.
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. 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.
|Desktop Environment(s)||KDE (default), GNOME, XFCE|
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.
|Developer(s)||Arch Linux Developers|
|Desktop Environment(s)||User choice|
- 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|
|Desktop Environment(s)||XFCE, Plasma, GNOME|
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.
Distributions that do not fit inside a category will be added here until an appropriate category is made.
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 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 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.
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.
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.
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:
DownArrow- Scroll through typed commands
Shift+PageDown- Scroll up or down through shell output
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-completionpackage 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
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 -aLists "hidden" files and directories also. Hidden files are preceded with a full stop.
ls -lLists further information about the files, including size, modification date, owner and permissions.
ls -tList by modification date, with the most recently modified files at the top.
cp- Copy a file
cp -rDescend into directories (recursively copy all directory contents).
mv- Move or rename a file.
rm- Delete a file.
rm -rDelete 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
subut uses your own password instead. Lets you configure access in
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 serviceStart a service.
systemctl stop serviceStop 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.
- 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
- 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.