artix-install-cheatsheet/README.md

383 lines
9.7 KiB
Markdown
Raw Normal View History

2021-09-25 02:27:25 +00:00
# Artix Linux with Full Disk Encryption installation guide
This is a cheatsheet I made for myself to use it everytime I want to install Arch/Artix, or maybe even other distros like Gentoo or Slackware, the steps are very similar. You can PR suggestions or fixes if you want!
## 0. Backup your data
Every time you are going to mess around with partitions and hard drives, SSD's, etc. Always make sure to make a backup and test that backup to make sure that you are not losing your important data.
## 1. Make sure that you have an internet connection
If you want to avoid issues just plug in an ethernet cable and 99% times Internet will just work.
If for some reason you need to use Wi-fi, for Arch, you can type this command to connect to your wifi:
```
# wifi-menu
```
but for Artix it's a little bit more tricky. You have to:
```
# connmanctl enable wifi
# connmanctl scan wifi
# connmanctl services
# connmanctl connect [enter the code starting in "wifi_" that is assigned to the desired ssid here]
```
And then you can `ping` a website to make sure that you have an Internet connection.
```
# ping francoacg.com
```
## 2. Switch to the root user
If you are not `root` already, switch to the root user:
```
$ su -
```
On Artix, it will prompt for a password, which is `artix`
## 3. Check wether you are using UEFI or not
This will change just a couple of steps later
```
# ls /sys/firmware/efi/efivars
```
If you see a bunch of stuff comming out, you are using UEFI. If you see something like "No such file or directory", you are using BIOS.
Keep that in mind for the next steps.
## 4. Identify your drive
Run
```
# fdisk -l
```
to list your devices. The one with the most capacity is likely the one where you want to install your OS. If you have a SATA drive, it will probably be `/dev/sda` or `/dev/sdb`. If you have an nVME drive, it will probably be `/dev/nvme0n1`. Be careful with this to make sure that you are going to use the right drive.
## 5. Drive format and partitioning
WARNING: If you want to dualboot (probably with Windows), you have to skip this step and do other steps instead, but we will not cover that in this guide for now.
Again, make sure to chose the right drive. In my case, I will be using `/dev/vda` because I'm testing this on a virtual machine, but in your case it will probably be `/dev/sda` or `/dev/nvme0n1`.
NOTE: If you don't have UEFI, just skip the EFI partitions steps
Start formatting the drive
```
# fdisk /dev/vda
```
Create a GPT partition. This is required if you have UEFI. On BIOS it doesn't really matter
```
Command (m for help): g
```
512M EFI partition
```
Command (m for help): n
Partition number (1-128, default 1):
First sector (...):
Last sector (...): +512M
Command (...): t
Partition type or alias (type L to list all): 1
```
512M BOOT partition
```
Command (m for help): n
Partition number (2-128, default 2):
First sector (...):
Last sector (...): +512M
```
LVM partition
```
Command (m for help): n
Partition number (3-128, default 3):
First sector (...):
Last sector (...):
Command (...): t
Partition number (1-3, default 3):
Partition type or alias (type L to list all): 30
```
Write changes
```
Command (...): w
```
Format the EFI partition
```
# mkfs.fat -F32 /dev/vda1
```
Format the BOOT partition
```
# mkfs.ext4 /dev/vda2
```
## 6. Setup encryption
Create the encrypted partition with a passphrase, then the LVM volume and partitions
```
# cryptsetup luksFormat /dev/vda3
# cryptsetup open --type luks /dev/vda3 lvm
# pvcreate --dataalignment 1m /dev/mapper/lvm
# vgcreate volgr0 /dev/mapper/lvm
# lvcreate -l 100%free volgr0 -n lv_root
# modprobe dm_mod
# vgscan
# vgchange -ay
# mkfs.ext4 /dev/volgr0/lv_root
# mount /dev/volgr0/lv_root /mnt
# mkdir /mnt/boot
# mount /dev/vda2 /mnt/boot
```
Generate the fstab with UUID
Note: in Artix its `fstabgen` and in Arch its `genfstab`
```
# mkdir /mnt/etc
# fstabgen -U -p /mnt >> /mnt/etc/fstab
```
## 7. Actually installing the system
Note: `pacstrap` for Arch and `basestrap` for Artix
Note: Replace `<init>` by your init system of choice or don't put any if you are on Arch (Systemd)
Note: Don't put `linux-firmware` if you don't want proprietary drivers
We can install all we need at once:
```
basestrap /mnt base base-devel linux linux-firmware <init> elogind-<init> cryptsetup networkmanager networkmanager-<init> wpa_supplicant wireless_tools lvm2 sudo grub efibootmgr dosfstools os-prober mtools vim
```
Chroot to the installation. `arch-chroot` for Arch and `artix-chroot` for Artix
```
# artix-chroot /mnt
```
Enable networkmanager
OpenRC:
```
# rc-update add NetworkManager
```
Runit:
```
# ln -s /etc/runit/sv/NetworkManager /etc/runit/runsvdir/default
```
Enable disk decryption at startup
```
/etc/mkinitcpio.conf
HOOKS=(base udev ... block encrypt lvm2 ...)
```
Apply changes
```
# mkinitcpo -P
```
Setup your server of preference. Just copy it at top like so
```
vim /etc/pacman.d/mirrorlist
Server = https://us-mirror.artixlinux.org/$repo/os/$arch
```
Setup the timezone
```
ln -sf /usr/share/zoneinfo/Your/Timezone /etc/localtime
```
Sync your hardware clock
```
hwclock --systohc
```
Configure your locale by uncommenting the lines that you want
```
/etc/locale.gen
en_US.UTF-8 UTF-8
en_US.ISO-8859-1
```
Generate the locale
```
# locale-gen
```
Put your locale at this file like so
```
/etc/locale.conf
LANG=en_US.UTF-8
```
Setup hostname
```
/etc/hostname
your-hostname
```
Setup hosts
```
/etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 your-hostname.localdomain your-hostname
```
Set the root password
```
# passwd
```
Create your user
```
# useradd -m -g users -G wheel <your-user>
```
Set the password for the created user
```
# passwd <your-user>
```
Give sudo privileges to the user by spawning `visudo` and uncomment the line
```
# EDITOR=vim visudo
%wheel ALL=(ALL) ALL
```
Install GRUB
With UEFI
```
# mkdir /boot/EFI
# mount /dev/vda1 /boot/EFI
# grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
```
With BIOS
```
# grub-install --target=i386-pc --recheck /dev/vda
```
Set the locale for GRUB
```
# mkdir /boot/grub/locale
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
```
Enable encryption for GRUB by uncommenting `GRUB_ENABLE_CRYPTODISK=y` and adding `cryptdevice=UUID=<uuid-of-/dev/vda3>:volgr0:allow-discards` to the kernel parameters
Get partition UUID:
```
# blkid /dev/vda3
```
```
/etc/default/grub
GRUB_CMDLINE_LINUX="cryptdevice=UUID=<uuid>:cryptlvm root=/dev/volgr0/lv_root"
GRUB_ENABLE_CRYPTODISK=y
```
Save the config
```
# grub-mkconfig -o /boot/grub/grub.cfg
```
Now you can finally reboot!
## 8. Post installation
2021-09-27 21:44:59 +00:00
### Update the system
```
# pacman -Syu
```
### Make a swapfile
```
# dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# cp /etc/fstab /etc/fstab.bak
# echo '/swapfile none swap sw 0 0' >> /etc/fstab
```
### Install Paru
```
$ sudo pacman -S git
$ git clone https://aur.archlinux.org/paru.git
$ cd paru
$ makepkg -si
$ cd ..
$ rm -rf paru/
```
### Install xorg
```
$ sudo pacman -S xorg xf86-video-intel vulkan-intel
```
### Install a display manager
```
$ sudo pacman -S lightdm lightdm-<init-system> lightdm-gtk-greeter
$ sudo rc-update add lightdm //OpenRC
```
### Intel backlight
2021-09-28 01:40:19 +00:00
Probably you won't need this if you use `xbacklight` (install the `xorg-xbacklight` package), but if for some reason xbacklight doesn't work, you can use intel_baclkight:
2021-09-27 21:44:59 +00:00
Allow the `video` group
```
/etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", GROUP="video", MODE="0664"
RUN+="/bin/chgrp video /sys/class/backlight/intel_backlight/brightness"
RUN+="/bin/chmod g+w /sys/class/backlight/intel_backlight/brightness"
```
### English international keyboard
Run
```
# setxkbmap -rules evdev -model evdev -layout us -variant altgr-intl
```
Or persist it on the xorg settings
```
/etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbLayout" "us"
Option "XkbVariant" "altgr-intl"
EndSection
```
### Touchpad
Install
```
$ sudo pacman -S libinput xf86-input-libinput xorg-xinput
```
Enable natural scrolling and tab click
```
/etc/X11/xorg.conf.id/30-touchpad.conf
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "NaturalScrolling" "true"
EndSection
```
### Install dmenu
```
$ sudo pacman -S git
$ git clone https://git.suckless.org/dmenu
$ cd dmenu
$ make && sudo make clean install
```
2021-09-28 01:40:19 +00:00
### Enable more repositories!
Install Arch linux mirrorlist and keyring
```
sudo pacman -S archlinux-mirrorlist archlinux-keyring
```
2021-09-27 21:44:59 +00:00
```
/etc/pacman.conf
[universe]
Server = https://universe.artixlinux.org/$arch
2021-09-28 01:40:19 +00:00
# ARCH
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
[multilib]
Include = /etc/pacman.d/mirrorlist-arch
2021-09-27 21:44:59 +00:00
```
### Optimus-manager for hybrid-GPU laptops
You will need the Universe repository for this
```
$ sudo pacman -S optimus-manager-<init> <DM>-optimus-<init> optimus-manager-git
```
And then enable the `optimus-manager` service.
Example with OpenRC
```
$ sudo pacman -S optimus-manager-openrc lightdm-optimus-openrc optimus-manager-git
$ sudo rc-update add optimus-manager
```
### Useful programs
- Xorg and dependencies for DWM or Dmenu: `pacman -S xorg xorg-server libxinerama`
- Pipewire audio backend: `pacman -S pipewire pipewire-docs pipewire-alsa pipewire-pulse pipewire-jack`
2021-09-27 23:32:13 +00:00
- Polkit (ask for permissions): `pacman -S polkit <whatever polkit frontent u want>`
2021-09-27 21:44:59 +00:00
- Tiling window manager written in Rust: `leftwm`
2021-09-25 02:27:25 +00:00
- Notification system: `dunst`
2021-09-27 21:44:59 +00:00
- Disk usage utility: `ncdu`
2021-09-25 02:27:25 +00:00
- Nice looking disk encryption password prompt: `plymouth`
2021-09-27 21:44:59 +00:00
- Graphical xrandr for screen configuration: `arandr`
2021-09-27 23:32:13 +00:00