Today, many people are approaching the GNU / Linux world, an ever-growing operating system, thanks to the Ubuntu distribution, or a Linux Mint, then they become more experienced and get tired ... They usually opt for distributions like Debian or Fedora (excellent distributions , nothing to say about it, I used both), but a distribution remains (almost) always in the dark: Arch Linux. Usually, because it is difficult to install. Well, in this article I will convince you that this is not the case, with my brief tutorial for minimal installation and subsequent steps, to customize GNOME, install ALSA, Xorg, GDM, set the console values, the keymap, the font, the language, time zone, the strengths of Arch Linux, among which we find the forum, and the wiki, from where it is possible to take an abnormal amount of information on this fantastic distribution.
To whom it is dedicated Arch Linux?
Arch Linux, is a GNU / Linux distribution, whose image weighs roughly 600 MB, all you need to do a complete boot, the kernel, bootloader, a shell, the package manager, without a graphical shell, nor an installer graphic. Therefore, Arch Linux must be installed through the CLI (Command Line Interface), it is difficult for those who have always used very simple graphical installers to use (see the Ubuntu installer), or do not know about bootloaders, fstab, partitioning ( even more because GParted isn't even installed), and more ...
In this guide / tutorial and review, I will explain the meaning of each command in the simplest way there is.
Derivatives of Arch Linux
Arch, like other respected distributions (Debian, RedHat, etc ...) has derivatives, which integrate the same core, the same workarounds, the same init system, the same package manager, with improvements, or additions to the various teams.
Usually you install the derivatives of Arch to get Arch Linux in a very simple way with a graphical installer that does everything automatically. Or maybe with a semi-graphical interface (ncurses - C library [header C: ncurses.h] for the development of GUI-Friendly interfaces (similar to the windows written in GTK or Qt, or some other library used for the development of graphical interfaces , development follows GNU))
The derivative that I recommend most is Antergos, with Cnchi (the graphical installer, developed in Python language), pre-installed Numix theme, LigthDM (see Display Manager at the bottom) and a choice between KDE, GNOME, LXDE, MATE, or yes install a text shell without Desktop Environment (see Desktop Environment and Graph Server at the bottom).
Returning to us, the most popular derivatives are (general purpose):
- BlackArchLinux (Pentesting)
- ArchAssault (Pentesting)
- BBQLinux (For ROM, Kernels and Android Application developers)
- BlueStar Linux
And many others.
How to install Arch Linux? Let's begin!
(It is assumed that the user has flashed a USB flash drive, with bootloader installed and ready to use, otherwise download ArchLinux from the Italian repository)
Start the machine, according to the boot mode that the user prefers for the installation, then, when you are in front of the bootloader (see Bootloader, at the bottom), you boot by selecting the architecture that your CPU supports (in most cases x86_64 [64 bit] is fine).
After several seconds you are in front of a tty with automatic login, we wait for 1 second and we have entered as root in zsh, the default shell of the Arch installation process. Let's start with partitioning,
load the Italian layout of the keyboard (ie the layout of the keys)
# loadkeys it
Starting and using the CFDisk partitioning program
# cfdisk / dev / sdX # where X is a value a, b, c, d, e, f, g, h, i, l, m, n, or etc ...
thus we enter the CLI manual partitioning program
we find ourselves in front of a screen similar to this, to delete the entire hard disk and rewrite the partition table from 0 (MBR or GPT recommended), it is necessary to apply DELETE to all the hard disk partitions. If you should rethink the installation, do not panic, the changes have not yet been written, simply select "quit" to abandon the changes and write poweroff to turn off the PC and restart it from Hard Disk, otherwise, if you are convinced, select " Write ”, at this point, we have our totally clean hard disk, we need to recreate 3 partitions
- Partition without filesystem from 1MB, for the bootloader, type: BIOS Boot
- Partition with mount point / (root), ext4 filesystem, type Linux Filesystem (ie ext4), ID: 8300
- Partition for swap, type: Linux Swap (swap)
to create the partitions simply select New, then specify the size, or the size in MegaByte or GigaByte, to specify the unit of measurement, simply write the quantity in whole numbers or in the desired floating point, if the size is in MegaByte you must specify
, if in GigaByte
1M #True 1 MB
390G #True 390 GB
4.5G #True 4,5 GB
now we will have partitions identified with
/ Dev / sd
for the 1 partition, that is the one dedicated to the bootloader, we must specify it as such, therefore, having selected that item, we click on Type and select
, and so on for the other partitions, for the second:
, for the third:
Ext4 formatting of the second partition and execution of the swap area
We use the tool mkfs.ext4 and mkswap
# mkfs.ext4 / dev / sdX # where X is the letter of the second partition
# mkswap / dev / sdX # where X is the letter of the third partition
Assembly of the second partition on / mnt and "switching on" of the swap area
We use the mount tool
# mount / dev / sdX / mnt
We use swapon to turn on the swap area
# swapon / dev / sdX
What is the swap area?
is the extension of the volatile memory of the computer (or RAM memory), using a portion of a mass storage medium (for example the hard disk) or a flash memory (the pendrive)
Installation of the base Operating System su / mnt
Using pacstrap, we first configure the connection
For Ethernet connections:
# ip link set up
# ip link set up
, now, in wifi-menu, a program with ncurses interface you can select the desired wifi, and if a WPA or WEP passphrase is required
once connected with pacstrap:
# pacstrap -i / mnt base base-devel dialog wpa_supplicant
where the base group contains the basic programs: the kernel, a shell, headers, the GCC compiler, the init system and more ... Dialog is a wifi-menu dependency, wpa_supplicant may be necessary.
after about fifteen minutes, the basic system was installed in / mnt (ie / dev / sdX)
With the genfstab tool
# genfstab -p / mnt> / mnt / etc / fstab
where / mnt is the partition mount point, ">" indicates redirection of output to / mnt (which stands for / dev / sdX) / etc / fstab
What is FStab?
a simple text file that contains information about partitions,
an example could be the fsbt of my PC
# UUID = fb0c5cb6-a286-438d-9ccd-f95fbe02224f / dev / sda2 / ext4 rw, relatime, data = ordered0 1 # UUID = 921aa11c-ad6b-471a-bb81-125bfc6c9a47 # / dev / sda3 none swap defaults
Enter the chroot
executing the command
# arch-chroot / mnt
then switch from zsh to sh
What is chroot?
Ch = change root = root or change root, changing root, consists of the transition from a parent environment to a child environment, explained in simpler words, goes to another directory, where the child processes are executed. It is used for security purposes.
Setting the locale, hostname, root password, time zone (timezone)
1) first of all, with nano, we edit the file
, removing the comment (removing the #) to it_IT.UTF-8 UTF-8 and it_IT.ISO-XXXX ...
# nano /etc/locale.gen
* remove the hash (#) from it_IT.UTF-8 UTF-8 to uncomment *
* save with CTRL + O *
* exit with CTRL + X *
the local file is generated with the command locale-gen
2) we set a hostname, that is the name of the PC in the local network
# echo "your-PC-name"> / etc / hostname
so instead of producing the output the-name-of-your-PC in the standart output channel (stdout), it is redirected to the file / etc / hostname
it is also possible to create the file / etc / hostname and enter the name of the hostname directly from nano in the first line
# nano / etc / hostname
3) We set a root password
with the passwd command
so we will be asked to enter the new UNIX password
and then to re-enter it a second time
4) We set the timezone
# ln -sf / usr / share / zoneinfo / Europe / Rome / etc / localtime
then a symbolic link of ../Rome is created in / etc / localtime
ReBuilding of the initial ramdisk with mkinitcpio
# mkinitcpio -p linux
where -p stands for preset (–preset) and linux is the preset which is a set of hooks and Arch's default modules,
mkinitcpio is a Bash script developed by the Arch Linux community
hooks are scripts that are loaded from the ramdisk, before loading and then passing control to the kernel.
The ramdisk, takes care of just this: load the kernel modules, the scripts (hooks) and the real kernel, then it takes care of passing the control to it, which in turn launches the so-called init system (in our case systemd), which launches the required daemons, display manager, network services (WICD daemon for example) and more ...
It is the first "program" (not a real program) that is loaded after the bootloader.
As suggested by one of our readers (Simone Padovan, whom we thank), we install os-prober to allow GRUB to detect other operating systems, install it with pacman, from the package
# pacman -S os-prober
downloading and installing it with pacman
# pacman -S grub
install the bootloader in / dev / sdX, which I remind you is the SECOND partition
# grub-install / dev / sdX
update of the bootloader configuration
# grub-mkconfig -o /boot/grub/grub.cfg
What is a bootloader?
A bootloader is the first program that is run when the computer starts, (whether the operating system is run from Hard Disk, pendrive etc ...), it is responsible for providing a view of the operating systems installed on your computer and launching them, and is of fundamental importance, because without it, it is not possible to use a computer. GNU GRUB is nowadays one of the most used and most advanced bootloaders, in fact it is not a simple bootloader, it is possible, in fact, to assign a theme for example, change its color, manage it more easily thanks to special applications (Grub-customizer ad example). Obviously, there are other bootloaders: LILO, Syslinux etc… Even those who use Winz (ehm… dows) first go to the bootloader, then go to the kernel. and so on, it's just not as obvious as in Linux kernels.
Exit from the chroot, dismount partitions, switch off swap and restart the computer
you exit the chroot with
disassembly of the second partition
# umount / mnt
switching off the swap
# swapoff / dev / sdX
First start, setting values of /etc/vconsole.conf
first we set the values of vconsole.conf
now you will have the keymap us if I'm not mistaken,
to set the Italian one:
# nano /etc/vconsole.conf
and write the following values:
KEYMAP = it LANG = it
CTRL + O
and go out with
CTRL + X
suppose we want to create a user without root privileges called user1
# useradd -m -s / bin / bash user1
where the options mean:
- -m: create the directory / home / user1
- -s, argument / bin / bash: the user1 user uses bash as a login shell
- user1: indicates the name of the user to be created
we assign a password to the user:
# passwd user1
and as we did for root, we assign the 2 password times
if we want to assign the user the possibility of obtaining root privileges:
we must include it in the / etc / sudoers file
so, let's say, that we can write it where we want, but by order we write it under root:
# nano / etc / sudoers
we add this string:
user1 ALL = (ALL) ALL
therefore, now, at the next login, we can log in with user1, the password we have chosen, and the possibility of having a root shell
with the command:
(I do not recommend the use of visudo)
Wireless network (WiFi) or ethernet configuration
1) For the Ethernet network should be sufficient:
# ip link set up
for Dynamic IP addresses:
# systemctl enable dhcpcd.service
for Static IP addresses:
# cd / etc / netctl
# cp examples / ethernet-static configuration_net
browse in / etc / netctl
copy ethernet-static from examples into net configuration
then modify the values of the configuration_net file (INTERFACE, DNS, and others ...) with nano:
# nano configuration_net
once the file is saved:
# netctl enable configuration_rete
2) For the wireless network, if you have installed and dialog from pacstrap:
# ip link set up
follow the instructions above, although it is very simple to interpret, as it integrates a semi-graphical interface (ncurses).
Complete system update: package and database synchronization
we verify, before continuing that the system is updated:
# pacman -Syu
then we will focus on pacman, and on repository management.
Installation and configuration of ALSA
ALSA, or Advanced Linux Sound Architecture, is a set of audio drivers of the Linux kernel, at the moment it is the most advanced,
to install ALSA and activate the sound:
# pacman -S alsa-utils
a few seconds and launch the program
which provides a ncurses interface (semi-graphic) of an audio mixer, increase the volume of masters and speakers, it will be possible to verify that everything works once the DE is installed
Installing the drivers !! Important !!
1) Open source video driver
# pacman -S xf86-video-intel
for integrated Intel GPUs
# pacman -S xf86-video-ati
for dedicated ATI GPUs
(for a complete list:
pacman -Ss xf86-video | less
2) Driver vesa:
does not provide acceleration, is general and works with almost all GPUs, if Xorg does not find a better driver, it will refer to vesa
# pacman -S xf86-video-vesa
3) Input driver
for users like me who are on laptops or with touch-screens have to install this driver:
# pacman -S xf86-input-synaptics
4) Mesa driver for 3D acceleration:
#pacman -S mesa
Xorg is the graphical server that manages the windows, it is the basis of every desktop environment (GNOME, KDE, Unity, Mate, Cinnamon, etc.), which allows you to run a GUI
Packages to install:
#pacman -S xorg-server xorg-xinit xorg-server-utils
IMPORTANT: Continue in ArchWiki # TestareX
Installation of GDM
to install and enable GDM simply run:
# pacman -S gdm
# systemctl enable gdm
to install gnome:
# pacman -S gnome
, basic package
# pacman -S gnome-extra
, additional package, after the basic package
For more information: ArchWiki: GNOME
In theory, the installation is finished, we hope everything went well and see you in the second part, with tips & tricks on customization and review on Arch Linux, plus my opinions.
I remind you to consult the Arch Wiki, linked above, and the forum, linked above. We assume no liability for damage caused to your machines! We recommend installing first on VirtualBox, then on a physical machine.