Установка и первичная настройка дистрибутива Arch Linux: различия между версиями
Comminux (обсуждение | вклад) м code |
Comminux (обсуждение | вклад) м Добавлена секция для TPM2 разблокировки |
||
| Строка 144: | Строка 144: | ||
sudo sbctl sign -s /efi/EFI/Linux/arch-linux-fallback.efi | sudo sbctl sign -s /efi/EFI/Linux/arch-linux-fallback.efi | ||
sudo pacman -S linux</pre> | sudo pacman -S linux</pre> | ||
=== TPM2 разблокировка === | |||
<pre>$ 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.</pre> | |||
=== Завершения настройки базовой системы === | === Завершения настройки базовой системы === | ||
| Строка 155: | Строка 163: | ||
=== Установка требуемых пакетов и приложений === | === Установка требуемых пакетов и приложений === | ||
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 | 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 | trizen -S --noedit google-chrome-dev android-studio anydesk-bin webcord gtk2-patched-filechooser-icon-view assistant | ||
| Строка 170: | Строка 178: | ||
=== Настройка путей и монтирования в домашнем каталоге === | === Настройка путей и монтирования в домашнем каталоге === | ||
mkdir -pv /home/$USER/{Desktop,Downloads,Documents,Pictures,Public,Sounds,Templates,VPNs,Work/Builds/ArchLinux} | Тут необходимо решить проблему с тем, что русскоязычные папки уже могут быть созданы. | ||
mkdir -pv /home/$USER/{Desktop,Databases,Downloads,Documents,Pictures,Public,Sounds,Templates,VPNs,Work/Builds/ArchLinux} | |||
mkdir -v /home/$USER/{Music,Videos} # Для нетбука или ноутбука | mkdir -v /home/$USER/{Music,Videos} # Для нетбука или ноутбука | ||
ln -s ~/.local/share/Steam ~/Steam | ln -s ~/.local/share/Steam ~/Steam | ||
=== Импортирование конфигурации === | === Импортирование конфигурации === | ||
git clone <nowiki>https://git.tmon8.ru/comminux/dotfiles.git</nowiki> ~/Work/dotfiles | git clone <nowiki>https://git.tmon8.ru/comminux/dotfiles.git</nowiki> ~/Work/dotfiles | ||
cd ~/Work/dotfiles | cd ~/Work/dotfiles | ||
Версия от 12:15, 5 апреля 2026
В данной статье описана типичная установка 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 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,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 -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
Смотрите также
- 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.