Jeszcze jedna instrukcja instalacji Arch Linux (i3)

Arch Linux jest systemem, który kocham za elastyczność i wygodę użytkowania. Jego instalacja uchodzi za jedną z trudniejszych, ponieważ przenosi na nas ciężar decydowania o wielu szczegółach, którymi nie przejmujemy się podczas codziennej pracy z komputerem.

Za przykład niech posłuży wybór klienta DHCP, dzięki któremu możemy dostać adres IP, maskę podsieci, adres bramy domyślnej i adresy serwerów DNS. Są dwa dostępne programy do obsługi protokołu DHCP. Od Ciebie zależy, który z nich zainstalujesz:

Network configuration (Polski) - ArchWiki

Tego typu decyzji podejmujemy przy instalacji arch linux więcej, dlatego najlepszym źródłem wiedzy będzie zawsze ArchWiki. Ten artykuł ma na celu pokazanie mojej instalacji, którą możesz powtórzyć w całości lub wybrać z niej wartościowe dla Ciebie elementy i wkomponować je we własną pasującą do Ciebie instalację.

Instalacja zostanie pokazana zarówno na komputerze z UEFI jak i BIOS.

Kolejno omówimy:

  1. Podłączenie do sieci wifi
  2. Instalację systemu
  3. Instalację managera okien i3-gaps
  4. Konfigurację i3 i podstawowych programów

Rdzeń instalacji przedstawia poniższa grafika, ale niektóre komendy będą się u nas różnić.

Przygotowanie bootowalnego pendrive

Obraz ISO Archa możemy pobrać z torrentów:

Arch Linux - Downloads

Jednak ponieważ płyty CD nie są już używane, domyślnym działaniem jest wgranie go na USB. Żeby to zrobić wkładamy pendrive do komputera i sprawdzamy jaką nazwę dostał jednym z poleceń dmesg | grep Attached, df -h lub lsblk.

W naszym przypadku jest to sde. Odmontowujemy pendrive komedą:

sudo umount /dev/sde1

Po czym z katalogu zawierającego obraz iso wgrywamy go na pendrive.

sudo dd bs=8M if=arch.iso of=/dev/sde status=progress

Po włożeniu pendrive do docelowej maszyny i uruchomieniu zwykle należy użyć F12 przy starcie, ale to zależy od modelu komputera i ustawień BIOS.

Jeśli się uda powinniśmy zobaczyć:

Po zatwierdzeniu przez ENTER trafimy do konsoli instalatora

Podłączenie sieci wifi przez iwctl

Nawiązanie połączenia z internetem jest naszym pierwszym zadaniem.

Zaczniemy od listy dostępnych urządzeń, wpisujemy iwctl a następnie device list.

Lista sieci dostępna jest po wpisaniu station wlan0 get-networks

Podłączamy się do wybranej sieci poleceniem station wlan0 connect TP-Link_CEC8 i podajemy hasło.

W przypadku bardzo starego laptopa Acer Aspire One - miałem błąd ze sterownikami wifi i musiałem podłączyć się przez ethernet.

Arch Linux (dual boot with Win 10). Kernel panic - not syncing: Fatal exception in interrupt. Caps Lock indicator blinking until reboot
On my laptop I have Arch Linux and Windows 10 installed (BIOS MBR). When I’m using Arch occasional kernel panic occurs. This happens mostly when I install some packages using pacman.Last time I st...

Aby wyłączyć iwctl wpisujemy quit.

Do sprawdzenia, czy mamy poprawnie nawiązane połączenie możemy użyć

ping -c 3 google.com

Instalacja Arch

Instalujemy reflector

pacman -Sy reflector

Aktualizujemy listę repozytoriów

reflector -c "Poland" --latest 5 --sort rate --save /etc/pacman.d/mirrorlist

Jeśli twój internet jest wolny dodaj falgę --download-timeout, np.:

reflector -c "Poland" --latest 5 --sort rate --download-timeout 60 --save /etc/pacman.d/mirrorlist
Reflector returns “failed to rate http(s) download: Download ......” ! / Newbie Corner / Arch Linux Forums

Za pomocą fdisk -l lub lsblk wyświetlamy dostępne dyski

Jeśli zobaczymy błąd

GPT PMBR size mismatch will be corrected by w(rite)

naprawiamy go wpisując

parted -l

a następnie fix.

Partycje można poustawiać poleceniem

cfdisk /dev/sda

oczywiście adres dysku może u Ciebie być inny niż /dev/sda. Wybieramy typ linux (x86).

Teraz musimy okreslicz czy instalujemy system bootawny z biosa czy przez uefi. Jesli nie wiemy sprawdzmy czy nasza plyta gowna obsluguje UEFI i jesli tak to lepiej wybrac uefi. Jesli masz nowy komputer mozesz pominac rozdzial "BIOS" i przejsc do "UEFI".

BIOS

Na starszych komputerach użyjemy biosa. Programem cfdisk lub fdisk mozemy ustawic:

  • bootowalna patrycje sda1 z typem 83 Linux
  • nie bootowalna partycje sda2 z typem 82 Linux Swap

Fortsmtujemy utworzona partycje

mkfs.ext4 /dev/sda1

Montujemy gotowa partycje do /mnt

mount /dev/sda1 /mnt

Możemy teraz pominąć fragment "UEFI" i przejść do "Pacstrap"

UEFI

W przypadku UEFI musimy przygotować tabelę GPT. Możesz użyć do tego bardziej przyjazdnego programu cfdisk, lub bardziej zaawansowanego fdisk. Poniżej pokazuję to w fdisk.

fdisk /dev/sda

wybieramy opcję g

Tworzymy partycję uefi wybierając kolejno n (nowa), ENTER (nie zmieniamy punku pierwszego sektora), +200M (ustawiamy ostatni sektor na + 200 MB.

Ustawiamy typ na EFI System przez t (jak type), 1 (numer typu EFI System).

Tworzymy drugą partycję n (new), ENTER (domyślny numer 2), ENTER (domyślny początkowy blok), ENTER (domyślny końcowy blok).

Zapisujemy zmiany wybierając w.

Formatowanie partycji UEFI na fat 32

mkfs.fat -F32 /dev/sda1

Formatowanie na system plików drugiej partycji na ext4:

mkfs.ext4 /dev/sda2

Montujemy partycję na system do katalogu /mnt.

mount /dev/sda2 /mnt

A partycję na uefi do /mnt/boot, najpierw musimy utworzyć ten katalog

mkdir /mnt/boot

i teraz zamontować

mount /dev/sda1 /mnt/boot

Dzięki poleceniu slblk możemy sprawdzić, czy montowanie jest poprawne.

Pacstrap

I instalujemy system poleceniem pacstrap

pacstrap /mnt base linux linux-firmware nano

Generujemy plik fstab.

genfstab -U /mnt >> /mnt/etc/fstab

Wchodzimy do zainstalowanego systemu

arch-chroot /mnt /bin/bash

Swapfile

Przygotowujemy swap:

fallocate -l 2GB /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Do /etc/fstab dodajemy

/swapfile none swap defaults 0 0

Strefa czasowa

Ustawiamy strefę czasową

ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime

Generujemy adjtime żeby zsynchronizować zegar systemowy ze sprzętowym

hwclock --systohc

Język

Ustawimy lokalizację kasując komentarz jednej z linii pliku locale.gen

nano /etc/locale.gen

Generujemy obsługę języków

locale-gen

W pliku /etc/locale.conf wpisujemy LANG=pl_PL.UTF-8

echo LANG=pl_PL.UTF-8 > /etc/locale.conf

A w /etc/vconsole.conf

KEYMAP=pl
FONT=Lat2-Terminus16
FONT_MAP=8859-2

Sieć

W /etc/hostname ustawiamy nazwę hosta. Jest to nazwa naszego komputera - przydatna jeśli mamy kilka urządzeń w sieci lokalnej.

W /etc/hosts dodajemy linie

127.0.0.1    localhost.localdomain    preciselab

trzecia kolumna zawiera nazwę hosta wybrana poprzednio.

Instalujemy networkmanager.

pacman -S networkmanager dhcpcd

Włączamy usługę NetworkManager

systemctl enable NetworkMananger

Przydatne paczki

Jest to indywidualna decyzja, jakie jeszcze inne pakiety powinien zawierać system. Wymienię i opiszę kilka polecanych przeze mnie.

  • network-manager-applet - frontend do zarządzania połączeniami z siecią
  • wireless_tools - otwarty projekt sponsorowany przez HP - zawiera narzędzia takie jak iwconfig iwlist iwspy wipriv oraz ifrename do obsługi sieci wifi
  • wpa_supplicant - wsparcie dla szyfrowanych wifi WEP, WPA, WPA2 and WPA3 - dzisiaj niezbędny
  • dialog - paczka do wyświetlania okien dialogowych ze skryptów w bashu, wymagana do używania wifi-menu
  • netctl - konsolowe narzędzie do zarządzania sieciami ( zawiera wifi-menu )
  • os-prober - narzędzie do wykrywania innych systemów operacyjnych i urządzeń, przydatne jeśli grub ich nie widzi
  • base-devel - zestaw paczek do kompilacji, obróbki tekstu i kompresji
  • linux-headers - skrypty do budowania modułów jadra systemowego
  • reflector - skrypt do automatyzacji wyboru serwerów lustrzanych
  • git - system kontroli wersji używany do programowania i instalacji pakietów
  • cups - rozwijany przez Apple system do obsługi drukarek
  • xdg-utils - narzędzia pomocnicze dla aplikacji XDG MIME
  • xdg-user-dirs - narzędzie do integracji katalogu użytkownika z innymi programami, w szczególności przydatne dla managerów plików
  • openssh - oprogramowanie do połączenia się przez ssh
  • iwd - narzędzie do łączenia się z siecią np przez iwctl

Możemy je zainstalować poleceniem:

pacman -S network-manager-applet wireless_tools wpa_supplicant dialog netctl os-prober base-devel linux-headers reflector git cups xdg-utils xdg-user-dirs openssh iwd

Jeśli chcesz używać bluetooth to przydadzą Ci się jeszcze bluez bluez-utils.

Teraz zainstalujemy bootloader, żeby system mógł poprawnie wystartować. W zależności od tego czy wybrałeś opcje BIOS czy UEFI przejdź do odpowiedniego rozdziału.

Boot loader w BIOS

Instalujemy bootloader

pacman -S grub

używamy komendy grub-install

grub-install /dev/sda

i tworzymy plik konfiguracyjny gruba

grub-mkconfig -o /boot/grub/grub.cfg

Boot loader w UEFI

Instalujemy bootloader

pacman -S grub efibootmgr

używamy komendy grub-install

grub-install --target=x86_64-efi --efi-direcotry=/boot --bootloader-id=GRUB

w przypadku błędu

this GPT partition label contains no BIOS Boot Partition

naprawiamy poleceniem

parted /dev/sda
set 1 boot off
set 1 bios_grub on
q
grub2-install: “this GPT partition label contains no BIOS Boot Partition”
There seems to be quite a bit of discussion about this but I can’t find a simple answer. When I try to install grub2 I get this error: # grub2-install /dev/sdaInstalling for i386-pc platform.gr...

W przypadku błędu

"EFI variables are not supported on this system"

wychodzimy z chroot przez exit i wpisujemy

modprobe efivars
“EFI variables are not supported on this system”
I am attempting to install Arch linux to a new (and very crappy) HP Pavillion 15 Notebook. This is a UEFI-based machine. After several swings at it, I have managed to get pretty far. Legacy mode...

Jeśli zobaczymy błąd

Module efivars not found in directory /lib/modules/5.10.3-arch1-1

musimy włączyć komputer ponownie w trybie efi. Jest tak dlatego, że cześć maszyn może wybierać czy włącza się w trybie bios czy efi.

Dokumentacja mówi, że możemy sprawdzić czy to działa wpisując:

efivar-tester

ale nie polecam tej metody, u mnie zapętla się w nieskończoność i nie da się tego wyłączyć inaczej niż sprzętowo wyłączając komputer.

Tworzymy plik konfiguracyjny dla gruba

grub-mkconfig -o /boot/grub/grub.cfg

Użytkownicy

Aby na co dzień moc poslugiwac sie systemem bez uprawnień roota a jednocześnie móc szybko nabywać, zainstalujemy sudo

pacman -S sudo

Ustawiamy hasło dla root

passwd root

Dodajemy użytkownika do codziennego użytku

useradd -m -g users -G wheel -s /bin/bash daniel

Dajemy mu hasło

passwd daniel

Grupie wheel pozwalamy na używanie sudo.

EDITOR=nano visudo

kasujemy komentarz przed linią

%wheel ALL=(ALL) ALL

Wychodzimy z instalatora

exit

Odmontowujemy partycję

umount /mnt

Wyłączamy komputer

shutdown -P now

Problemy sieciowe

Jeśli po wpisaniu

ip addr

interfejsy są wyłączone to można je włączyć przez

ip link set dev <interface> up

Do sprawdzenia, które interfejsy warto włączyć przydatne może być nmcli.

Jeśli nie możesz włączyć interfejsu, ale znasz nazwę i hasło sieci możesz spróbować bezpośredniego połączenia podążając za zaleceniami z linku:

how do I attach devices to connections using nmcli?
An installation of CentOS 7 has two connections and three devices. How can I attach the device ens7 to the connection my-bridge? And how can I attach the device eth0 to the connection my-eth1? ...

nie mam pojęcia dlaczego to działa.

Jeśli tłumaczenie nazw domen na adresy ip, nie działa poprawnie musimy wybrać domyślny DNS. Ustawiamy to w

/etc/resolv.conf

wpisując

nameserver 8.8.8.8

Stan serwisu odpowiadającego za nadawanie domenom numerów ip sprawdzimy poleceniem

systemctl status systemd-resolved.service

Błędy z kluczami

Jeśli mamy błędy typu

Signature is unknown trust

Możemy sprawdzić dany klucz

pacman-key -l Thorsten

i jeśli wygasł, to odświeżyć listę kluczy

pacman-key --refresh-keys
Signature is unknown trust [SOLVED] / Pacman & Package Upgrade Issues / Arch Linux Forums

Instalacja yay

Yay jest pomocniczym programem do zarządzania zależnościami. Jeśli zainstalowałeś base-devel możesz pobrać yay za pomocą gita

git clone https://aur.archlinux.org/yay.git

i zainstalować poleceniami

cd yay && makepkg -si
Arch Linux How to Install Yay - Super EASY | Low Orbit Flux
Arch Linux How to Install Yay - Super EASY | Low Orbit Flux

Instalacja I3

Sam manager okien instaluje się poleceniem

yay -S i3-gaps

Należy do niego dodać czcionkę i pasek

yay -S ttf-dejavu i3status

Instalujemy xorg.

yay -S xorg xorg-xinit rxvt-unicode

Oraz sterowniki do swojej karty. Typ karty możesz sprawdzić poleceniem lspci | grep VGA.

Dla karty AMD/ATI RV370 [Radeon X300] jest to

yay -S xf86-video-ati

Dla nvidia będą to:

yay -S nvidia nvidia-utils

Dla Atom Processor Integrated Graphics Controller jest to

yay -S xf86-video-intel

Jeśli nie wiesz jaką paczkę zainstalować dla swojej karty polecam poszukać na stronie:

Xorg - ArchWiki

Aby obsługiwać dźwięk dodajemy też alsa-utils, pulseaudio i pavucontrol

yay -S alsa-utils pulseaudio pavucontrol
speaker-test -c2
alsamixer

Edytujemy plik

nano /etc/X11/xinit/xinitrc

komentując linie

#twm &
#exec xterm ....

i dodając na końcu

exec i3

teraz możemy włączyć tryb graficzny wpisując

startx
Arch Linux How to Install i3 Gaps - Super EASY | Low Orbit Flux
Arch Linux How to Install i3 Gaps - Super EASY | Low Orbit Flux

Potwierdzamy wygenerowanie konfiguracji przez ENTER oraz potwierdzamy klawisz win jako główny klawisz.

Konfiguracja I3 i rxvt-unicode

Wartościowe wprowadzenie do i3 nagrał Distroverse:

Wzorowałem się na nim tworząc swoją konfigurację. Znajdziesz ją w repozytorium

my-arch-i3-config/config at main · gustawdaniel/my-arch-i3-config
Contribute to gustawdaniel/my-arch-i3-config development by creating an account on GitHub.

ale polecam Ci przejrzeć kilka różnych konfiguracji i poczytać dokumentację i3, która jest jedną z lepszych dokumentacji managerów okien.

Tym czasem zajmiemy się samym terminalem urxt-unicode. Polecam Ci to video

Przechodzimy do katalogu domowego

cd ~

Tworzymy konfigurację

touch .Xresources

możemy wkleić do tego pliku jedną z gotowych konfiguracji

curl https://raw.githubusercontent.com/gustawdaniel/my-arch-i3-config/main/.Xresources > .Xresources

lecz ja polecam poczytać kilka różnych zestawień lub obejrzeć filmy wyjaśniające dokładnie możliwe opcje i dobrać z nich te, które są najlepsze dla nas.

Do przeładowania konfiguracji służy komenda

xrdb ~/.Xresources

Przeglądarka

Instalujemy przeglądarkę, której wybór ponownie jest Twoim wyborem. W przypadku najpopularniejszej przeglądarki - google chrome jest to:

yay -S google-chrome

Pierwszy dodatkiem jest Ublock Origin.

Polski układ klawiatury w X11

Aby używać polskich znaków w środowisku graficznym ustaw layout klawiatury wstawiając do pliku /usr/share/X11/xorg.conf.d/10-keyboard.conf konfigurację

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "pl"
EndSection

Launcher

Najprostszy launcher to dmenu. Instalujemy go komendą

yay -S dmenu

i używamy przez kombinację klawiszy super+d

Screenshoty

Według mnie najlepszy jest flameshot. Instalujemy go komendą

yay -S flameshot

W konfiguracji i3 możemy połączyć go z przyciskiem print screen

bindsym Print exec flameshot gui

Sterowanie innymi komputerami

Jeśli używamy kilku komputerów i chcemy sterować nimi używając jednej myszki i klawiatury na wszystkich komputerach możemy zainstalować barrier.

yay -S barrier

Na urządzeniu klienckim ustawiamy id serwera:

A na serwerze:

Wskazujemy gdzie względem naszego komputera ustawi się klient

W przypadku problemów z zestawieniem połączenia zawsze pomagało wyłączenie i włączeniu obu komputerów.

Oh my zsh

Zsh jest powłoką alternatywną do bash o więszych możliwościach customizacji i rozszerzania. Instalujemy ją poleceniem:

yay -S zsh

Następnie instalujemy oh my zsh.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Tapeta

Zaczniemy od sprawdzenia rozdzielczości monitorów poleceniem

 xrandr --listmonitors

Pobieramy tapetę w odpowiednim rozmiarze i zapisujemy ją do pliku

.config/i3/.bg.jpeg

Instalujemy feh komendą

yay -S feh

Do pliku .fehbg zapisujemy skrypt ustawiający tapetę

#!/bin/sh
feh --no-fehbg --bg-scale '/home/daniel/.config/i3/.bg.jpeg'

Dajemy mu prawa do uruchamiania

sudo chmod +x ~/.fehbg

w .config/i3/config włączamy go poleceniem

exec --no-startup-id sh ~/.fehbg

Neovim

Odrobinkę wygodniejsza wersja vim.

yay -S neovim

Synchronizacja zegara systemowego

Jeśli w dacie lub godzinie pojawia się rozbieżność warto włączyć synchronizację z serwerami wskazującymi poprawny czas.

sudo timedatectl set-ntp true 

Monitoring zasobów

Do sprawdzania użycia i temperatury procesora, zajętej pamięci operacyjnej, transferu sieci - czyli ogólnego monitoringu polecam bashtop.

yay -S bashtop

Display Manager

Program w którym wybieram typ sesji oraz podaję login i hasło to ly.

yay -S ly
sudo systemctl enable ly.service

Tmux i Tmuxinator

Do zarządzania sesjami, oknami i podziałem okien w terminalu używam tmuxa.

yay -S tmux ruby
gem install tmuxinator

Jego konfiguracja:

my-arch-i3-config/.tmux.conf at main · gustawdaniel/my-arch-i3-config
Contribute to gustawdaniel/my-arch-i3-config development by creating an account on GitHub.

Bitwarden

Do zarządzania hasłami używałem keeweb. Obecnie korzystam z bitwarden:

yay -S bitwardern

za zarządzanie jego widocznością odpowiada następująca konfiguracja w pliku ~/.config/i3/config:

exec --no-startup-id bitwarden
bindsym $Mod+k [instance="bitwarden"] scratchpad show; [instance="bitwarden"] move position center
for_window [instance="bitwarden"] move scratchpad
for_window [instance="bitwarden"] border pixel 3
for_window [instance="bitwarden"] resize set 800 600

Nasz Arch Linux z i3 jest gotowy

Wciąż do efektywnej pracy może brakować nam IDE jeśli jesteśmy programistami lub obs jeśli nagrywamy video albo programów do obróbki grafiki. Jednak sam system i podstawowe programy możemy uznać za gotowe.

Jeśli twoim zdaniem w zestawieniu zabrakło jakichś programów, albo widzisz miejsca gdzie mógł być coś uprościć daj znać w komentarzu.