257 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			257 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Installation of Arch Linux
 | 
						|
 | 
						|
After creating an ISO and starting the system.
 | 
						|
See `archlinux-2024.06.01-x86_64.iso` via https://archlinux.org/download/
 | 
						|
 | 
						|
### Create a Live USB or DVD or ISO directly in a Virtual Machine
 | 
						|
 | 
						|
#### USB stick on a Linux machine
 | 
						|
 | 
						|
    # dd bs=4M if=/[path_to_archlinux.iso] of=/dev/[path_to_usb_device] statuts=progress && sync
 | 
						|
 | 
						|
Replace [path_to_archlinux.iso] with the actual path to your Arch Linux ISO file and [path_to_usb_device] with the correct path to your USB device.
 | 
						|
 | 
						|
Be careful specifieng the path to the USB device.
 | 
						|
Check the path with
 | 
						|
 | 
						|
    # lsblk
 | 
						|
 | 
						|
A USB stick is usually mounted under /run/media/ e.g.
 | 
						|
 | 
						|
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
 | 
						|
    sda           8:0    1 111.8G  0 disk 
 | 
						|
    ├─sda1        8:1    1   102G  0 part /
 | 
						|
    └─sda2        8:2    1   9.8G  0 part [SWAP]
 | 
						|
    sdb           8:16   1   3.6T  0 disk /data
 | 
						|
                                          /srv
 | 
						|
                                          /raid1
 | 
						|
    sdc           8:32   1   3.6T  0 disk 
 | 
						|
    sdd           8:48   1   7.6G  0 disk 
 | 
						|
    └─sdd1        8:49   1   7.6G  0 part /run/media/tom/TUEVAUSTRIA
 | 
						|
    sr0          11:0    1  1024M  0 rom
 | 
						|
 | 
						|
In this example the USB device partition is `sdd1` and the device itself is `sdd` which should be used as [path_to_usb_device].
 | 
						|
 | 
						|
### Start the install ISO
 | 
						|
Select **Arch Linux install medium (x86_64)** and press **Enter** to start the setup process
 | 
						|
 | 
						|
### Set the Keyboard Layout
 | 
						|
The default keymap is set to US. To list other available layouts run
 | 
						|
 | 
						|
    # ls /usr/share/kbd/keymaps/**/*.map.gz
 | 
						|
 | 
						|
To change to the German keyboard layout enter
 | 
						|
 | 
						|
    # loadkeys de-latin1
 | 
						|
 | 
						|
It is a little difficult to find the correct keys on a US keyboard. The **`y`** is swapped with the **`z`**, and the **`-`** is on the **`ß`** key.
 | 
						|
 | 
						|
### Check the Internet Connection
 | 
						|
 | 
						|
    # ping -c 3 google.com
 | 
						|
 | 
						|
### Enable Network Time Protocol (NTP)
 | 
						|
 | 
						|
    # timedatectl set-ntp true
 | 
						|
 | 
						|
To check the NTP service, use:
 | 
						|
 | 
						|
    # timedatectl status
 | 
						|
 | 
						|
### Partition the Disk
 | 
						|
 | 
						|
#### BTRF file system without a partition
 | 
						|
 | 
						|
Just to get an overview of the drives
 | 
						|
 | 
						|
    # lsblk
 | 
						|
 | 
						|
Create the filesystem with
 | 
						|
 | 
						|
    # mkfs.btrfs /dev/sdX --label arch
 | 
						|
 | 
						|
Replace X with the drive letter or if it is an nvme drive use /dev/nvmeXX with the correct drive label. `--label` or `-L` defines the Label of the drive, e.g. *arch*.
 | 
						|
 | 
						|
### Check the Mirror List for an Suitable Mirror
 | 
						|
 | 
						|
To speed up the download, set up the mirror list so that the fastest mirrors are at the top.
 | 
						|
 | 
						|
First, sync the Arch repository with `pacman`
 | 
						|
 | 
						|
    # pacman -Syy
 | 
						|
 | 
						|
Install **reflector** to be able to update the mirrors and sort them by download speed. Add reflector by running:
 | 
						|
 | 
						|
    # pacman -S reflector
 | 
						|
 | 
						|
Backup the mirror list with:
 | 
						|
 | 
						|
    # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
 | 
						|
 | 
						|
The reflector updates the mirror list, run:
 | 
						|
 | 
						|
    # reflector -c "XX" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist
 | 
						|
 | 
						|
Replace **"XX"** with the your location country code (e.g. enter "US" if you are
 | 
						|
located in the United States, or "AT,DE" if you are located close to Austria and Germany)
 | 
						|
 | 
						|
## Install Arch Linux
 | 
						|
 | 
						|
### Mount the **root** partition
 | 
						|
 | 
						|
Btrfs filesystem has the following options, which are useful to change:
 | 
						|
 | 
						|
*  **noatime**, useful to use by default because atime updates increases metadata writes. relatime is default,
 | 
						|
* **commit=300**, default is 30, the interval of periodic transaction commit,
 | 
						|
* **compress=zstd:2**, default is no, use zstd compression from [1,15] ratio. Default zstd ratio is 3.
 | 
						|
 | 
						|
#### Mount the Drive with Label *arch* to /mnt
 | 
						|
 | 
						|
    # mount -o compress=zstd:2,noatime,commit=300 LABEL=arch /mnt
 | 
						|
 | 
						|
 | 
						|
### PACSTRAP installation script for necessary packages to the bootable device
 | 
						|
 | 
						|
    # pacstrap /mnt base linux linux-firmware nano mc btrfs-progs dhcpcd
 | 
						|
 | 
						|
## Configure Arch Linux
 | 
						|
 | 
						|
### Generate fstab File
 | 
						|
The **fstab** file defines the order in which disks, partitions, block devices, and other data sources are mounted.
 | 
						|
 | 
						|
Create the **fstab** file by running:
 | 
						|
 | 
						|
    # genfstab -U /mnt >> /mnt/etc/fstab
 | 
						|
 | 
						|
### Use Arch-Chroot and Enter the Mounted Disk as Root
 | 
						|
Change the **root** to the newly installed Arch Linux system with the 'arch-chroot' command:
 | 
						|
 | 
						|
    # arch-chroot /mnt
 | 
						|
 | 
						|
    [root@archiso /]#
 | 
						|
 | 
						|
### Set the Time Zone
 | 
						|
Setting the correct time zone ensures the system clock reflects the accurate local time.
 | 
						|
 | 
						|
#### List all available time zones
 | 
						|
 | 
						|
    # find /usr/share/zoneinfo -type f | more
 | 
						|
 | 
						|
Find your timezone and make a note of the name, make an `ln`command to create a symbolic link from the timezone to */etc/localtime*. For *Europe/Vienna* run
 | 
						|
 | 
						|
    # ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime
 | 
						|
 | 
						|
#### Set the Locale
 | 
						|
 | 
						|
Open the file *locale.gen* with `nano`, and uncomment the name by removing the leading # of your preferred locale and any other you would like to use.
 | 
						|
I uncomment the line with
 | 
						|
 | 
						|
    # nano /etc/locale.gen
 | 
						|
 | 
						|
I personally like to have an English environment with European setting, so I remove the **#** for *en_DK.UTF-8 UTF-8*.
 | 
						|
    
 | 
						|
    ...
 | 
						|
    #en_CA ISO-8859-1
 | 
						|
    en_DK.UTF-8 UTF-8
 | 
						|
    #en_DK ISO-8859-1
 | 
						|
    #en_GB.UTF-8 UTF-8
 | 
						|
    ...
 | 
						|
 | 
						|
Enter **Ctr + X** to exit and type **Y** to save the changes.
 | 
						|
 | 
						|
Generate a locale configuration file with the following command:
 | 
						|
 | 
						|
    # locale-gen
 | 
						|
 | 
						|
Create the *locale.conf*, run:
 | 
						|
 | 
						|
    # echo LANG=en_DK.UTF-8 > /etc/locale.conf
 | 
						|
    # export LANG=en_DK.UTF-8
 | 
						|
 | 
						|
Set the **console keyboard layout**, make the changes persistent in *vconsole.conf(5):
 | 
						|
 | 
						|
    # echo KEYMAP=de-latin1 > /etc/vconsole.conf
 | 
						|
 | 
						|
### Set Hostname *archlinux* (or any other name)
 | 
						|
 | 
						|
    # echo archlinux > /etc/hostname
 | 
						|
 | 
						|
### Enable the DHCP, the Dynamic Host Configuration Protocol
 | 
						|
Run
 | 
						|
 | 
						|
    # systemctl enable dhcpcd
 | 
						|
 | 
						|
### Set the root password with the command **passwd**
 | 
						|
 | 
						|
    # passwd
 | 
						|
 | 
						|
## Installation of the Grub Bootloader
 | 
						|
 | 
						|
#### Installation on a Non-UEFI System
 | 
						|
 | 
						|
    # pacman -S grub os-prober
 | 
						|
    # grub-install /dev/sdX
 | 
						|
 | 
						|
Replace X with the letter of the drive you want to install GRUB on. For example `grub-install /dev/sda`.
 | 
						|
 | 
						|
Create a GRUB configuration file with:
 | 
						|
 | 
						|
    # grub-mkconfig -o /boot/grub/grub.cfg
 | 
						|
 | 
						|
#### Installation on a UEFI System
 | 
						|
 | 
						|
    # pacman -S grub efibootmgr
 | 
						|
    # mkdir /boot/efi
 | 
						|
    # mount /dev/sdX1 /boot/efi
 | 
						|
 | 
						|
Replace X with the drive letter of the disk the partition belongs to.
 | 
						|
Install Grub with:
 | 
						|
 | 
						|
    # grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi
 | 
						|
 | 
						|
Finally create GRUB configuration file:
 | 
						|
 | 
						|
    # grub-mkconfig -o /boot/grub/grub.cfg
 | 
						|
 | 
						|
## Create a New User and Set Privileges
 | 
						|
 | 
						|
#### Install `sudo` before adding a new user
 | 
						|
 | 
						|
    # pacman -S sudo
 | 
						|
 | 
						|
#### Create a New User with:
 | 
						|
 | 
						|
    # useradd -m [username]
 | 
						|
 | 
						|
Replace [username] with the real username for the system.
 | 
						|
 | 
						|
#### Create the Password
 | 
						|
 | 
						|
    # passwd [username]
 | 
						|
 | 
						|
#### Add the User to several groups, granting specific permissions:
 | 
						|
 | 
						|
    # usermod -aG wheel,audio,video,storage [username]
 | 
						|
 | 
						|
#### sudoers -- Edit the *visudo* File, uncomment the **wheel** group:
 | 
						|
 | 
						|
    # EDITOR=nano visudo
 | 
						|
#
 | 
						|
    ...
 | 
						|
    ## Uncomment to allow members of group wheel to execute any command
 | 
						|
    %wheel ALL=(ALL:ALL) ALL
 | 
						|
    ...
 | 
						|
 | 
						|
## Exit the Environment of ARCH-Chroot and Reboot
 | 
						|
 | 
						|
    # exit
 | 
						|
 | 
						|
### Unmount the **root** with:
 | 
						|
 | 
						|
    # umount -l /mnt
 | 
						|
 | 
						|
Remove the USB or CD/DVD and reboot the system with:
 | 
						|
 | 
						|
    # reboot
 | 
						|
 |