Установка и первичная настройка дистрибутива Arch Linux
В данной статье описана типичная установка Arch Linux'а с указанием специфичных различий в конфигурации для разных компьютеров и рабочих окружений.
Подготовка к установке
ssh
Если установка будет производится посредством ssh соединения с другого ПК, то перед подключением нужно задать пароль для root пользователя.
Доступ в сеть
Для подключения к сети через LAN достаточно только активировать dhcpcd сервер: systemctl start dhcpcd.service. Чтобы настроить Wi-FI соединение нужно воспользоваться интерактивной консолью клиента iwctl для демона iwd.
- Потребуется проверить идентификатор беспроводного адаптера сети Wi-Fi:
[iwd]# device list - Просканируем радио эфир на наличие нужной точки доступа:
[iwd]# station wlan0 scan - Т.к. iwctl поддерживает автозаполнение ввода через клавишу tab, то можно выбрать нужную сеть после ввода первых букв её названия:
[iwd]# station wlan0 connect "Make Wi-Fi Great Again!"
После подключения к точке доступа потребуется активировать dhcpcd сервер.
gdisk (создание gpt метки и разметка файловой системы)
sudo gdisk /dev/nvme0n1 # или /dev/sda для SATA накопителя x l 8 d m n ⏎ ⏎ +512M ef00 n ⏎ ⏎ +16G # Для нетбука будет только +8G 8200 n ⏎ ⏎ w Y
Создание файловой системы
sudo mkfs.vfat /dev/nvme0n1p1 # или /dev/sda1 для SATA накопителя sudo mkswap /dev/nvme0n1p2 # или /dev/sda2 для SATA накопителя sudo mkfs.ext4 -b 4096 -m 0 /dev/nvme0n1p3 # или /dev/sda3 для SATA накопителя
Монтирование и установка базовой части системы
sudo swapon /dev/nvme0n1p2 # или /dev/sda2 для SATA накопителя sudo mkdir -v /mnt/install sudo mount /dev/nvme0n1p3 /mnt/install/ # или /dev/sda3 для SATA накопителя sudo mkdir -v /mnt/install/boot sudo mount /dev/nvme0n1p1 /mnt/install/boot/ # или /dev/sda2 для SATA накопителя sudo pacstrap /mnt/install/ arch-install-scripts base base-devel bash-completion linux linux-firmware neovim sudo genfstab -U /mnt/install >> /mnt/install/etc/fstab
Теперь требуется проверить и отредактировать /mnt/install/etc/fstab перед следующим этапом.
Пример:
# Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> # /dev/nvme0n1p3 UUID=68b6d3fa-3dd1-4c2d-acd4-8956a89d7c53 / ext4 rw,relatime 0 1 # /dev/nvme0n1p1 UUID=CFA0-CC07 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2 # /dev/nvme0n1p2 UUID=c9e25512-cc2d-45cf-a95e-e4cfc6dfb116 none swap defaults 0 0
Файловые системы vfat и ext4 требуют дополнительной опции discard при использовании SSD накопителя:
# /dev/sdX3 UUID=6b0d06c4-ca05-427d-83d4-b3978595f6bb / ext4 rw,relatime,discard 0 1
Настройка базовой системы
Начальный этап настройки
Минимальный набор требуемых настроек для последующей настройки системы после перезагрузки.
arch-chroot /mnt/install ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime sed -i "s/#en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen sed -i "s/#ru_RU.UTF-8/ru_RU.UTF-8/" /etc/locale.gen locale-gen echo LANG=ru_RU.UTF-8 > /etc/locale.conf echo -e "KEYMAP=ruwin_alt_sh-UTF-8\nFONT=cyr-sun16" > /etc/vconsole.conf sed -i 's/HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck)/HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems resume fsck)/g' /etc/mkinitcpio.conf export myhostname= # Создаём переменную с именем будущего хоста echo $myhostname > /etc/hostname echo -e "#\n#<ip-address>\t<hostname.domain.org>\t<hostname>\n127.0.0.1\t$myhostname.lan\t\tlocalhost $myhostname\n::1\t\t$myhostname.lan\t\tlocalhost $myhostname" >> /etc/hosts mkinitcpio -P sed -i -e '33 s/#//g' -e '37 s/#//g' -e '93,+1 s/#//g' /etc/pacman.conf # Включает Color, ParallelDownloads и multilib
И если требуются testing репозитории:
sed -i -e '72,+1 s/#//g' -e '81,+1 s/#//g' -e '90,+1 s/#//g' /etc/pacman.conf
Базовые пакеты:
pacman -Suy asp beep bind ccache cmake dhcpcd dosfstools efibootmgr git git-lfs go go-tools gptfdisk hdparm htop jre17-openjdk-headless lib32-ncurses lvm2 man-db mariadb net-tools networkmanager networkmanager-openvpn ntfs-3g openssh openvpn p7zip parted pdftk pipewire pipewire-alsa python-pynvim rsync screen sudo tmux tree unzip usbutils vifm wget wireplumber wol xdg-user-dirs xsel yt-dlp zip
В зависимости от производителя процессора, требуется поставить дополнительный пакет с обновлением микрокода: intel-ucode или amd-ucode
sed -i "s/# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/" /etc/sudoers systemctl enable NetworkManager systemctl enable sshd systemctl enable systemd-timesyncd.service useradd -m -G wheel archie passwd archie
Установка загрузчика systemd-boot
Для копирования исполняемого файла загрузчика на EFI-раздел и добавления загрузочной записи в прошивку материнской платы можно воспользоваться инструментом из состава systemd: bootctl --path=/boot install
Если требуется, сторонние загрузочные записи можно очистить.
Теперь берем UUID swap'а и раздела монтируемого по корневому пути. (эту часть нужно улучшить, чтобы UUID был сохранён в переменную)
ls -l /dev/disk/by-partuuid/ | grep 'sd[a-z][1-3]' echo -e 'title\t\tArch Linux Kernel\nlinux\t\t/vmlinuz-linux\ninitrd\t\t/intel-ucode.img\ninitrd\t\t/initramfs-linux.img\noptions\t\troot=PARTUUID=55d7a752-7da7-4a8f-aae7-a90b63614d83 rw resume=PARTUUID=4af468e0-0c92-4dab-9a21-738fd95875d3' >> /boot/loader/entries/arch.conf sed -i "s/#timeout 3/timeout 3/" /etc/sudoers sudo sed -i '1i default @saved' /boot/loader/loader.conf # systemd-boot будет запоминать последнюю выбранную загрузочную запись
Завершаем работу в chroot окружении и перезагружаем компьютер для продолжения настройки системы.
exit reboot
Завершения настройки базовой системы
Trizen менеджер пакетов для AUR: облегченная оболочка pacman и помощник AUR.
cd /tmp git clone https://aur.archlinux.org/trizen.git cd trizen makepkg -si
Установка дополнительных компонентов и подготовка графического окружения для рабочих станции
Установка требуемых пакетов и приложений
sudo pacman -S android-tools android-udev baobab chromium filezilla gimp gnu-netcat gvfs inkscape keepassxc libreoffice-fresh libreoffice-fresh-ru libva-utils minetest mesa-demos mpv neofetch nextcloud-client nomacs noto-fonts noto-fonts-cjk noto-fonts-emoji pavucontrol pcmanfm-qt pipewire-jack qbittorrent qt5-translations qt6-translations qutebrowser steam steam-native-runtime telegram-desktop tesseract tesseract-data-eng tesseract-data-rus ttf-liberation winetricks wine-gecko wine-mono
Для компьютера на базе графического процессора от Intel: sudo pacman -S intel-media-driver powertop xf86-video-intel
Для компьютера на базе графического процессора от AMD: sudo pacman -S vulkan-radeon lib32-vulkan-radeon libva-mesa-driver xf86-video-amdgpu
Перечень Vulkan драйверов: https://wiki.archlinux.org/title/Vulkan
Для настройки тачпада ноутбука: xorg-xinput
AUR
trizen -S android-studio anydesk-bin chromexup webcord evhz-git godot lib32-gconf undistract-me-git --noedit echo -e "source /usr/share/undistract-me/long-running.bash\nnotify_when_long_running_commands_finish_install" >> ~\.bashrc
Подготовка рабочего окружения на базе Wayland композитора Sway
sudo pacman -S alacritty gdm trizen -S libdisplay-info-git wlroots-git sway-git waybar rofi-lbonn-wayland-git xdg-desktop-portal-wlr slurp --noedit sudo systemctl enable --now gdm
Настройка путей и монтирования в домашнем каталоге
mkdir -pv /home/$USER/{Desktop,Downloads,Documents,Pictures,Public,Sounds,Templates,VPNs,Work/Builds/ArchLinux}
mkdir -v /home/$USER/{Music,Videos} # Для нетбука или ноутбука
ln -s ~/.local/share/Steam ~/Steam
Импортирование конфигурации
git clone https://git.tmon8.ru/comminux/dotfiles.git ~/Work/dotfiles cd ~/Work/dotfiles git checkout branch # Выбираем нужную ветку за основу mv .git/ ~/ cp -r * /home/$USER/ cp -r .* /home/$USER/ cd ~ rm -rf ~/Work/dotfiles sudo cp ~/.usr/bin/* /bin/ chromexup
Дополнительные настройки и решения
git clone https://github.com/Tk-Glitch/PKGBUILDS ~/Work/Builds/ArchLinux/Tk-Glitch-PKGBUILDS
Исправление ошибки "Not authorized to perform operation" при попытке монтирования дополнительного накопителя.
Создаём это polkit правило в /etc/polkit-1/rules.d/00-mount-internal.rules:
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" &&
subject.local && subject.active && subject.isInGroup("storage")))
{
return polkit.Result.YES;
}
});
И добавляем нашего пользователя в группу storage:
# sudo usermod -aG storage $USER
Установка дополнительных компонентов и настройка серверной станции
Основные программы
sudo pacman -Suy certbot-nginx composer cups ffmpeg gitea libreoffice-fresh mediawiki nextcloud nginx php-fpm php-gd php-imagick php-intl php-sodium qbittorrent-nox sane vlc vsftpd youtube-dl trizen -S gerbera samsung-unified-driver steamcmd minetest-git --noedit
Настройка принтера
Несмотря на то, что cups предоставляет юнит cups.socket для запуска веб-сервера печати по запросу, лучше всего запускать сервис печати при запуске хоста, т.к. иногда задания печати могут быть пропущены и не войти в очередь для отработки:
sudo systemctl enable cups.service
Настройка MariaDB и NGINX
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql sudo systemctl start mariadb.service sudo mysql_secure_installation sudo systemctl enable mariadb.service sudo systemctl enable vsftpd.service # Не актуально. sudo systemctl enable php-fpm.service sudo systemctl enable nginx.service sudo mkdir /etc/nginx/sites-available sudo mkdir /etc/nginx/sites-enabled
Также потребуется добавить опцию sites-enabled/*; в конец блока http в файле /etc/nginx/nginx.conf для возможности использования отдельных конфигураций под каждое веб-приложение:
http {
types_hash_max_size 4096;
server_names_hash_bucket_size 128;
include sites-enabled/*;
}