Added Artix installation guide

This commit is contained in:
Kristofers Solo 2023-08-04 20:25:58 +03:00
parent 862214f4f6
commit 1c9f312c04

426
guides/artixinstallation.md Normal file
View File

@ -0,0 +1,426 @@
# Artix Linux Installation Guide (runit version)
<!-- toc -->
- [Pre-installation](#pre-installation)
* [Partition the disks](#partition-the-disks)
+ [Example layout](#example-layout)
* [Format the partitions](#format-the-partitions)
* [Mount the file systems](#mount-the-file-systems)
+ [Flag explanation](#flag-explanation)
- [Installation](#installation)
* [Install essential packages](#install-essential-packages)
- [Configure the system](#configure-the-system)
* [Fstab](#fstab)
* [Chroot](#chroot)
* [Time zone](#time-zone)
* [Localization](#localization)
* [Variations](#variations)
* [Boot loader](#boot-loader)
+ [For BIOS systems](#for-bios-systems)
+ [For UEFI systems](#for-uefi-systems)
* [Root password](#root-password)
* [Add user(s)](#add-users)
* [Configure sudo](#configure-sudo)
* [Package manager](#package-manager)
* [Network configuration](#network-configuration)
* [Reboot the system](#reboot-the-system)
- [Post-installation configuration](#post-installation-configuration)
* [Desktop Environment](#desktop-environment)
* [Display Login Manager](#display-login-manager)
+ [KDE](#kde)
+ [GNOME](#gnome)
* [Wi-Fi](#wi-fi)
* [Optional](#optional)
+ [Reflector](#reflector)
+ [Paru](#paru)
<!-- tocstop -->
## Pre-installation
### Partition the disks
Partition your hard drive with [cfdisk](https://man.archlinux.org/man/cfdisk.8).
It can be _sda_, _sdb_, _sdc_, _nvme0n1_ or other drive names.
```shell
cfdisk /dev/sdx
```
Chose `dos` if available.
#### Example layout
- `boot` - 256M
- `swap` - (optional, recommended size is the size of RAM or half of it)
- `root` - 30GB (10GB for root in VM will be enough, but on physical hardware 30GB-50GB is recommended)
- `home` - rest of the drive
### Format the partitions
```shell
mkfs.fat -F 32 /dev/sdx1 # boot partition
fatlabel /dev/vda1 boot
mkswap -L swap /dev/sdx2 # swap partition, if created
mkfs.ext4 -L root /dev/sdx3 # root partition
mkfs.ext4 -L root /dev/sdx4 # home partition
```
You can replace [ext4](https://wiki.archlinux.org/title/ext4) with [btrfs](https://wiki.archlinux.org/title/Btrfs).
### Mount the file systems
```shell
mount -L root /mnt
mount -Lm boot /mnt/boot
mount -Lm home /mnt/home
swapon /dev/sdx2
```
#### Flag explanation
- `-L, --label` - Mount the partition that has the specified label.
- `-m, --mkdir` - Allow to make a target directory (mountpoint) if it does not exist yet.
Mount additional drives/partitions if exist and needed with:
```shell
mount /dev/sdy /mnt/exampleFolder
```
## Installation
### Install essential packages
Use the **basestrap** script to install the base package, Linux [kernel](https://wiki.archlinux.org/title/Kernel) and firmware for common hardware:
```shell
basestrap /mnt base base-devel linux linux-firmware runit elogind-runit
```
## Configure the system
### Fstab
Generate an [fstab](https://wiki.archlinux.org/title/Fstab) file:
```shell
fstabgen -U /mnt >> /mnt/etc/fstab
```
### Chroot
[Change root](https://wiki.archlinux.org/title/Chroot) into the new system:
```shell
artix-chroot /mnt bash
```
### Time zone
Set the [time zone](https://wiki.archlinux.org/title/System_time#Time_zone):
```shell
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
```
Run [hwclock](https://man.archlinux.org/man/hwclock.8) to generate `/etc/adjtime`:
```shell
hwclock --systohc
```
### Localization
Install any text editor ([vim](https://wiki.archlinux.org/title/Vim), [nano](https://wiki.archlinux.org/title/Nano)) of your choice.
```shell
pacman -S vim
```
Edit `/etc/locale.gen` and uncomment `en_US.UTF-8 UTF-8` and other needed locales.
```shell
vim /etc/locale.gen
```
Generate the locales by running:
```shell
locale-gen
```
Create the [locale.conf](https://man.archlinux.org/man/locale.conf.5) file, and set the LANG variables accordingly:
```shell
vim /etc/locale.conf
```
```config
LANG=en_US.UTF-8
```
### Variations
If you want to specify which time, number, etc. formats to use, you can do so using the following variables:
- `LANG`
- `LANGUAGE`
- `LC_ADDRESS`
- `LC_COLLATE`
- `LC_CTYPE`
- `LC_IDENTIFICATION`
- `LC_MEASUREMENT`
- `LC_MESSAGES`
- `LC_MONETARY`
- `LC_NAME`
- `LC_NUMERIC`
- `LC_PAPER`
- `LC_TELEPHONE`
- `LC_TIME`
For example:
```config
LC_ADDRESS=lv_LV.UTF-8
LC_IDENTIFICATION=lv_LV.UTF-8
LC_MEASUREMENT=lv_LV.UTF-8
LC_MONETARY=lv_LV.UTF-8
LC_NUMERIC=lv_LV.UTF-8
LC_PAPER=lv_LV.UTF-8
LC_TELEPHONE=lv_LV.UTF-8
LC_TIME=lv_LV.UTF-8
```
### Boot loader
First install `grub` and `os-prober` (to detect other operating systems installed):
```shell
pacman -S grub os-prober efibootmgr
```
If `ls /sys/firmware/efi/efivars` lists files, you have a UEFI system.
```shell
ls /sys/firmware/efi/efivars
```
Install grub:
#### For BIOS systems
```shell
grub-install --recheck /dev/sdx
```
#### For UEFI systems
```shell
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
```
To enable os-prober uncomment `GRUB_DISABLE_OS_PROBER=false` in `/etc/default/grub` file:
To enable os-prober, `GRUB_DISABLE_OS_PROBER=false` in `/etc/default/grub`:
```shell
vim /etc/default/grub
```
Must be at the end of the file.
Make config
```shell
grub-mkconfig -o /boot/grub/grub.cfg
```
### Root password
Set the root password:
```shell
passwd
```
### Add user(s)
Create a regular user and password. Replace _username_ with your desired username.
```shell
useradd -mG username wheel
passwd username
```
### Configure sudo
Uncomment `%whell ALL=(ALL:ALL) ALL` or `%whell ALL=(ALL:ALL) NOPASSWD: ALL` for no password option:
```shell
vim /etc/sudoers
```
### Package manager
Enable several handy features of [pacman](https://man.archlinux.org/man/pacman.8) package manager:
```shell
vim /etc/pacman.conf
```
Uncomment/add the following lines:
```config
Color # Automatically enable colors only when pacmans output is on a tty.
VerbosePkgLists # Displays name, version and size of target packages formatted as a table for upgrade, sync and remove operations.
ParallelDownloads = 12 # Specifies number of concurrent download streams. The value needs to be a positive integer. The number of CPU threads on your computer is recommended.
ILoveCandy # Otherwise what is the point of using Arch Linux at all?
[lib32] # Enable 32bit repository (required by steam)
Include = /etc/pacman.d/mirrorlist
# Add the following to enable Arch Linux repositories
[universe]
Server = https://universe.artixlinux.org/$arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
[multilib]
Include = /etc/pacman.d/mirrorlist-arch
```
Install Arch Linux mirrorlist.
```shell
pacman -S wget
wget https://github.com/archlinux/svntogit-packages/raw/packages/pacman-mirrorlist/trunk/mirrorlist -O /etc/pacman.d/mirrorlist-arch
```
Install and populate Arch Linux keys:
```shell
pacman -Syu artix-archlinux-support
pacman-key --populate archlinux
```
Read more about Artix Linux repositories [here](https://wiki.artixlinux.org/Main/Repositories).
### Network configuration
Create the [hostname](https://wiki.archlinux.org/title/Network_configuration#Set_the_hostname) file and enter machine name.
Replace _myhostname_ with a name that will be seen by other devices on the same network.
```shell
vim /etc/hostname
```
```config
myhostname
```
Add matching entries to hosts:
```shell
vim /etc/hosts
```
```config
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
```
If the system has a permanent IP address, it should be used instead of `127.0.1.1`.
Install and enable [networkmanager](https://wiki.archlinux.org/title/NetworkManager) and/or [bluez](http://www.bluez.org/):
```shell
pacman -S dhcpcd networkmanager-runit bluez-runit git
```
Enable NetworkManager and/or bluetoothd at launch.
```shell
ln -s /etc/runit/sv/NetworkManager /etc/runit/runsvdir/default
ln -s /etc/runit/sv/bluetoothd /etc/runit/runsvdir/default
```
### Reboot the system
```shell
exit # exit chroot environment
umount -R /mnt
reboot
```
## Post-installation configuration
Once shutdown is complete, remove your installation media.
If all went well, you should boot into your new system. Log in as your root to complete the post-installation configuration.
See [Arch linux's general recommendations](https://wiki.archlinux.org/title/General_recommendations) for system management directions and post-installation tutorials.
### Desktop Environment
Install your favorite desktop environment, for example [KDE](https://kde.org/), [GNOME](https://www.gnome.org) or other.
```shell
pacman -S plasma kde-applications sddm-runit
```
```shell
pacman -S gnome gdm-runit
```
### Display Login Manager
Enable login manager at launch.
#### KDE
```shell
ln -s /etc/runit/sv/sddm /run/runit/service/
sv start sddm
```
#### GNOME
```shell
ln -s /etc/runit/sv/gdm /run/runit/service/
sv start gdm
```
### Wi-Fi
To connect to Wi-Fi run:
```shell
nmcli dev wifi list # list all available networks
nmcli dev wifi -a connect "name" # connect to network
```
### Optional
#### Reflector
Install [reflector](https://wiki.archlinux.org/title/reflector) for better Arch Linux mirror setup:
```shell
sudo pacman -S reflector
sudo reflector --sort rate --protocol https --save /etc/pacman.d/mirrorlist-arch --latest 200
```
#### Paru
Install [paru](https://github.com/Morganamilo/paru) - [AUR helper](https://wiki.archlinux.org/title/AUR_helpers):
```shell
git clone https://aur.archlinux.org/paru-bin
cd paru-bin
makepkg -si
```