Ubuntu 20.04 Essentials - Neil Smyth - E-Book

Ubuntu 20.04 Essentials E-Book

Neil Smyth

0,0
29,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Arguably one of the most highly regarded and widely used enterprise level operating systems available today is the Ubuntu 20.04 distribution. Not only is it considered to be among the most stable and reliable operating systems, it is also backed by the considerable resources and technical skills of Canonical, Ltd.


Ubuntu 20.04 Essentials is designed to provide detailed information on the installation, use and administration of the Ubuntu 20.04 distribution. For beginners, the book covers topics such as operating system installation, the basics of the GNOME desktop environment, configuring email and web servers and installing packages and system updates. Additional installation topics such as dual booting with Microsoft Windows are also covered, together with all important security topics such as configuring a firewall and user and group administration.


For the experienced user, topics such as remote desktop access, the Cockpit web interface, logical volume management (LVM), disk partitioning, swap management, KVM virtualization, Secure Shell (SSH), Linux Containers and file sharing using both Samba and NFS are covered in detail to provide a thorough overview of this enterprise class operating system.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 386

Veröffentlichungsjahr: 2020

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Ubuntu 20.04 Essentials

Ubuntu 20.04 Essentials

ISBN-13: 978-1-951442-05-7

© 2020 Neil Smyth / Payload Media, Inc. All Rights Reserved.

This book is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.

The content of this book is provided for informational purposes only. Neither the publisher nor the author offers any warranties or representation, express or implied, with regard to the accuracy of information contained in this book, nor do they accept any liability for any loss or damage arising from any errors or omissions.

This book contains trademarked terms that are used solely for editorial purposes and to the benefit of the respective trademark owner. The terms used within this book are not intended as infringement of any trademarks.

Rev: 1.0

Table of Contents

1. Introduction

1.1 Superuser Conventions

1.2 Opening a Terminal Window

1.3 Editing Files

1.4 Feedback

1.5 Errata

2. A Brief History of Linux

2.1 What exactly is Linux?

2.2 UNIX Origins

2.3 Who Created Linux?

2.4 The History of Ubuntu

2.5 What does the word “Ubuntu” Mean?

2.6 Summary

3. Installing Ubuntu on a Clean Disk Drive

3.1 Ubuntu Installation Options

3.2 Server vs. Desktop Editions

3.3 Obtaining the Ubuntu Installation Media

3.4 Writing the ISO Installation Image to a USB Drive

3.4.1 Linux

3.4.2 macOS

3.4.3 Windows

3.5 Booting from the Ubuntu USB Image

3.6 Installing Ubuntu

3.7 Accessing the Ubuntu Desktop

3.8 Installing Updates

3.9 Displaying Boot Messages

3.10 Summary

4. Installing Ubuntu with the Network Installer

4.1 Network Installer Advantages

4.2 Obtaining the Network Installer Image

4.3 Booting from the Installer Image

4.4 Performing the Installation

4.5 Disk Partitioning

4.6 Software Collection Selection

4.7 Installing Software Collections After System Setup

4.8 Summary

5. Dual Booting Ubuntu with Windows

5.1 Beginning the Ubuntu Installation

5.2 Booting Ubuntu for the First Time

5.3 Changing the Default Boot Option

5.4 Accessing the Windows Partition from the Command-line

5.5 Accessing the Windows Partition from the Desktop

5.6 Summary

6. Allocating Windows Disk Partitions to Ubuntu

6.1 Unmounting the Windows Partition

6.2 Deleting the Windows Partitions from the Disk

6.3 Formatting the Unallocated Disk Partition

6.4 Mounting the New Partition

6.5 Editing the Boot Menu

6.6 Using the GNOME Disks Utility

6.7 Summary

7. A Guided Tour of the GNOME 3 Desktop

7.1 Installing the GNOME Desktop

7.2 An Overview of the GNOME 3 Desktop

7.3 Launching Activities

7.4 Managing Windows

7.5 Using Workspaces

7.6 Calendar and Notifications

7.7 Desktop Settings

7.8 Customizing the Dash

7.9 Switching to Dark Mode

7.10 Installing Ubuntu Software

7.11 Beyond Basic Customization

7.12 Summary

8. An Overview of the Ubuntu Cockpit Web Interface

8.1 An Overview of Cockpit

8.2 Installing and Enabling Cockpit

8.3 Accessing Cockpit

8.4 Overview

8.5 Logs

8.6 Storage

8.7 Networking

8.8 Accounts

8.9 Services

8.10 Applications

8.11 Virtual Machines

8.12 Software Updates

8.13 Terminal

8.14 Connecting to Multiple Servers

8.15 Summary

9. Using the Bash Shell on Ubuntu

9.1 What is a Shell?

9.2 Gaining Access to the Shell

9.3 Entering Commands at the Prompt

9.4 Getting Information about a Command

9.5 Bash Command-line Editing

9.6 Working with the Shell History

9.7 Filename Shorthand

9.8 Filename and Path Completion

9.9 Input and Output Redirection

9.10 Working with Pipes in the Bash Shell

9.11 Configuring Aliases

9.12 Environment Variables

9.13 Writing Shell Scripts

9.14 Summary

10. Managing Ubuntu Users and Groups

10.1 User Management from the Command-line

10.2 User Management with Cockpit

10.3 User Management using the Settings App

10.4 Summary

11. Managing Ubuntu systemd Units

11.1 Understanding Ubuntu systemd Targets

11.2 Understanding Ubuntu systemd Services

11.3 Ubuntu systemd Target Descriptions

11.4 Identifying and Configuring the Default Target

11.5 Understanding systemd Units and Unit Types

11.6 Dynamically Changing the Current Target

11.7 Enabling, Disabling and Masking systemd Units

11.8 Working with systemd Units in Cockpit

11.9 Summary

12. Ubuntu Software Package Management and Updates

12.1 Repositories

12.2 Managing Repositories with Software & Updates

12.3 Managing Packages with APT

12.4 Performing Updates

12.5 Enabling Automatic Updates

12.6 Enabling Livepatch

12.7 Summary

13. Ubuntu Snap Package Management

13.1 Managing Software with Snap

13.2 Basic Snap Commands

13.3 Working with Snap Channels

13.4 Snap Refresh Schedule

13.5 Snap Services

13.6 Summary

14. Ubuntu Network Management

14.1 An Introduction to NetworkManager

14.2 Installing and Enabling NetworkManager

14.3 Basic nmcli Commands

14.4 Working with Connection Profiles

14.5 Interactive Editing

14.6 Configuring NetworkManager Permissions

14.7 Summary

15. Ubuntu Firewall Basics

15.1 Understanding Ports and Services

15.2 Securing Ports and Services

15.3 Ubuntu Services and iptables Rules

15.4 Well Known Ports and Services

15.5 Summary

16. Using gufw and ufw to Configure an Ubuntu Firewall

16.1 An Overview of gufw and ufw

16.2 Installing gufw on Ubuntu

16.3 Running and Enabling gufw

16.4 Creating a New Profile

16.5 Adding Preconfigured Firewall Rules

16.6 Adding Simple Firewall Rules

16.7 Adding Advanced Rules

16.8 Configuring the Firewall from the Command Line using ufw

16.9 Summary

17. Basic Ubuntu Firewall Configuration with firewalld

17.1 An Introduction to firewalld

17.1.1 Zones

17.1.2 Interfaces

17.1.3 Services

17.1.4 Ports

17.2 Checking firewalld Status

17.3 Configuring Firewall Rules with firewall-cmd

17.3.1 Identifying and Changing the Default Zone

17.3.2 Displaying Zone Information

17.3.3 Adding and Removing Zone Services

17.3.4 Working with Port-based Rules

17.3.5 Creating a New Zone

17.3.6 Changing Zone/Interface Assignments

17.3.7 Masquerading

17.3.8 Adding ICMP Rules

17.3.9 Implementing Port Forwarding

17.4 Managing firewalld using firewall-config

17.5 Summary

18. Configuring SSH Key-based Authentication on Ubuntu

18.1 An Overview of Secure Shell (SSH)

18.2 SSH Key-based Authentication

18.3 Setting Up Key-based Authentication

18.4 Installing and Starting the SSH Service

18.5 SSH Key-based Authentication from Linux and macOS Clients

18.6 Managing Multiple Keys

18.7 SSH Key-based Authentication from Windows 10 Clients

18.8 SSH Key-based Authentication using PuTTY

18.9 Generating a Private Key with PuTTYgen

18.10 Installing the Public Key for a Google Cloud Instance

18.11 Summary

19. Ubuntu Remote Desktop Access with Vino

19.1 Remote Desktop Access Types

19.2 Secure and Insecure Remote Desktop Access

19.3 Enabling Remote Desktop Access on Ubuntu

19.4 Connecting to the Shared Desktop

19.5 Connecting from Non-Linux Clients

19.6 Establishing a Secure Remote Desktop Session

19.7 Establishing a Secure Tunnel on Windows using PuTTY

19.8 Summary

20. Ubuntu Remote Desktop Access with VNC

20.1 Installing the GNOME Desktop Environment

20.2 Installing VNC on Ubuntu

20.3 Configuring the VNC Server

20.4 Starting the VNC Server

20.5 Connecting to a VNC Server

20.6 Summary

21. Displaying Ubuntu Applications Remotely (X11 Forwarding)

21.1 Requirements for Remotely Displaying Ubuntu Applications

21.2 Remotely Displaying an Ubuntu Application

21.3 Trusted X11 Forwarding

21.4 Compressed X11 Forwarding

21.5 Displaying Remote Ubuntu Apps on Windows

21.6 Summary

22. Using NFS to Share Ubuntu Files with Remote Systems

22.1 Ensuring NFS Services are running on Ubuntu

22.2 Configuring the Ubuntu Firewall to Allow NFS Traffic

22.3 Specifying the Folders to be Shared

22.4 Accessing Shared Ubuntu Folders

22.5 Mounting an NFS Filesystem on System Startup

22.6 Unmounting an NFS Mount Point

22.7 Accessing NFS Filesystems in Cockpit

22.8 Summary

23. Sharing Files between Ubuntu and Windows Systems with Samba

23.1 Accessing Windows Resources from the GNOME Desktop

23.2 Samba and Samba Client

23.3 Installing Samba on an Ubuntu System

23.4 Configuring the Ubuntu Firewall to Enable Samba

23.5 Configuring the smb.conf File

23.5.1 Configuring the [global] Section

23.5.2 Configuring a Shared Resource

23.5.3 Removing Unnecessary Shares

23.6 Creating a Samba User

23.7 Testing the smb.conf File

23.8 Starting the Samba and NetBIOS Name Services

23.9 Accessing Samba Shares

23.10 Accessing Windows Shares from Ubuntu

23.11 Summary

24. An Overview of Virtualization Techniques

24.1 Guest Operating System Virtualization

24.2 Hypervisor Virtualization

24.2.1 Paravirtualization

24.2.2 Full Virtualization

24.2.3 Hardware Virtualization

24.3 Virtual Machine Networking

24.4 Summary

25. Installing KVM Virtualization on Ubuntu

25.1 An Overview of KVM

25.2 KVM Hardware Requirements

25.3 Preparing Ubuntu for KVM Virtualization

25.4 Verifying the KVM Installation

25.5 Summary

26. Creating KVM Virtual Machines using Cockpit and virt-manager

26.1 Installing the Cockpit Virtual Machines Module

26.2 Creating a Virtual Machine in Cockpit

26.3 Starting the Installation

26.4 Working with Storage Volumes and Storage Pools

26.5 Creating a Virtual Machine using virt-manager

26.6 Starting the Virtual Machine Manager

26.7 Configuring the KVM Virtual System

26.8 Starting the KVM Virtual Machine

26.9 Summary

27. Creating KVM Virtual Machines with virt-install and virsh

27.1 Running virt-install to build a KVM Guest System

27.2 An Example Ubuntu virt-install Command

27.3 Starting and Stopping a Virtual Machine from the Command-Line

27.4 Creating a Virtual Machine from a Configuration File

27.5 Summary

28. Creating an Ubuntu KVM Networked Bridge Interface

28.1 Identifying the Network Management System

28.2 Getting the Netplan Network Settings

28.3 Creating a Netplan Network Bridge

28.4 Getting the Current Network Manager Settings

28.5 Creating a Network Manager Bridge from the Command-Line

28.6 Declaring the KVM Bridged Network

28.7 Using a Bridge Network in a Virtual Machine

28.8 Creating a Bridge Network using nm-connection-editor

28.9 Summary

29. Managing KVM using the virsh Command-Line Tool

29.1 The virsh Shell and Command-Line

29.2 Listing Guest System Status

29.3 Starting a Guest System

29.4 Shutting Down a Guest System

29.5 Suspending and Resuming a Guest System

29.6 Saving and Restoring Guest Systems

29.7 Rebooting a Guest System

29.8 Configuring the Memory Assigned to a Guest OS

29.9 Summary

30. An Introduction to Linux Containers

30.1 Linux Containers and Kernel Sharing

30.2 Container Uses and Advantages

30.3 Ubuntu Container Tools

30.4 The Docker Registry

30.5 Container Networking

30.6 Summary

31. Working with Containers on Ubuntu

31.1 Installing the Container Tools

31.2 Pulling a Container Image

31.3 Running the Image in a Container

31.4 Managing a Container

31.5 Saving a Container to an Image

31.6 Removing an Image from Local Storage

31.7 Removing Containers

31.8 Building a Container with Buildah

31.9 Summary

32. Setting Up an Ubuntu Web Server

32.1 Requirements for Configuring an Ubuntu Web Server

32.2 Installing the Apache Web Server Packages

32.3 Configuring the Firewall

32.4 Port Forwarding

32.5 Starting the Apache Web Server

32.6 Testing the Web Server

32.7 Configuring the Apache Web Server for Your Domain

32.8 The Basics of a Secure Web Site

32.9 Configuring Apache for HTTPS

32.10 Obtaining an SSL Certificate

32.11 Summary

33. Configuring an Ubuntu Postfix Email Server

33.1 The structure of the Email System

33.1.1 Mail User Agent

33.1.2 Mail Transfer Agent

33.1.3 Mail Delivery Agent

33.1.4 SMTP

33.1.5 SMTP Relay

33.2 Configuring an Ubuntu Email Server

33.3 Postfix Pre-Installation Steps

33.4 Firewall/Router Configuration

33.5 Installing Postfix on Ubuntu

33.6 Configuring Postfix

33.7 Configuring DNS MX Records

33.8 Starting Postfix on an Ubuntu System

33.9 Testing Postfix

33.10 Sending Mail via an SMTP Relay Server

33.11 Summary

34. Adding a New Disk Drive to an Ubuntu System

34.1 Mounted File Systems or Logical Volumes

34.2 Finding the New Hard Drive

34.3 Creating Linux Partitions

34.4 Creating a File System on a Disk Partition

34.5 An Overview of Journaled File Systems

34.6 Mounting a File System

34.7 Configuring Ubuntu to Automatically Mount a File System

34.8 Adding a Disk Using Cockpit

34.9 Summary

35. Adding a New Disk to an Ubuntu Volume Group and Logical Volume

35.1 An Overview of Logical Volume Management (LVM)

35.1.1 Volume Group (VG)

35.1.2 Physical Volume (PV)

35.1.3 Logical Volume (LV)

35.1.4 Physical Extent (PE)

35.1.5 Logical Extent (LE)

35.2 Getting Information about Logical Volumes

35.3 Adding Additional Space to a Volume Group from the Command-Line

35.4 Summary

36. Adding and Managing Ubuntu Swap Space

36.1 What is Swap Space?

36.2 Recommended Swap Space for Ubuntu

36.3 Identifying Current Swap Space Usage

36.4 Adding a Swap File to an Ubuntu System

36.5 Adding Swap as a Partition

36.6 Adding Space to an Ubuntu LVM Swap Volume

36.7 Adding Swap Space to the Volume Group

36.8 Summary

37. Ubuntu System and Process Monitoring

37.1 Managing Processes

37.2 Real-time System Monitoring with htop

37.3 Command-Line Disk and Swap Space Monitoring

37.4 Summary

Index

1. Introduction

Ubuntu is arguably one of the most highly regarded and widely used Linux distributions available today. Praised both for its ease of use and reliability, Ubuntu also has a loyal following of Linux users and an active community of developers.

Ubuntu 20.04 Essentials is designed to provide detailed information on the installation, use and administration of the Ubuntu 20.04 distribution. For beginners, the book covers topics such as operating system installation, the basics of the GNOME desktop environment, configuring email and web servers and installing packages and system updates. Additional installation topics such as dual booting with Microsoft Windows are also covered, together with all important security topics such as configuring a firewall and user and group administration.

For the experienced user, topics such as remote desktop access, the Cockpit web interface, logical volume management (LVM), disk partitioning, swap management, KVM virtualization, Secure Shell (SSH), Linux Containers and file sharing using both Samba and NFS are covered in detail to provide a thorough overview of this enterprise class operating system.

1.1 Superuser Conventions

Ubuntu, in common with Linux in general, has two types of user account, one being a standard user account with restricted access to many of the administrative files and features of the operating system, and the other a superuser (root) account with elevated privileges. Typically, a user can gain root access either by logging in as the root user, or using the su - command and entering the root password. In the following example, a user is gaining root access via the su - command:

[neil@demo-server ~]$ su -

Password:

[root@demo-server ~]#

Note that the command prompt for a regular user ends with a $ sign while the root user has a # character. When working with the command-line, this is a useful indication as to whether or not you are currently issuing commands as the root user.

If the su - command fails, the root account on the system has most likely been disabled for security reasons. In this case, the sudo command can be used instead as outlined below.

Using sudo, a single command requiring root privileges may be executed by a non-root user. Consider the following attempt to update the operating system with the latest patches and packages:

$ apt update

Reading package lists... Done

E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)

Optionally, user accounts may be configured so that they have access to root level privileges. Instead of using the su - command to first gain root access, user accounts with administration privileges are able to run otherwise restricted commands using sudo.

$ sudo apt update

[sudo] password for demo:

Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease

.

.

To perform multiple commands without repeatedly using the sudo command, a command prompt with persistent super-user privileges may be accessed as follows:

[neil@demo-server]$ sudo su -

[neil@demo-server]#

The reason for raising this issue so early in the book is that many of the command-line examples outlined in this book will require root privileges. Rather than repetitively preface every command-line example with directions to run the command as root, the command prompt at the start of the line will be used to indicate whether or not the command needs to be performed as root. If the command can be run as a regular user, the command will be prefixed with a $ command prompt as follows:

$ date

If, on the other hand, the command requires root privileges, the command will be preceded by a # command prompt:

# apt install openssh-server

1.2 Opening a Terminal Window

If you are running Ubuntu with the GNOME desktop and need to access a command-prompt you will need to open a terminal window. This can be achieved by right-clicking on the desktop background and selecting the Open Terminal menu option as shown in Figure 1-1:

Figure 1-1

A terminal window may also be opened within the GNOME desktop using the Ctrl-Alt-T keyboard accelerator.

1.3 Editing Files

Configuring a Linux system typically involves editing files. For those new to Linux it can be unclear which editor to use. If you are running a terminal session and do not already have a preferred editor we recommend using the nano editor. To launch nano in a terminal window simply enter the following command:

# nano <file>

Where <file> is replaced by the path to the file you wish to edit. For example:

# nano /etc/passwd

Once loaded, nano will appear as illustrated in Figure 1-2:

Figure 1-2

To create a new file simply run nano as follows:

# nano

When you have finished editing the file, type Ctrl-S to save the file followed by Ctrl-X to exit. To open an existing file, use the Ctrl-R keyboard shortcut.

If you prefer to use a graphical editor within the GNOME desktop environment gedit is a useful starting point for basic editing tasks. To launch gedit from the desktop press Alt-F2 to display the Enter a Command window as shown in Figure 1-3:

Figure 1-3

Enter gedit into the text field and press the Enter key. After a short delay, gedit will load ready to open, create and edit files:

Figure 1-4

Alternatively, launch gedit from a terminal window either with or without the path to the file to open:

# gedit

# gedit /etc/passwd

1.4 Feedback

We want you to be satisfied with your purchase of this book. If you find any errors in the book, or have any comments, questions or concerns please contact us at [email protected].

1.5 Errata

While we make every effort to ensure the accuracy of the content of this book, it is inevitable that a book covering a subject area of this size and complexity may include some errors and oversights. Any known issues with the book will be outlined, together with solutions, at the following URL:

https://www.ebookfrenzy.com/errata/ubuntu2004.html

In the event that you find an error not listed in the errata, please let us know by emailing our support team at [email protected].

2. A Brief History of Linux

Ubuntu Linux is one of a number of variants (also referred to as distributions) of the Linux operating system and is the product of a U.K. company named Canonical Ltd. The company was founded in 1994 by Mark Shuttleworth. The origins of Linux, however, go back even further. This chapter will outline the history of both the Linux operating system and Ubuntu.

2.1 What exactly is Linux?

Linux is an operating system in much the same way that Windows is an operating system (and there any similarities between Linux and Windows end). The term operating system is used to describe the software that acts as a layer between the hardware in a computer and the applications that we all run on a daily basis. When programmers write applications, they interface with the operating system to perform such tasks as writing files to the hard disk drive and displaying information on the screen. Without an operating system, every programmer would have to write code to directly access the hardware of the system. In addition, the programmer would have to be able to support every single piece of hardware ever created to be sure the application would work on every possible hardware configuration. Because the operating system handles all of this hardware complexity, application development becomes a much easier task. Linux is just one of a number of different operating systems available today.

2.2 UNIX Origins

To understand the history of Linux, we first have to go back to AT&T Bell Laboratories in the late 1960s. During this time AT&T had discontinued involvement in the development of a new operating system named Multics. Two AT&T engineers, Ken Thompson and Dennis Ritchie, decided to take what they had learned from the Multics project and create a new operating system named UNIX which quickly gained popularity and wide adoption both with corporations and academic institutions.

A variety of proprietary UNIX implementations eventually came to market including those created by IBM (AIX), Hewlett-Packard (HP-UX) and Sun Microsystems (SunOS and Solaris). In addition, a UNIX-like operating system named MINIX was created by Andrew S. Tanenbaum designed for educational use with source code access provided to universities.

2.3 Who Created Linux?

The origins of Linux can be traced back to the work and philosophies of two people. At the heart of the Linux operating system is something called the kernel. This is the core set of features necessary for the operating system to function. The kernel manages the system’s resources and handles communication between the hardware and the applications. The Linux kernel was developed by Linus Torvalds who, taking a dislike to MS-DOS, and impatient for the availability of MINIX for the new Intel 80386 microprocessor, decided to write his own UNIX-like kernel. When he had finished the first version of the kernel, he released it under an open source license that enabled anyone to download the source code and freely use and modify it without having to pay Linus any money.

Around the same time, Richard Stallman at the Free Software Foundation, a strong advocate of free and open source software, was working on an open source operating system of his own. Rather than focusing initially on the kernel, however, Stallman decided to begin by developing open source versions of all the UNIX tools, utilities and compilers necessary to use and maintain an operating system. By the time he had finished developing this infrastructure it seemed like the obvious solution was to combine his work with the kernel Linus had written to create a full operating system. This combination became known as GNU/Linux. Purists insist that Linux always be referred to as GNU/Linux (in fact, at one time, Richard Stallman refused to give press interviews to any publication which failed to refer to Linux as GNU/Linux). This is not unreasonable given that the GNU tools developed by the Free Software Foundation make up a significant and vital part of GNU/Linux. Unfortunately, most people and publications simply refer to Linux as Linux and this will probably always continue to be the case.

2.4 The History of Ubuntu

As mentioned previously, Ubuntu is one of a number of Linux distributions. The source code that makes up the Ubuntu distribution originates from a highly regarded Linux distribution known as Debian created by Ian Murdoch.

A South African internet mogul named Mark Shuttleworth (who made his fortune selling his company to VeriSign for around $500 million) decided it was time for a more user friendly Linux. He took the Debian distribution and worked to make it a more human friendly distribution which he called Ubuntu. He subsequently formed a company called Canonical Ltd to promote and provide support for Ubuntu.

If you are new to Linux, or already use Linux and want to try a different Linux distribution it is unlikely you will find a better option than Ubuntu.

2.5 What does the word “Ubuntu” Mean?

The word “Ubuntu” is an ancient Zulu and Xhosa word that means “humanity to others”. Ubuntu also means “I am what I am because of who we all are”. It was chosen because these sentiments precisely describe the spirit of the Ubuntu distribution.

2.6 Summary

The origins of the Linux operating system can be traced back to the work of Linus Torvalds and Richard Stallman in the form of the Linux kernel combined with the tools and compilers built by the GNU project.

Over the years, the open source nature of Linux has resulted in the release of a wide range of different Linux distributions. One such distribution is Ubuntu, based on the Debian Linux distribution and created by Canonical Ltd, a company founded by Mark Shuttleworth.

3. Installing Ubuntu on a Clean Disk Drive

There are now three ways in which an Ubuntu system can be deployed. One method is to either purchase new hardware or re-purpose an existing computer system on which to install and run the operating system. Alternatively, a virtualization platform such as VirtualBox or VMware can be used install and run Ubuntu inside a virtual machine on an existing operating system. Another option is to create a cloud-based operating system instance using services such as Amazon AWS, Google Cloud or Microsoft Azure (to name but a few). Since cloud-based instances are typically created by selecting a pre-configured, ready to run operating system image that is already optimized for the cloud platform, and using that as the basis for the Ubuntu system, there is no need to perform a manual operating system installation in this situation.

If, on the other hand, you plan to install Ubuntu on your own hardware or make use a virtualization environment, the first step on the path to learning about Ubuntu involves installing the operating system.

Ubuntu can be installed either in a clean disk environment (where an entire disk is cleared of any existing partitions and dedicated entirely to Ubuntu) or in a dual boot environment where Ubuntu co-exists with another operating system on the disk (typically a member of the Microsoft Windows family of operating systems).

In this chapter we will be covering the clean disk approach to installation from local or remote installation media. Dual boot installation with a Windows 10 system will be covered in ”Dual Booting Ubuntu with Windows”.

3.1 Ubuntu Installation Options

Ubuntu can be downloaded free of charge from the following web page:

https://ubuntu.com/download

This page provides a number of download options depending on how the operating system is to be installed and used:

•Ubuntu Desktop - Downloads the installation media for the desktop edition of the operating system. This edition is intended for use on desktop and laptop systems where a graphical desktop environment is needed and is only available for 64-bit x86 systems. The desktop edition can be downloaded in the form of an ISO image which you can then write to a USB drive using the steps outlined later in this chapter. When booted, the desktop media will allow you to test out Ubuntu by running a Live Ubuntu session prior to performing the installation.

•Ubuntu Server - Downloads the installation media for the server edition of the operating system. This image is intended for performing an installation on servers on which the graphical desktop environment is not required and is available for x86, ARM, IBM POWER (PowerPC) and s390x (IBM System z mainframe) systems. The installation media does not include the option to try Ubuntu before installing and uses the text based installer instead of the graphical installer used for Ubuntu Desktop. This allows Ubuntu to be installed on systems without a graphical console.

When downloading Ubuntu Server edition, the following options are available:

•Standard Live Server ISO Image - Contains everything to install Ubuntu Server. This allows the installation to be performed without needing a network or internet connection.

•Network Installer ISO Image - Contains the minimum needed to begin the installation process during which additional packages are downloaded based on choices made during the configuration phase. The Network installer will be covered in detail in the chapter entitled “Installing Ubuntu with the Network Installer”.

Both the Live Server and Network installer images may also be used to perform Preboot Execution Environment (PXE) network installations. When using PXE to install Ubuntu, the Ubuntu image is installed on a specially configured server (referred to as a PXE boot server). The client system on which Ubuntu is to be installed is then configured to boot over the network from the image on the PXE boot server (assuming the client hardware supports PXE) to initiate the installation.

3.2 Server vs. Desktop Editions

Clearly a decision between the Desktop and the Server Edition images needs to be made before installation can begin. If you would like to try Ubuntu before installing it, then the Desktop option is the best solution since it allows you to boot Ubuntu from the installation media without first installing it on a disk drive. As shown in Figure 3-1, this option also allows the installation to be initiated from within the live session:

Figure 3-1

If the graphical desktop environment is not required, and the destination system does not have internet access or a graphical console then the Live Server ISO image is recommended since this allows a fully functional server to be built without the need to download any additional packages.

Regardless of the chosen installation method, packages can be added to and removed from the system after installation to configure the system to specific needs.

3.3 Obtaining the Ubuntu Installation Media

For the purposes of this chapter, the Ubuntu Desktop environment will be installed using the graphical installer. Begin, therefore, by downloading the Ubuntu Desktop 20.04 ISO image from the following URL:

https://ubuntu.com/download/desktop

The DVD ISO image is self-contained including all of the packages necessary to install an Ubuntu system and is named using the following convention:

ubuntu-<version>-<edition>-<architecture>.iso

For example, the Ubuntu 20.04 Desktop ISO image for 64-bit Intel/AMD systems is named as follows:

ubuntu-20.04-desktop-amd64.iso

Having downloaded the image, either burn it to disk or use the steps in the next section to write the media to a USB drive and configure your virtualization environment to treat it as a DVD drive.

3.4 Writing the ISO Installation Image to a USB Drive

These days it is more likely that an operating system installation will be performed from a USB drive than from a DVD. Having downloaded the ISO installation image for Ubuntu, the steps to write that image to a USB drive will differ depending on whether the drive is attached to a Linux, macOS or Windows system. The steps outlined in the remainder of this section assume that the USB drive is new, or has been reformatted to remove any existing data or partitions:

3.4.1 Linux

The first step in writing an ISO image to a USB drive on Linux is to identify the device name. Before inserting the USB drive, identify the storage devices already detected on the system by listing the devices in /dev as follows:

# ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2

Attach the USB drive to the Linux system and run the dmesg command to get a list of recent system messages, one of which will be a report that the USB drive was detected and will be similar to the following:

[445597.988045] sd 6:0:0:0: [sdb] Attached SCSI removable disk

This output tells us that we should expect the device name to include “sdb” which we can confirm by listing device names in /dev again:

# ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sdb

From this output we can tell that the USB drive has been assigned to /dev/sdb. The next step before writing the ISO image to the device is to run the findmnt command to make sure it has not been auto-mounted:

# findmnt /dev/sdb?

TARGET SOURCE FSTYPE OPTIONS

/media/demo/C24E-6727 /dev/sdb1 vfat rw,nosuid,nodev, ...

If the findmnt command indicates that the USB drive has been mounted, unmount it before continuing:

# umount /media/demo/C24E-6727

Once the filesystem has been unmounted, use the dd command as follows to write the ISO image to the drive:

# dd if=/path/to/iso/<image name>.iso of=/dev/sdb bs=512k

The writing process can take some time (as long as 10 - 15 minutes) to complete depending on the image size and speed of the system on which it is running. Once the image has been written, output similar to the following will appear and the USB drive is ready to be used to install Ubuntu:

4056+1 records in

4056+1 records out

2126544896 bytes (2.1 GB, 2.0 GiB) copied, 625.911 s, 3.4 MB/s

3.4.2 macOS

The first step in writing an ISO image to a USB drive attached to a macOS system is to identify the device using the diskutil tool. Before attaching the USB device, open a Terminal window and run the following command:

$ diskutil list

/dev/disk0 (internal, physical):

   #: TYPE NAME SIZE IDENTIFIER

   0: GUID_partition_scheme *1.0 TB disk0

   1: EFI EFI 209.7 MB disk0s1

   2: Apple_APFS Container disk2 1000.0 GB disk0s2

 

/dev/disk1 (internal):

   #: TYPE NAME SIZE IDENTIFIER

   0: GUID_partition_scheme 28.0 GB disk1

   1: EFI EFI 314.6 MB disk1s1

   2: Apple_APFS Container disk2 27.7 GB disk1s2

 

/dev/disk2 (synthesized):

   #: TYPE NAME SIZE IDENTIFIER

   0: APFS Container Scheme - +1.0 TB disk2

                                 Physical Stores disk1s2, disk0s2

   1: APFS Volume Macintosh HD 473.6 GB disk2s1

   2: APFS Volume Preboot 42.1 MB disk2s2

   3: APFS Volume Recovery 517.0 MB disk2s3

   4: APFS Volume VM 1.1 GB disk2s4

Having established a baseline of detected devices, insert the USB drive into a port on the macOS system and run the command again. The same results should appear with one additional entry for the USB drive resembling the following:

/dev/disk3 (external, physical):

   #: TYPE NAME SIZE IDENTIFIER

   0: *16.0 GB disk3

In the above example, the USB drive has been assigned to /dev/disk3. Before proceeding, unmount the disk as follows:

$ diskutil unmountDisk /dev/disk3

Unmount of all volumes on disk3 was successful

Finally, use the dd command to write the ISO image to the device, taking care to reference the raw disk device (/dev/rdisk3) and entering your user password when prompted:

$ sudo dd if=/path/to/iso/image.iso of=/dev/rdisk3 bs=1m

Once the image has been written, the USB drive is ready.

3.4.3 Windows

A number of free tools are available for Windows that will write an ISO image to a USB drive, but one written specifically for writing Linux ISO images is the Fedora Media Writer tool which can be downloaded from the following URL:

https://getfedora.org/en/workstation/download/

Once installed, launch the writer tool and select the Custom image option as highlighted in Figure 3-2:

Figure 3-2

In the resulting file selection dialog, navigate to and select the Ubuntu installation ISO image and click on the Open button. After selecting the image, a dialog will appear within which the image can be written to the USB drive. Select the target USB drive from the device menu before clicking on the Write to Disk button:

Figure 3-3

Once the image has been written to the device, the device is ready to be used to perform the installation.

3.5 Booting from the Ubuntu USB Image

Insert the Ubuntu installation media into the appropriate drive and power on the system. If the system tries to boot from the hard disk drive you will need to enter the BIOS set up for your computer and change the boot order so that it boots from the installation media drive first. For the first few seconds of the boot process a largely blank screen will appear with the following image located along the bottom edge:

Figure 3-4

If no action is taken at this point, Ubuntu will boot into the Live session and provide the option to either try Ubuntu without installing, or to begin the installation process as shown in Figure 3-1 above. Alternatively, pressing the keyboard Esc key will enter the boot menu system beginning with the language selection screen shown in Figure 3-5:

Figure 3-5

Navigate using the keyboard arrow keys and press the Enter key to select a language at which point the Ubuntu boot menu screen will appear as shown below:

Figure 3-6

Once again, options are provided to either try the Ubuntu Live session, or to begin the installation process. If you experience a black screen when attempting to start or install Ubuntu, reboot the system and try again using one of the safe graphics options. The installation media and system memory may also be checked for defects, or the system booted from the primary hard disk drive installed in the computer system (assuming it contains a bootable operating system image). A range of Function key options provide access to settings such as changing the accessibility options, accessing help and specifying special boot parameters.

3.6 Installing Ubuntu

From within either the live session or the boot menu, select the option to begin the Ubuntu installation and wait for the initial screen of the installer to appear:

Figure 3-7

On the welcome screen, select your preferred language before clicking on the Continue button to proceed to the next screen:

Figure 3-8

Either select your keyboard layout or, if you are unsure, click on the Detect Keyboard Layout button to work through some steps to identify your keyboard before clicking on Continue. On the next screen, choose whether to perform the Normal or Minimal installation:

Figure 3-9

Select the Normal option if you have plenty of disk space and want to explore the main applications and utilities included with Ubuntu without having to manually install them later. Alternatively, to avoid cluttering the system with software you may never need, select the Minimal option. Regardless of the choice made here, all of the software provided with Ubuntu can be easily installed or removed at any point in the future if needed.

The option is also available to update the software packages that comprise the Ubuntu distribution during the installation. Ubuntu, as with most actively supported operating systems, continues to be updated with bug fixes and security patches long after it has been released to the public. If this option is selected and the system is connected to the internet, the installer will download any updates issued since the Ubuntu installation image was released and applies them to the system during installation. If you choose not to perform this update during the installation process these updates may still be applied at any time after the installation completes.

A second option provides the choice of whether to install 3rd party non-open source software to support specific hardware devices and the playback of proprietary media files on the system. Some users object fervently to using any software which is not published under a public license. If you are one of those people then do not select this option. If, on the other hand, you just want the best experience from your Ubuntu installation then this option is recommended.

Having made appropriate selections, click the Continue button to proceed to the disk allocation screen:

Figure 3-10

Assuming that this is a new disk on which an existing operating system is not present, the installer will provide the option to erase the entire disk and use it for Ubuntu (in which case the installer will calculate and implement a typical and recommended partition layout). Alternatively, to define your own custom disk layout, select the Something else option to manually create and size the disk partitions that will contain the operating system and your data.

Clicking on the Advanced Features button will provide the option to use Logical Volume Management (LVM). LVM is strongly recommended to make the management of the disks and partitions on the system easier, a topic covered in detail in the chapter entitled “Adding a New Disk to an Ubuntu Volume Group and Logical Volume”:

Figure 3-11

If the security of the data stored on the disk is of paramount concern, select the option to encrypt the Ubuntu installation. If this option is selected the next screen will prompt you to choose a security key which will then need to be entered each time the system starts.

The option is also provided to use the ZFS filesystem. ZFS is an advanced filesystem that has many of the features of Logical Volume Management built-in together with a range of other features such as the ability to take disk snapshots and shadowing (copy-on-write). Although ZFS has been around for many years, the implementation on Ubuntu is considered to be experimental at this stage and should not be used for production environments.

Once the selections have been made, click on the Install Now button to begin the installation process at which point the system will seek confirmation that the changes are to be made to the disk drive:

Figure 3-12

While the installation is in progress, the installer will ask for information about your geographical location in order to configure time zone settings:

Figure 3-13

Next, the installer will ask you to provide a user name and password for the first account on the system:

Figure 3-14

4. Installing Ubuntu with the Network Installer

The previous chapter explored the different options available when installing Ubuntu with a particular emphasis on using the graphical installer. This chapter will go into more detail regarding the use of the Network installer image to install Ubuntu.

4.1 Network Installer Advantages

The Network installer (also referred to as Netboot) image provides a small image (approximately 50MB in size compared to more than 2GB for the Desktop image) that can be used to install either the server or desktop-based Ubuntu environments. This option requires an internet connection to download additional packages during installation and uses the text-based installer.

While the Server and Desktop images provide very little choice in terms of configuration options during installation, the Network installer provides an extensive list of pre-defined software collections from which to choose during installation. The Ubuntu Desktop ISO image, for example, will only install the GNOME desktop environment. The Network installer, on the other hand, lets you install various desktop environments including KDE Plasma (Kubuntu) and LXQt (Lubuntu). Options are also available to install a basic server environment with optional additional server related packages such as web server, mail server and database software.

All of these packages can, of course, be added or removed after installation is complete when using the Server and Desktop images, but if you want to use a small installation image that can be quickly written to a USB drive and allows you to pre-install many software dependencies, the Network installer is an ideal option.

4.2 Obtaining the Network Installer Image

The Network installer image for Ubuntu 20.04 can be downloaded from the following web page:

http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

Once downloaded, follow the steps in the chapter entitled ”Installing Ubuntu on a Clean Disk Drive” to write the mini.iso image to a USB drive.

4.3 Booting from the Installer Image

Insert the Ubuntu installation media and power on the system. If the system tries to boot from the hard disk drive you will need to enter the BIOS set up for your computer and change the boot order so that it boots from the installation media drive first. Once the system has booted, the screen shown in Figure 4-1 will appear:

Figure 4-1

4.4 Performing the Installation

From the menu, select the Install option and tap the keyboard Enter key to start the installation process. On the next few screens, use the keyboard arrow keys and the Enter key to select your preferred language and keyboard type.

After making the configuration selections, the installer will scan the device hardware in search of a network interface:

Figure 4-2