Установка и первичная настройка дистрибутива Arch Linux: различия между версиями
Comminux (обсуждение | вклад) UKI секция |
Comminux (обсуждение | вклад) Удалена ошибочная строка в настройках загрузочных записей |
||
| (не показано 18 промежуточных версий этого же участника) | |||
| Строка 70: | Строка 70: | ||
sudo mkfs.ext4 -E discard -b 4096 -m 0 -L root /dev/mapper/root | sudo mkfs.ext4 -E discard -b 4096 -m 0 -L root /dev/mapper/root | ||
mount /dev/mapper/root /mnt/install | mount /dev/mapper/root /mnt/install | ||
sudo mkdir -v /mnt/install/ | sudo mkdir -v /mnt/install/efi | ||
sudo mount /dev/nvme0n1p1 /mnt/install/ | sudo mount /dev/nvme0n1p1 /mnt/install/efi/ # или /dev/sda2 для SATA накопителя | ||
</pre> | </pre> | ||
| Строка 79: | Строка 79: | ||
<pre>reflector --country RU --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist</pre> | <pre>reflector --country RU --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist</pre> | ||
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 | 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 | ||
'''В зависимости от производителя процессора, требуется поставить дополнительный пакет с обновлением микрокода:''' <code>intel-ucode</code> '''или''' <code>amd-ucode</code> | '''В зависимости от производителя процессора, требуется поставить дополнительный пакет с обновлением микрокода:''' <code>intel-ucode</code> '''или''' <code>amd-ucode</code> | ||
== Настройка базовой системы == | == Настройка базовой системы == | ||
| Строка 120: | Строка 98: | ||
mkinitcpio -P | mkinitcpio -P | ||
sed -i "s/# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/" /etc/sudoers | 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/}' | 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 enable systemd-resolved systemd-timesyncd NetworkManager sshd systemd-timesyncd | ||
systemctl mask systemd-networkd | systemctl mask systemd-networkd | ||
| Строка 135: | Строка 112: | ||
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 '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 \ | sed -i \ | ||
-e "s| | -e "s|PRESETS=('default')|#PRESETS=('default')|g" \ | ||
-e "s|# | -e "s|#PRESETS=('default' 'fallback')|PRESETS=('default' 'fallback')|g" \ | ||
-e 's|#default_uki="/efi/ | -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|#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"|default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"|g' \ | ||
/etc/mkinitcpio.d/linux.preset</pre> | -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</pre> | |||
=== Secure Boot === | |||
В первую очередь необходимо в BIOS сбросить все ключи и настройки Secure Boot и выключить его. Указанная команда позволит проверить наличие статуса Setup Mode: | |||
<pre>$ sbctl status | |||
Installed: ✓ sbctl is installed | |||
Setup Mode: ✗ Enabled | |||
Secure Boot: ✗ Disabled | |||
Vendor Keys: none</pre> | |||
=== | Теперь нужно создать персональные ключи: | ||
<pre>sudo sbctl create-keys | |||
sudo sbctl enroll-keys -m</pre> | |||
Подпишем efi файлы и переустановим ядро Linux: | |||
<pre>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</pre> | |||
=== TPM2 разблокировка === | |||
<pre>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</pre> | |||
Если 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. | Trizen менеджер пакетов для AUR: облегченная оболочка pacman и помощник AUR. | ||
cd /tmp | cd /tmp | ||
| Строка 165: | Строка 168: | ||
=== Установка требуемых пакетов и приложений === | === Установка требуемых пакетов и приложений === | ||
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 pacman -S | |||
trizen -S libdisplay-info-git | |||
sudo systemctl enable --now gdm | sudo systemctl enable --now gdm | ||
=== Настройка путей и монтирования в домашнем каталоге === | === Настройка путей и монтирования в домашнем каталоге === | ||
mkdir -pv /home/$USER/{Desktop,Downloads,Documents,Pictures,Public,Sounds,Templates,VPNs | Тут необходимо решить проблему с тем, что русскоязычные папки уже могут быть созданы. | ||
mkdir -v /home/$USER/{Music,Videos} # Для | |||
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 | ln -s ~/.local/share/Steam ~/Steam | ||
Если основной накопитель имеет малый размер и имеется возможность установки второго, то последний можно монтировать через <code>/etc/fstab</code> и создать симлинки на основной папки. | |||
ln -s /mnt/storage/Music/ ~/Music | |||
ln -s /mnt/storage/Videos/ ~/Videos | |||
ln -s /mnt/storage/Work/ ~/Work | |||
=== Импортирование конфигурации === | === Импортирование конфигурации === | ||
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 | ||
| Строка 204: | Строка 212: | ||
=== Исправление ошибки "Not authorized to perform operation" при попытке монтирования дополнительного накопителя. === | === Исправление ошибки "Not authorized to perform operation" при попытке монтирования дополнительного накопителя. === | ||
Создаём это polkit правило в <code>/etc/polkit-1/rules.d/00-mount-internal.rules</code>: | Создаём это polkit правило в <code>/etc/polkit-1/rules.d/00-mount-internal.rules</code>: | ||
polkit.addRule(function(action, subject) { | polkit.addRule(function(action, subject) { | ||
| Строка 212: | Строка 221: | ||
} | } | ||
}); | }); | ||
И добавляем нашего пользователя в группу '''storage''': | И добавляем нашего пользователя в группу '''storage''': | ||
<code># sudo usermod -aG storage $USER</code> | <code># sudo usermod -aG storage $USER</code> | ||
=== Устаревшая секция === | |||
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: <code>sudo pacman -S intel-media-driver powertop xf86-video-intel</code> | |||
Для компьютера на базе графического процессора от AMD: <code>sudo pacman -S lib32-vulkan-radeon libva-mesa-driver vulkan-radeon xf86-video-amdgpu</code> | |||
Перечень Vulkan драйверов: <nowiki>https://wiki.archlinux.org/title/Vulkan</nowiki> | |||
Для настройки тачпада ноутбука: <code>xorg-xinput</code> | |||
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 | |||
== Установка дополнительных компонентов и настройка серверной станции == | == Установка дополнительных компонентов и настройка серверной станции == | ||
| Строка 220: | Строка 244: | ||
=== Основные программы === | === Основные программы === | ||
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 | 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 | trizen -S gerbera minetest-git samsung-unified-driver steamcmd --noedit | ||
=== Настройка принтера === | === Настройка принтера === | ||
| Строка 237: | Строка 261: | ||
sudo mkdir /etc/nginx/sites-available | sudo mkdir /etc/nginx/sites-available | ||
sudo mkdir /etc/nginx/sites-enabled | sudo mkdir /etc/nginx/sites-enabled | ||
Также потребуется добавить опцию sites-enabled/*; в конец блока http в файле <code>/etc/nginx/nginx.conf</code> для возможности использования отдельных конфигураций под каждое веб-приложение: | Также потребуется добавить опцию sites-enabled/*; в конец блока http в файле <code>/etc/nginx/nginx.conf</code> для возможности использования отдельных конфигураций под каждое веб-приложение: | ||
http { | http { | ||
types_hash_max_size 4096; | types_hash_max_size 4096; | ||
| Строка 244: | Строка 270: | ||
include sites-enabled/*; | include sites-enabled/*; | ||
} | } | ||
== Устаревшие секции == | |||
Тут приведены устаревшие части настройки системы. Если systemd-boot теперь устанавливается в <code>/efi</code>, то за автоматическое монтирование отвечает systemd, т.к. при создании разделов мы использовали метки Discoverable Partitions Specification (DPS). | |||
=== Установка загрузчика systemd-boot === | |||
Для копирования исполняемого файла загрузчика на EFI-раздел и добавления загрузочной записи в прошивку материнской платы можно воспользоваться инструментом из состава systemd: <code>bootctl --path=/boot install</code> | |||
Если требуется, сторонние [[Список полезных команд Linux|загрузочные записи можно очистить]]. | |||
Теперь берем 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 | |||
Теперь требуется проверить и отредактировать <code>/mnt/install/etc/fstab</code> перед следующим этапом. | |||
Пример: | |||
# 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 требуют дополнительной опции <code>discard</code> при использовании SSD накопителя: | |||
# /dev/sdX3 | |||
UUID=6b0d06c4-ca05-427d-83d4-b3978595f6bb / ext4 rw,relatime,discard 0 1 | |||
== Смотрите также == | == Смотрите также == | ||
* [https://walian.co.uk/arch-install-with-secure-boot-btrfs-tpm2-luks-encryption-unified-kernel-images.html] - Пример полной установки Arch Linux с Secure Boot, btrfs, TPM2 LUKS шифрованием, Unified Kernel Images. | * [https://walian.co.uk/arch-install-with-secure-boot-btrfs-tpm2-luks-encryption-unified-kernel-images.html 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. | ||
[[Категория:Руководства]] | [[Категория:Руководства]] | ||