После многих лет домашнего использования попеременно то 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 более пока не разваливало ее и после установки кучи другого софта (история с драйвером видеокарты‑ это уж моя глупость была).
