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

UKI секция
Удалена ошибочная строка в настройках загрузочных записей
 
(не показано 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/boot
sudo mkdir -v /mnt/install/efi
sudo mount /dev/nvme0n1p1 /mnt/install/boot/ # или /dev/sda2 для SATA накопителя
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 lib32-ncurses 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
  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>
===  Настройка 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


== Настройка базовой системы ==
== Настройка базовой системы ==
Строка 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
/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|presets=('default')|#presets=('default')|g" \
-e "s|PRESETS=('default')|#PRESETS=('default')|g" \
-e "s|#presets=('default' 'fallback')|presets=('default' 'fallback')|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_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>


=== Установка загрузчика systemd-boot ===
Теперь нужно создать персональные ключи:
Для копирования исполняемого файла загрузчика на EFI-раздел и добавления загрузочной записи в прошивку материнской платы можно воспользоваться инструментом из состава systemd: <code>bootctl --path=/boot install</code>
 
<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


Если требуется, сторонние [[Список полезных команд Linux|загрузочные записи можно очистить]].
Добавим ключ для Swap раздела в TPM2.


Теперь берем UUID swap'а и раздела монтируемого по корневому пути. (''эту часть нужно улучшить, чтобы UUID был сохранён в переменную'')
  sudo systemd-cryptenroll --tpm2-device auto /dev/disk/by-designator/swap-luks
  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.
Trizen менеджер пакетов для AUR: облегченная оболочка pacman и помощник AUR.
  cd /tmp
  cd /tmp
Строка 165: Строка 168:


=== Установка требуемых пакетов и приложений ===
=== Установка требуемых пакетов и приложений ===
  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
  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
Для компьютера на базе графического процессора от Intel: <code>sudo pacman -S intel-media-driver powertop xf86-video-intel</code>
trizen -S --noedit android-studio anydesk-bin assistant google-chrome-dev gtk2-patched-filechooser-icon-view webcord


Для компьютера на базе графического процессора от AMD: <code>sudo pacman -S vulkan-radeon lib32-vulkan-radeon libva-mesa-driver xf86-video-amdgpu</code>
==== 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


Перечень Vulkan драйверов: <nowiki>https://wiki.archlinux.org/title/Vulkan</nowiki>
После запуска KDE необходимо настроить раскладки клавиатуры, DPI.


Для настройки тачпада ноутбука: <code>xorg-xinput</code>
==== Sway (устарело, требуется обновление части) ====
 
  sudo pacman -S gdm sway
=== AUR ===
  trizen -S libdisplay-info-git rofi-lbonn-wayland-git slurp waybar xdg-desktop-portal-wlr --noedit
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
  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} # Для нетбука или ноутбука
 
  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 minetest-git --noedit
  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.


[[Категория:Руководства]]
[[Категория:Руководства]]