3. Base Installation
Table of Contents
Install base packages
Install using the script
If you’re new to Linux and unsure what packages to install, download this script:
Arch Linux Base Packages Installation Script
Using “lynx”, highlight this link and press <Enter> followed by <d> to download the file. Choose “Save to disk” and press <Enter>. When prompted for a filename, leave it as is and press <Enter> again to save.
Or use curl:
curl -o base-install.sh -k https://archguide.vercel.app/base-install.sh
Then type:
chmod +x base-install.sh
./base-install.sh
All the packages being installed are the same as in the “Install manually” section.
Install manually
First install indirect dependencies of the “base” package:
pacstrap /mnt cryptsetup device-mapper e2fsprogs less
- cryptsetup - allows access and management of encrypted devices
 - device-mapper - a kernel component for logical volume management
 - e2fsprogs - utilities for handling the “ext2”, “ext3” and “ext4” file systems
 - less - a terminal based program for viewing text files
 
Then proceed with installing everything else:
pacstrap /mnt ...
Here is a list of packages to install next:
Base:
- base - Minimal package set to define a basic Arch Linux installation
 - s-nail - Environment for sending and receiving mail, required by “base”
 
Microcode:
Choose the CPU firmware according to your manufacturer.
- intel-ucode
 - amd-ucode
 
Kernel:
Installing a kernel you have to pick one of the two options:
- linux - The latest stable release of Linux kernel and its modules
 - linux-lts - The Long-term support Linux kernel and its modules
 
For new users a suggestion is to choose “linux-lts”. You can always switch to “linux” or vise-versa later. Both kernels updating on a regular basis.
Firmware:
- linux-firmware
 
File system utilities:
- jfsutils
 - reiserfsprogs
 - sysfsutils
 - xfsprogs
 
Administrative utilities:
- htop - Interactive process viewer
 - logrotate - Utility for automatic rotation of system logs
 - mdadm - A tool for managing md service arrays
 - which - A utility to show full path of commands
 
Permission elevation:
- sudo - Gives users the ability to run commands as root
 - doas - Simplified and lightweight alternative to “sudo”
 
For new users a suggestion is to choose “sudo”.
Security:
- ufw - A dead-simple firewall
 
Storage management:
- lvm2 - Logical Volume Manager 2 utilities
 - udisks2 - Disk management service
 
External devices management:
- bluez* - Daemons for the Bluetooth protocol stack
 - bluez-utils* - Bluetooth management utilities
 - usbutils - A collection of USB tools to query connected USB devices
 
\* - Optional.
Web Browser:
- links - Text and graphics WWW browser
 - lynx - A text browser for the World Wide Web
 
Terminal multiplexer:
- screen - Full-screen window manager that multiplexes a physical terminal
 
Text Editors:
- nano - A small and simple text editor
 - vi - Required by the “visudo” which helps to safely edit “/etc/sudoers”
 - vim - An improved Vi text editor
 
Documentation:
- man-db
 - man-pages
 - texinfo
 
Network utilities:
- connman - Command-line network manager
 - dhcpcd - DHCP client daemon
 - inetutils - A collection of common network programs
 - iproute2 - Programms for basic and advanced IPv4 and IPv6 networking
 - iw - Configuration utility for wireless devices
 - openssh - A tool for remote login with the SSH protocol
 - openvpn - An easy and configurable VPN
 - wpa_supplicant - A utility providing key negotiation for WPA networks
 
System utilities:
- diffutils - Utility programs for creating patch files
 - gcc - The GNU Compiler Collection
 - make - The GNU make utility for maintaining groups of programs
 - pkgconf - Package compiler and linker metadata toolkit
 
Sound server:
- pulseaudio
 - pulseaudio-alsa
 - pulseaudio-bluetooth*
 
\* - Optional.
Languages:
- perl
 - python
 - python-pip
 
The process of the installation will take a little while. If “pacstrap” warns you about some package it didn’t found, check the last command for a typo.
Generate the fstab
genfstab -U /mnt >> /mnt/etc/fstab
Chroot
arch-chroot /mnt
Set time zone
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
To list available regions and cities, press <Tab> at appropriate positions while entering the command.
Set localization
vim /etc/locale.gen
Uncomment needed locales:
NOTE: Non-English speaking users should uncomment respective locales for their language.
en_US.UTF-8 UTF8
en_US ISO-8859-1
Save the file and run:
locale-gen
Lastly, execute the following command:
echo LANG=en_US.UTF-8 > /etc/locale.conf
---