После многих лет домашнего использования попеременно то Debian GNU/Linux, то Win10, у меня возникло желание побороть в себе консерватизм и поиграться с rolling‑release дистрибутивом, но не debian‑sid, это уже из чистого любопытства. Выбор пал на Arch потому, что он удовлетворяет критерию свежести софта и модели rolling‑release, но не требует массы времени для сборки софта из исходников, как генту, плюс он достаточно популярен и у меня не возникло оснований выбрать что‑то слишком малоизвестное. В юности не боялся и слаки, и ядро тогда собирать было не лень, но это было очень давно.

Устанавливал на комп с процессором intel core i9-10940, 96гб озу, 1 диск м2 ссд 1тб под систему и софт, 2 диск м2 ссд для данных (/var), 3 диск сата ссд 2тб для /home, видеокарта‑ nvidia 3090ti. Подключение к инету — по ethernet через роутер mikrotik hap ac2, так что при установке настройка wifi не потребовалась.

В результате я хотел получить систему с оконным менеджером kde для домашних задач типа просмотра фильмов и переписки с друзьями, а также для работы, плюс хотел раздать через комп вайфай через amnezia+wireguard. Раздавать wifi именно с компа приходится потому, что небольшой размер памяти моего микротика уже не позволял установить туда awg, а такие способы обхода блокировок, как openvpn с обфускацией, или wireguard без обфускации (доступные в прошивке микротика) давно и успешно режет ркн, на телефоне у меня установлен в том числе макс, потому устанавливать аналоги впн на телефон желания нет, а иметь доступ к телеге и ютубу хочется. Ниже будут команды, не раз описанные в других статьях на Хабре плюс некоторые дополнения, сделанные с учетом уже моих ошибок.

Описывать, как скачать и записать на флешку установочный образ арч, не буду.

После загрузки с установочного образа команда lsblk показала наличие трёх физических дисков:

/dev/nvme0 (1тб) 
/dev/nvme1 (4тб) 
/dev/sda   (2тб)

С помощью команды cfdisk /dev/nvme0 создал на первом диске создал gpt таблицу, разметил разделы:

/dev/nvme0n1p1         1gb для uefi

/dev/nvme0n1p2         96gb для swap (хоть озу  и немало- были ситуации, когда не хватало)

/dev/nvme0n1p3         834gb для корневой фс

Далее форматирование разделов:

mkfs.fat -F32 /dev/nvme0n1p1
mkfs.btrfs /dev/nvme0n1p3

На устройстве /dev/sda аналогичным образом создал один раздел и отформатировал в btrfs, а на устройстве /dev/nvme1 мне нужен 1 большой раздел xfs, чтобы его создать надо сначала установить утилиты для работы с xfs:

pacman -S xfsprogs

После чего командами

cfdisk /dev/nvme1   
mkfs.xfs /dev/nvme1n1p1 

создал раздел и отформатировал его в xfs.

Команды далее слегка отличаются от типичных рекомендаций:

mount /dev/vnme0n1p3 /mnt
mkdir /mnt/ssd4tb /mnt/ssd2tb
mount /dev/nvme1n1p1 /mnt/ssd4tb
mount /dev/sda1 /mnt/ssd2tb
ln -s /mnt/ssd2tb /mnt/home
ln -s /mnt/ssd4tb /mnt/var

Небольшое объяснение, почему именно симлинки. Я слышал, что арч иногда разваливается при обновлениях и мне нужен способ очень быстро вернуть сохраненное работающее состояние. Сначала я использовал timeshift и не рекомендую использовать его в арче потому, что в арче он работает просто как обертка над rsync, а все возможности btrfs в timeshift работают лишь в убунте. timeshift позволил бы создать списки путей, которые не надо бэкапить (/var, /home), но rsync делает это существенно медленнее, чем утилиты btrfs, не буду их отдельно описывать — про них есть замечательные статьи на Хабре. Симлинки я сделал в процессе экспериментов, чтобы вместе с корнем не бэкапились все‑все‑все данные, и такая схема работы мне понравилась.

Дальше — как в популярных методичках:

pacstrap -i /mnt base linux linux-firmware sudo nano
genfstab -U -p /mnt >> /mnt/etc/fstab
arch-chroot /mnt /bin/bash

Выбор локали

nano /etc/locale.gen

раскоментировал en_US.UTF-8 и ru_RU.UTF-8 UTF-8, далее

locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
hwclock --systohc --utc
date
echo MyComp > /etc/hostname
nano /etc/hosts
127.0.1.1 localhost.localdomain MyComp
pacman -S networkmanager 
systemctl enable NetworkManager 


Создал пароль root:

passwd

Далее установка загрузчика:

pacman -S grub efibootmgr
mkdir /boot/efi
mount /dev/nvme0n1p1 /boot/efi
lsblk 
efi --bootloader-id=GRUB --efi-directory=/boot/efi --removable 
grub-mkconfig -o /boot/grub/grub.cfg

Потом выход из окружения chroot и перезагрузка:

exit 
reboot

После перезагрузки зашел под рутом и первым делом создал и активировал своп раздел:

mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2

Создал пользователя и пароль

useradd -m -g users -G wheel -s /bin/bash username
passwd username

И дал ему права sudo

EDITOR=nano visudo 

тут раскоментировал строку # %wheel ALL=(ALL) ALL.

После чего сделал несколько ошибочных действий. Расскажу, как сделать лучше и не повторять. Я стал устанавливать kde и в списке пакетов: к установке указал pulseaudio-alsa (выбирал пакет к установке из одной из статей на Хабре, правда, там автор пользовался не kde, а xfce) — он точно не нужен в кде, были проблемы со звуком.

Также после установки kde были адские глюки драйвера видеокарты, с большим трудом открыл сайт nvidia, скачал драйвер, установил зависимости и запустил сам драйвер — взлетело. Но ненадолго, после второго или третьего обновления командой pacman -Syu, драйвер благополучно отвалился, потому что обновилось ядро, а драйвер видеокарты в модуле ядра, pacman не знал, что при обновлении надо обновить и добавить в ядро этот модуль. Потому правильнее будет сделать так:

установить драйвер видеокарты и пересобрать initramfs

sudo pacman -S nvidia-dkms
sudo nano /etc/mkinitcpio.conf

в редакторе заменить строку modules=() на

MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)

заново сгенерировать initramfs, тут используется прога арч‑ mkinitcpio, в одной из тестовых сборок пробовал более привычные типа dracut, результат не понравился.

sudo mkinitcpio -P

установить kde и sddm, wayland подтянулся и настроился автоматически:

sudo pacman -S plasma kde-applications
sudo pacman -S sddm
sudo systemctl enable sddm

После такой установки и звук сразу нормально работает, и драйвер видеокарты не отваливается при обновлениях.

Установка базовой системы и кде завершена, теперь несколько полезных инструментов для дальнейшего использования системы. Кроме пакетов, устанавливаемых с помощью pacman в арче есть очень много пользовательских пакетов aur, мне понравился инструмент- хелпер для быстрой установик таких пакетов- yay. Вот как его установить:

sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git 
cd yay 
makepkg -si

Обратите внимание, makepkg не запускается с правами рута, как и сам yay.

Теперь пришла очередь борьбы с блокировками, в моем случае рабочий метод обхода это amnezia+wireguard, тут‑то и пригодится установщик yay:

yay -S amneziawg-linux amneziawg-tools

Уже после запуска этой команды установщик спросит sudo пароль.

После установки амнезии беру конфиг awg у впн сервиса, создаю файл /etc/amnezia/amneziawg/wg0.conf и записываю конфиг в этот файл.

Далее попытка включить службу awg‑quick@wg0.service (для каждого конфига можно запускать отдельную службу).

sudo systemctl enable awg-quick@wg0.service
sudo systemctl start awg-quick@wg0.service

И тут столкнулся с небольшой проблемой: сервис не запускался. После недолгого анализа логов понял, что надо доустановить и запустить еще один сервис:

sudo pacman -S resolvconf
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved

После этого амнезия нормально стартовала.

Для комфортной работы мало установленного средства обхода блокировок‑ некоторые сайты вроде озона не хотят показывать контент и нужен комфортный способ легко и быстро запускать один браузер, который всегда пускает трафик через амнезию, а второй‑ в обход амнезии. А еще через второй сервис иногда будет работать вебверсия макс (уж устанавливать через снап такую говноподелку точно не решился бы, тут нажна и браузерная песочница, и сам браузер в еще одной песочнице чтобы был запущен‑ такой вот уровень доверия).

Для работы через амнезию выбрал браузер brave, в обход нее‑ firefox.

yay -S brave-bin
pacman -S firefox
pacman -S firejail

Браузер в обход впн запускается так:

firejail --noprofile --net=enp2s0 firefox

где enp2s0 — имя сетевого интерфейса, куда подключен инет, имя интерфейса амнезии‑ wg0 в моем случае. Для удобства создал ярлык фф на рабочем столе и заменил в нем строку для запуска Exec= firejail ‑noprofile ‑net=enp2s0 firefox, но это слетает при обновлениях браузера, так что пришлось добавить задачу в кронтаб‑ тут уж читатель сам разберется, не будем отклоняться от темы.

И напоследок — раздача вайфая через амнезию, мне понравился простой инструмент create_ap:

yay -S create_ap

Далее можно запускать и руками:

sudo create_ap wlp3s0 wg0 MyWiFi MyPass123

где wlp3s0- имя wifi интерфейса, wg0- сетевой интерфейс амнезии.

Но я ленивый и хочу, чтобы запускалось само при входе в систему:

sudo create_ap --mkconfig /etc/create_ap.conf wlp3s0 wg0 MyWiFi MyPass123
sudo systemctl enable create_ap
sudo systemctl start create_ap

Вот и готова довольно комфортная для работы система и регулярное обновление командой pacman ‑Syu более пока не разваливало ее и после установки кучи другого софта (история с драйвером видеокарты‑ это уж моя глупость была).