Установка и первичная настройка дистрибутива 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 ⏎ ⏎ +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 sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/gpt-auto-root-luks --tpm2-with-pin=yes
Если Swap раздел не был разблокирован на этапе загрузки, то необходимо это сделать сейчас:
sudo cryptsetup luksOpen /dev/nvme0n1p2 swap
Добавим ключ для Swap раздела в TPM2.
sudo systemd-cryptenroll --tpm2-device auto /dev/disk/by-designator/swap-luks
Завершение настройки базовой системы
Trizen менеджер пакетов для AUR: облегченная оболочка pacman и помощник AUR.
cd /tmp git clone https://aur.archlinux.org/trizen.git cd trizen makepkg -si
Установка дополнительных компонентов и подготовка графического окружения для рабочих станции
Установка требуемых пакетов и приложений
pacman -S alacritty android-tools android-udev blender code filezilla gimp godot gvfs inkscape keepassxc lib32-ncurses libreoffice-fresh libreoffice-fresh-ru libva-utils mesa-demos mpv nextcloud-client noto-fonts noto-fonts-cjk noto-fonts-emoji qbittorrent steam telegram-desktop tesseract tesseract-data-eng tesseract-data-rus vlc trizen -S --noedit android-studio anydesk-bin assistant google-chrome-dev gtk2-patched-filechooser-icon-view webcord
KDE
pacman -S ark audiocd-kio dolphin dolphin-plugins ffmpegthumbs filelight icoutils kdegraphics-thumbnailers kdf kimageformats kio-admin kompare plasma resvg systemd enable plasmalogin.service
После запуска KDE необходимо настроить раскладки клавиатуры, DPI.
Sway (устарело, требуется обновление части)
sudo pacman -S gdm sway trizen -S libdisplay-info-git rofi-lbonn-wayland-git slurp waybar xdg-desktop-portal-wlr --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 lib32-ncurses libreoffice-fresh libreoffice-fresh-ru libva-utils mesa-demos minetest 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 wine-gecko wine-mono winetricks
Для компьютера на базе графического процессора от Intel: sudo pacman -S intel-media-driver powertop xf86-video-intel
Для компьютера на базе графического процессора от AMD: sudo pacman -S lib32-vulkan-radeon libva-mesa-driver vulkan-radeon xf86-video-amdgpu
Перечень Vulkan драйверов: https://wiki.archlinux.org/title/Vulkan
Для настройки тачпада ноутбука: xorg-xinput
trizen -S android-studio anydesk-bin chromexup evhz-git godot lib32-gconf undistract-me-git webcord --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 minetest-git samsung-unified-driver steamcmd --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 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
Смотрите также
- Arch Install with Secure Boot, btrfs, TPM2 LUKS encryption, Unified Kernel Images. Walian's Tech/Linux Blog - Пример полной установки Arch Linux с Secure Boot, btrfs, TPM2 LUKS шифрованием, Unified Kernel Images.