From 1c9f312c0468a31a2ab03efd00f57f8ff879fbef Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Fri, 4 Aug 2023 20:25:58 +0300 Subject: [PATCH] Added Artix installation guide --- guides/artixinstallation.md | 426 ++++++++++++++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 guides/artixinstallation.md diff --git a/guides/artixinstallation.md b/guides/artixinstallation.md new file mode 100644 index 0000000..35957db --- /dev/null +++ b/guides/artixinstallation.md @@ -0,0 +1,426 @@ +# Artix Linux Installation Guide (runit version) + + + +- [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) + + + +## 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 pacman’s 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 +```