scripts/afu/README.ARCH.md

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