Установка и первичная настройка дистрибутива Arch Linux

Материал из The Magic of Number 8 Wiki
Версия от 12:33, 5 апреля 2026; Comminux (обсуждение | вклад) (Монтирование второго накопителя)

В данной статье описана типичная установка Arch Linux'а с указанием специфичных различий в конфигурациях для разных компьютеров и рабочих окружений.

Подготовка к установке

ssh

Если установка будет производится посредством ssh соединения с другого ПК, то перед подключением нужно задать пароль для root пользователя.

Доступ в сеть

Для подключения к сети через LAN достаточно только активировать dhcpcd сервер: systemctl start dhcpcd.service. Чтобы настроить Wi-FI соединение нужно воспользоваться интерактивной консолью клиента iwctl для демона iwd.

  1. Потребуется проверить идентификатор беспроводного адаптера сети Wi-Fi: [iwd]# device list
  2. Просканируем радио эфир на наличие нужной точки доступа: [iwd]# station wlan0 scan
  3. Т.к. 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
⏎
⏎
+1G
ef00
n
⏎
⏎
+24G
8200
n
⏎
⏎
8304
w
Y

Создание и монтирование файловых систем

Данный раздел будет разделен на обычную установку и с использованием LUKS для шифрования разделов.

Обычные разделы

sudo mkfs.vfat -F32 -n EFI /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 накопителя

LUKS разделы

Для настройки шифрования необходимо инициализировать и открыть LUKS разделы:

cryptsetup luksFormat --type luks2 /dev/nvme0n1p2 # или /dev/sda2 для SATA накопителя
YES
Требуется ввести пароль
cryptsetup luksFormat --type luks2 /dev/nvme0n1p3 # или /dev/sda3 для SATA накопителя
YES
Требуется ввести пароль
cryptsetup luksOpen /dev/nvme0n1p2 swap
cryptsetup --allow-discards --persistent luksOpen /dev/nvme0n1p3 root
sudo mkswap -L swap /dev/mapper/swap
sudo swapon /dev/mapper/swap
sudo mkfs.ext4 -E discard -b 4096 -m 0 -L root /dev/mapper/root
mount /dev/mapper/root /mnt/install
sudo mkdir -v /mnt/install/efi
sudo mount /dev/nvme0n1p1 /mnt/install/efi/ # или /dev/sda2 для SATA накопителя

Установка базовой части системы

Настроим список российских зеркал для Pacman:

reflector --country RU --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
sudo pacstrap /mnt/install/ arch-install-scripts base base-devel bash-completion beep ccache cmake cryptsetup dosfstools git git-lfs go go-tools gptfdisk hdparm htop jre-openjdk linux linux-firmware lvm2 man-db mariadb neovim net-tools networkmanager networkmanager-openvpn ntfs-3g openssh openvpn p7zip parted pdftk pipewire pipewire-alsa pipewire-pulse python-pynvim rsync sbctl screen sudo tmux tree unzip usbutils util-linux vifm wget wireplumber wol xdg-user-dirs yt-dlp zip

В зависимости от производителя процессора, требуется поставить дополнительный пакет с обновлением микрокода: intel-ucode или amd-ucode

Настройка базовой системы

Начальный этап настройки

Минимальный набор требуемых настроек для последующей настройки системы после перезагрузки.

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
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 "s/# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/" /etc/sudoers
sed -i -e 's/#Color/Color/g' -e '/#\[multilib\]/{N;s/#\[multilib\]\n#Include/\[multilib\]\nInclude/}' /etc/pacman.conf # Включает Color и multilib
systemctl enable systemd-resolved systemd-timesyncd NetworkManager sshd systemd-timesyncd
systemctl mask systemd-networkd

Создание основного пользователя:

useradd -m -G wheel archie
passwd archie

Unified Kernel Images

echo "quiet rw" > /etc/kernel/cmdline
mkdir -p /efi/EFI/Linux
sed -i 's/HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)/HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole sd-encrypt block filesystems fsck)/g' /etc/mkinitcpio.conf
sed -i \
-e "s|PRESETS=('default')|#PRESETS=('default')|g" \
-e "s|#PRESETS=('default' 'fallback')|PRESETS=('default' 'fallback')|g" \
-e 's|#default_uki="/efi/EFI/Linux/arch-linux.efi"|default_uki="/efi/EFI/Linux/arch-linux.efi"|g' \
-e 's|#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"|default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"|g' \
-e 's|#fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"|fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"|g' \
-e 's|#fallback_options="-S autodetect"|fallback_options="-S autodetect"|g' \
/etc/mkinitcpio.d/linux.preset
mkinitcpio -P
bootctl install --esp-path=/efi

Secure Boot

В первую очередь необходимо в BIOS сбросить все ключи и настройки Secure Boot и выключить его. Указанная команда позволит проверить наличие статуса Setup Mode:

$ sbctl status
Installed:  ✓ sbctl is installed
Setup Mode: ✗ Enabled
Secure Boot:    ✗ Disabled
Vendor Keys:    none

Теперь нужно создать персональные ключи:

sudo sbctl create-keys
sudo sbctl enroll-keys -m

Подпишем efi файлы и переустановим ядро Linux:

sudo sbctl sign -s -o /usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx64.efi
sudo sbctl sign -s /efi/EFI/BOOT/BOOTX64.EFI
sudo sbctl sign -s /efi/EFI/Linux/arch-linux.efi
sudo sbctl sign -s /efi/EFI/Linux/arch-linux-fallback.efi
sudo pacman -S linux

TPM2 разблокировка

$ sudo systemd-cryptenroll /dev/gpt-auto-root-luks --recovery-key
Keep this key safe. Keep it hidden. Moving on, we'll now enroll our system firmware and Secure Boot state. Normally, this would allow our TPM to unlock our encrypted drive, as long as the state hasn't changed. If you're particularly paranoid, you can add --tpm2-with-pin=yes, so we get prompted for a PIN code on boot.

$ sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7  /dev/gpt-auto-root-luks
Now we need to reboot and test this. If all goes well, we should be able to unlock our encrypted root partition with just a PIN code.

Завершения настройки базовой системы

Trizen менеджер пакетов для AUR: облегченная оболочка pacman и помощник AUR.

cd /tmp
git clone https://aur.archlinux.org/trizen.git
cd trizen
makepkg -si

Установка дополнительных компонентов и подготовка графического окружения для рабочих станции

Установка требуемых пакетов и приложений

pacman -S alacritty nextcloud-client android-tools android-udev filezilla gimp godot gvfs inkscape keepassxc libreoffice-fresh lib32-ncurses libreoffice-fresh-ru libva-utils mesa-demos mpv noto-fonts noto-fonts-cjk noto-fonts-emoji qbittorrent steam telegram-desktop tesseract tesseract-data-eng tesseract-data-rus blender code vlc
trizen -S --noedit google-chrome-dev android-studio anydesk-bin webcord gtk2-patched-filechooser-icon-view assistant

KDE

pacman -S plasma dolphin ark audiocd-kio dolphin-plugins kio-admin kompare ffmpegthumbs icoutils kdegraphics-thumbnailers kimageformats resvg filelight kdf
systemd enable plasmalogin.service

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

Sway (устарело, требуется обновление части)

sudo pacman -S gdm sway
trizen -S libdisplay-info-git waybar rofi-lbonn-wayland-git xdg-desktop-portal-wlr slurp --noedit
sudo systemctl enable --now gdm

Настройка путей и монтирования в домашнем каталоге

Тут необходимо решить проблему с тем, что русскоязычные папки уже могут быть созданы.

mkdir -pv /home/$USER/{Desktop,Databases,Downloads,Documents,Pictures,Public,Sounds,Templates,VPNs}
mkdir -v /home/$USER/{Music,Videos,Work/Builds/ArchLinux} # Для устройства с одним накопителем
ln -s ~/.local/share/Steam ~/Steam

Если основной накопитель имеет малый размер и имеется возможность установки второго, то последний можно монтировать через /etc/fstab и создать симлинки на основной папки.

ln -s /mnt/storage/Music/ ~/Music
ln -s /mnt/storage/Videos/ ~/Videos
ln -s /mnt/storage/Work/ ~/Work

Импортирование конфигурации

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 -S android-tools android-udev baobab chromium filezilla gimp gnu-netcat gvfs inkscape keepassxc libreoffice-fresh lib32-ncurses 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

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

Установка дополнительных компонентов и настройка серверной станции

Основные программы

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/*;
}

Устаревшие секции

Тут приведены устаревшие части настройки системы. Если systemd-boot теперь устанавливается в /efi, то за автоматическое монтирование отвечает systemd, т.к. при создании разделов мы использовали метки Discoverable Partitions Specification (DPS).

Установка загрузчика 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


Настройка fstab

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

Смотрите также