GraphQL is an open source query and data manipulation language for new or existing data. It was …read more
Aug 7, 2023
Getting Started with Linux
What is Linux?
Linux is an open-source operating system, which means its source code is freely available to the public. It was created in 1991 by Linus Torvalds while he was studying at the University of Helsinki. Unlike operating systems like Windows or macOS, Linux doesn’t belong to any company. Instead, it is developed by a global community of volunteers and organizations dedicated to its continuous improvement.
The core of Linux, simply known as the
kernel, is the part of the operating system that communicates directly with the computer’s hardware. Surrounding this kernel, there’s a variety of software and utilities that make up a complete Linux distribution.
It’s widely used in millions of servers and devices around the world, from web servers to supercomputers to smartwatches. Due to its stability, flexibility, and security, Linux is the preferred solution for many developers and hosting companies.
Why use it?
Freedom and Open Source: You can customize, modify, and distribute Linux as you wish, as long as you follow free software licenses. This provides great flexibility and allows users and organizations to tailor the system to their specific needs.
Security: Linux is renowned for being one of the most secure operating systems. Its user permissions and modular architecture make it less vulnerable to viruses and malware compared to other operating systems.
Cost: Most Linux distributions are free, meaning there are no licensing costs. Furthermore, many free software applications are available for Linux, potentially reducing overall software costs.
Versatility: It can be installed on a wide variety of hardware, from microcomputers to smartwatches to mobile phones.
Community: One of the major advantages of Linux is its community. There are forums, groups, and dedicated online communities where you can ask questions, learn, and collaborate on projects.
Frequent Updates: Since it’s maintained by a broad community of developers, updates and patches are released regularly, ensuring you always have access to the latest improvements and security fixes.
Resource Efficiency: Linux can be especially useful on older machines as it tends to be less resource-demanding compared to other operating systems.
Why not use it?
Despite the numerous benefits Linux can offer, there are certain circumstances or preferences that might make some users decide not to adopt it as their primary operating system:
Software Compatibility: While most popular applications have Linux versions or equivalent alternatives, there’s specific software, especially in the professional world (like Adobe Creative Suite), that doesn’t have native Linux support. Users who rely on these particular applications might find it inconvenient to switch to Linux.
Gaming: Although the situation has drastically improved in recent years with the introduction of Steam for Linux and Proton, there are still many AAA titles not available for Linux or that don’t run as efficiently as on Windows.
Learning Curve: While many Linux distributions are user-friendly, there might be a learning curve associated, especially if the user wishes to delve deep into system configuration or troubleshooting.
Hardware Support: While Linux supports a wide array of hardware, certain specific or newer pieces might not be immediately recognized or require additional setup. This situation has improved over time, but there are still minor exceptions.
Technical Support: While the Linux community is vast and generally very eager to help, some people prefer having official or direct technical support to turn to, something not all Linux distributions offer.
Interface and User Experience: Some users might be accustomed to the interface and experience of other operating systems and might not feel comfortable with the change. While Linux offers a variety of desktop environments, the change might not be to everyone’s liking.
Most Common Distributions and Their Difficulty Levels
Linux offers a variety of
distributions, colloquially known as
distros that adapt and customize the operating system according to different needs and target audiences. Below, we present five outstanding distributions, their difficulty levels, and typical uses:
- Difficulty: Easy
- Common Use: Desktop, servers (in its Server variant).
- Description: One of the most popular and beginner-friendly distributions. Ubuntu inherits Debian’s stability but with features more friendly to the end user. It is backed by Canonical, ensuring ongoing development and support.
2. Linux Mint
- Difficulty: Easy
- Common Use: Desktop.
- Description: Linux Mint is known for its simplicity and ease of use. Also based on Debian, it offers a more traditional experience for those looking for a smoother transition from other operating systems.
- Difficulty: Easy
- Common Use: Desktop.
- Description: elementaryOS stands out for its focus on design and usability. With its own desktop environment called Pantheon, it seeks to offer an aesthetically pleasing and simplified user experience, mimicking Mac OS.
- Difficulty: Intermediate to Advanced
- Common Use: Servers, embedded systems.
- Description: Debian is appreciated for its stability and serves as the foundation for many other distributions. Maintained by an active community, it has a conservative release cycle to ensure reliability.
5. Arch Linux
- Difficulty: Advanced
- Common Use: Desktop for advanced users.
- Description: Arch Linux is for users who wish to have full control over their system and are not afraid to face technical challenges. It offers cutting-edge software and a very active community. The installation process is a challenge in itself, not for the faint-hearted 😄
Choosing a Linux distribution depends on the user’s needs and experience. From systems optimized for the desktop to robust options for servers, there’s a
distro suitable for everyone. The world of Linux celebrates diversity and freedom of choice, allowing users to find or even create the perfect solution for their needs.
Downloading and Installing Ubuntu
Ubuntu is one of the most popular Linux distributions and is known for its ease of use, especially for beginners. Installing it is a straightforward process, akin to Windows. A short guide to the process:
Step 1: Download Ubuntu
- Go to the official Ubuntu site.
- Select the version of Ubuntu you wish to download. For most users, the latest LTS (Long Term Support) version is a recommended choice due to its stability and extended support.
- Download the Ubuntu ISO file.
Step 2: Create a Bootable USB with Balena Etcher
To install Ubuntu, you need to create a bootable USB if you don’t want to overwrite the current installation:
- Download and install Balena Etcher.
- Insert a USB (at least 4 GB) into your computer.
- Run Balena Etcher and click on
Flash from file. Select the Ubuntu ISO file downloaded earlier.
- Click on
Select targetand choose your USB.
- Click on
Flash!and wait for the process to finish.
Ubuntu allows us to run the operating system from the USB or from Windows without installing it, useful for testing it before going through with the installation. To do this, simply restart your computer with the USB inserted and select
Try Ubuntu from the menu.
If you want to install it, keep in mind that it will be necessary to format your PC’s hard drive, so it’s advisable to backup your files before proceeding. If you have free space on another partition or disk, you can install Ubuntu alongside your current operating system to keep your data.
Step 3: Configure the BIOS/UEFI
- Restart your computer and, while it’s booting, press the key to enter the BIOS or UEFI (often F2, F12, DEL, or ESC, depending on the manufacturer).
- Look for the
Startupsection and set the USB as the first boot option.
- Save and exit the settings.
Step 4: Install Ubuntu
- With the USB inserted, restart your computer. It should boot from the USB and show you the Ubuntu installation menu.
Install Ubuntufrom the menu.
- Follow the on-screen instructions: choose the language, type of installation (normal or minimal), and whether you wish to install updates or third-party software. This option will install additional drivers for your hardware, such as graphics cards and Wi-Fi, so it’s recommended to select it unless you’re against installing proprietary software.
- Decide how you want to install Ubuntu. You can choose to install it alongside another operating system (dual boot) or wipe the disk and dedicate it solely to Ubuntu.
- Continue following the on-screen instructions to select your time zone, keyboard layout, and create your user account.
- Once the installation completes, you’ll be prompted to restart the computer. Remove the USB and press Enter.
You should now have Ubuntu installed on your computer. The installation process is user-friendly and, in most cases, you should be able to follow it without any issues. However, it’s always a good idea to back up your data before installing a new operating system.
Desktop Environments and Graphics Servers
What is a desktop environment?
A desktop environment is a set of programs and libraries that provide a graphical interface for users. This environment includes windows, panels, menus, widgets, and everything you see and interact with on the screen when using Linux. It’s equivalent to what Windows or macOS provide as a visual experience, but in Linux, you have the freedom to choose from multiple environments.
Graphics Servers: X.org and Wayland
Graphics servers are essential for delivering Linux’s visual experience. They act as intermediaries between the graphic hardware and the software that displays content on the screen.
X.org (or simply X): This has been the standard graphic server for decades. It’s known for its flexibility and wide support but also has an older architecture criticized for being complex and less secure.
Wayland: Wayland is X’s modern successor. It offers a simpler, more efficient architecture with better integration with modern GPUs and improvements in security. While it’s not yet universal, many desktop environments are adopting Wayland as their default graphic server.
Popular desktop environments
GNOME: The default desktop environment for many popular distributions. Ubuntu uses a variant that displays a fixed sidebar by default among other minor changes. It focuses on simplicity and efficiency and has progressively adopted Wayland. Its design is modern and minimalist, offering a smooth and consistent experience.
KDE Plasma: KDE is known for its flexibility and customization. Plasma is its desktop environment, providing a feature-rich experience with numerous options and widgets. While traditionally it used X, it has also been working on Wayland compatibility.
XFCE: XFCE is a lightweight and fast desktop environment, ideal for older computers or those with limited resources. It offers a more traditional experience, inspired by the older GNOME 2 environments, but with a modern touch.
The beauty of Linux lies in its choice. You can opt for a modern, minimalist, or highly customizable visual experience, according to your preferences. This flexibility, combined with advancements in graphic servers, ensures that Linux remains an appealing option for a wide variety of users.
Pre-installed graphical interface programs in GNOME, KDE, and XFCE
When you install a Linux system with a specific desktop environment, you get a set of pre-installed applications. These applications vary depending on the desktop environment and are designed to integrate seamlessly with their respective interface.
Nautilus (Files): GNOME’s file manager. It allows you to browse, organize, and search for your files.
Web (Epiphany): GNOME’s web browser. It’s lightweight and integrated with the desktop.
Gedit: The default text editor. Simple yet powerful, ideal for taking notes or editing code.
Evolution: An email and calendar application that supports multiple accounts and calendars.
Rhythmbox: The default music player. You can organize and play your music, as well as listen to internet radio stations.
GNOME Photos: An application to view, organize, and edit your photos.
Dolphin: KDE’s file manager. Highly configurable, offering a range of powerful features.
Konqueror: A web browser and file manager, although Firefox or Chrome tend to be more popular alternatives in distributions that use KDE.
Kate: An advanced text editor with support for multiple tabs and syntax highlighting for programming.
KMail: Part of the Kontact suite, it’s KDE’s email client.
Amarok or Elisa: Music players with rich interfaces and numerous features.
Gwenview: An image viewer that also allows basic editing.
KOrganizer: Part of Kontact, it’s a calendar and planning application.
Thunar: XFCE’s file manager. While lighter than Nautilus or Dolphin, it still offers all the essential features you’d expect from a file manager.
Midori: Although not always installed by default, it’s a lightweight and fast web browser that integrates well with the XFCE environment.
Mousepad: XFCE’s text editor. It’s fast and straightforward, perfect for editing text files or quickly taking notes.
Parole: XFCE’s multimedia player. Designed to be lightweight and easy to use.
Ristretto: A fast and simple image viewer, perfect for viewing and browsing your photos.
Orage: Calendar and agenda that provides alerts and integrates with other programs.
Xfburn: A tool for burning CDs and DVDs. While optical drives are less common nowadays, Xfburn is useful for those who still need them.
Both GNOME and KDE offer a comprehensive set of graphical interface applications designed to meet users’ basic needs. The choice between the two often comes down to personal preferences regarding design and usability. If you’re new to Linux, I recommend trying out both to find out which one suits you better. Just like GNOME and KDE, XFCE provides a set of default applications that cater to users’ basic needs in a desktop environment. Its advantage is its lightness, making it ideal for older hardware or systems wishing to conserve resources. However, it doesn’t sacrifice functionality for speed and remains a very capable environment.
Introduction to the Terminal
What is the terminal?
terminal, also known as
command line, is an interface that allows users to interact with the operating system through written commands instead of using a graphical interface. It’s a powerful tool that offers great flexibility and control over the system.
What is it used for?
System administration: From the terminal, you can perform administrative tasks such as installing or uninstalling software, managing services, managing users, and more.
Programming and development: Developers often use the terminal to compile code, manage versions, interact with databases, among other tasks.
Navigation and file management: While there are graphical file managers, the terminal can be faster and more versatile for certain management tasks.
Learning and troubleshooting: It can provide detailed information about the system and is an essential tool for troubleshooting and debugging errors.
Types of Terminals
Terminal (gnome-terminal): It is the default terminal emulator in many GNOME desktop environments, like Ubuntu and Fedora. It’s user-friendly and comes with useful features like tabs, profiles, and customization.
Konsole: This is the terminal emulator for the KDE desktop environment. It offers features similar to gnome-terminal but is optimized for integration with KDE.
XFCE Terminal: Designed for the XFCE desktop environment, it’s lightweight and functional, ideal for systems with limited resources.
Terminator: An advanced terminal emulator that allows splitting its window into multiple terminals, useful for simultaneous monitoring and development.
Alacritty: A terminal emulator focused on simplicity and performance. It’s considered the fastest terminal due to its GPU rendering.
Tilix: A terminal emulator that allows splitting the window into vertical and horizontal panels. It’s especially useful for multitasking.
The terminal is an indispensable tool for any Linux user who wants to have full control over their system. Although it might seem intimidating at first, with practice and familiarity, it becomes a valuable ally that can make life more efficient and productive. Whether you’re using Linux for development, system administration, or just out of curiosity, mastering the terminal will open up a world of possibilities.
Basic Commands and Package Management in Ubuntu
Basic Linux Commands
Before diving into package management, it’s useful to know some fundamental commands that will allow you to navigate and work in the Linux terminal:
pwd: Displays the current directory you’re in.
ls: Lists the files and directories in the current directory.
cd [directory]: Changes to the specified directory.
mkdir [name]: Creates a new directory with the specified name.
rm [file]: Deletes the specified file.
rmdir [directory]: Deletes an empty directory. For directories with content, you can use
rm -r [directory].
man [command]: Displays the manual for the specified command, useful for getting details on how a command works.
echo [text]: Prints the specified text to the screen.
clear: Clears the terminal.
sudo [command]: Executes the specified command as a superuser. It’s a way to gain elevated permissions for operations that a regular user cannot perform, typically for administrative tasks.
su: Changes to the
rootuser or another user. If used without arguments, it will prompt you for the superuser password. To switch to another user, simply add the username after the command, like
cat [file]: Displays the content of the specified text file in the terminal.
nano [file]: Opens the specified file in the Nano text editor, a simple and user-friendly terminal-based editor.
cp [source_file] [destination_file]: Copies a file from source to destination.
mv [source_file] [destination_file]: Moves or renames a file or directory.
Package Management in Ubuntu
Ubuntu uses the
APT (Advanced Package Tool) system for package management. Here are some of the essential commands you’ll need to manage packages in Ubuntu:
sudo apt update: Updates the list of available packages and their versions, but doesn’t install or upgrade any packages.
sudo apt upgrade: Upgrades installed packages to their latest versions.
sudo apt install [package]: Installs the specified package.
sudo apt remove [package]: Uninstalls the specified package but keeps its configuration files.
sudo apt purge [package]: Uninstalls the specified package and also deletes its configuration files.
sudo apt autoremove: Removes packages that were installed as dependencies and are no longer needed.
sudo apt search [term]: Searches the repositories for a package matching the specified term.
sudo apt show [package]: Displays details of the specified package, such as its description, version, and dependencies.
Mastering the terminal and understanding package management is essential for a complete experience in Ubuntu in particular and Linux in general. Over time, these commands will become second nature and will allow you to keep your system up to date and customized to your needs. If you want to see a more comprehensive list of commands, there’s an article discussing it on my personal page (Spanish).
In the next chapter, we’ll delve deeper into the Linux system, learning about its architecture, how it’s organized, and how to configure it. We’ll also learn about users and permissions, essential concepts for understanding how Linux works.