Добавить в корзинуПозвонить
Найти в Дзене

Установка Arch Linux часть 1: UEFI, BTRFS

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Arch Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности. Но сначала немного информации о дистрибутиве. Arch Linux это независимый дистрибутив Linux, созданный для тех, кто хочет полного контроля над своей системой. Его главная философия, KISS (Keep It Simple, Stupid), что в данном случае означает простоту внутренней архитектуры, а не удобство для новичка. В Arch Linux в качестве стандартной системы инициализации используется systemd. Она была принята в качестве основной в октябре 2012 года, заменив собой старую систему SysVinit. Особенности: Давайте перейдем непосредственно к самой установке, как говорилось выше будем устанавливать на виртуальную машину. Приступим... Загруж
Оглавление

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Arch Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности. Но сначала немного информации о дистрибутиве.

Arch Linux это независимый дистрибутив Linux, созданный для тех, кто хочет полного контроля над своей системой. Его главная философия, KISS (Keep It Simple, Stupid), что в данном случае означает простоту внутренней архитектуры, а не удобство для новичка. В Arch Linux в качестве стандартной системы инициализации используется systemd. Она была принята в качестве основной в октябре 2012 года, заменив собой старую систему SysVinit.

Особенности:

  • Rolling Release (Скользящий релиз): Вы устанавливаете систему один раз и просто обновляете её. Вам не нужно переустанавливать ОС каждые полгода, чтобы получить свежий софт.
  • Pacman: Мощный и быстрый менеджер пакетов. С его помощью установка программ происходит одной короткой командой.
  • AUR (Arch User Repository): Огромный репозиторий, поддерживаемый сообществом. Там можно найти практически любую программу, которой нет в официальных репозиториях.
  • ArchWiki: Вероятно, лучшая документация в мире Linux. Она настолько подробная, что её читают даже пользователи других дистрибутивов.
  • Минимализм: «Из коробки» вы получаете только базовую систему без графического интерфейса. Всё остальное рабочий стол, браузер, драйверы вы выбираете и ставите сами.

Давайте перейдем непосредственно к самой установке, как говорилось выше будем устанавливать на виртуальную машину. Приступим...

Загрузка с образа и настройка даты время.

Загружаемся с предварительно подготовленного накопителя (обратите внимание в первых двух пунктах в скобках будет написано UEFI, иначе загрузка в режиме Legacy) в данном случае образа Arch Linux

если проглядели этот момент, то ничего страшного, можно проверить следующей командой:

ls /sys/firmware/efi/efivars

если выхлоп команды как на скриншоте, то поздравляю вы загрузились в режиме UEFI, вы на верном пути

-2

далее настраиваем окружение, дату и время: переключение языков (ru/en, в принципе как бы это и не обязательно, чисто внутренний эстетизм требует)

loadkeys ru

поддержка кириллицы

setfont cyr-sun16

включение синхронизации времени

timedatectl set-ntp true

настраиваем часовой пояс (в данном случае Европа/Москва)

timedatectl set-timezone Europe/Moscow

проверяем состояние времени

timedatectl status

Если все как на скриншоте, замечательно, мы настроили поддержку кириллицы, дату, время, часовой пояс. Двигаемся дальше, пора определится на какой накопитель будем устанавливать Arch Linux.

-3

Разметка накопителя.

Так как в демонстрации установки Arch Linux используем виртуальную машину, то у нас один диск VDA, у вас же вероятно будут SDA, SDB (SATA - накопители, не важно это ssd/hdd), либо же NVME0N1, NVME1N1 (это NVME - накопители), надо определиться. В данном случае у нас отдельный накопитель без разметки, что нам демонстрирует команда ниже:

lsblk

И так наш диск на 32Gb, подготовим его к установки, создав разделы с помощью cfdisk команда:

cfdisk /dev/vda
-4

в данном случае выбираем GPT, и переходим к разметке накопителя

-5
  • /dev/vda1 размером 512Mb (более достаточно) указываем тип EFI System - тут будет жить загрузчик, раздел BOOT.
  • /dev/vda2 тип Linux filesystem, размер уже на ваше усмотрение тут будет сама система, раздел ROOT.
  • /dev/vda3 тип Linux swap, опять же на ваше усмотрение (добавил для демонстрации) так то можно создать и файл-swap хотя для btrfs не рекомендуются этого делать, но это уже другая история, хотя в некоторых случаях можно обойтись и без него, опять же на ваше усмотрение.

не забудьте записать(пункт write) и подтвердить изменения, написав yes. Часть ответственной работы выполнена идем дальше

-6

для проверки используем команду (для наглядности я ее буду часто применять)

lsblk

хотя можно воспользоваться

fdisk -l /dev/vda

вывод будет содержать избыточную информацию о разметке диска. Если все как на скриншоте ниже, то могу вас поздравить, вы подготовили накопитель к установке Arch Linux.

-7

Форматирование разделов.

двигаемся дальше. Теперь надо отформатировать разделы, и так, план такой

  • /dev/vda1 - FAT32
  • /dev/vda2 - BTRFS
  • /dev/vda3 - раздел SWAP

форматируем /dev/vda1 в FAT32 командой

mkfs.vfat -F 32 /dev/vda1

далее форматируем /dev/vda2 в BTRFS команда

mkfs.btrfs /dev/vda2

подключаем раздел swap командами

mkswap /dev/vda3
swapon /dev/vda3

все сделано как на скриншоте? Отлично, двигаемся дальше

-8

Монтирование разделов и создание subvolum'ов.

Далее, нам нужно под монтировать раздел /dev/vda2 (ROOT) в каталог /mnt следующей командой

mount /dev/vda2 /mnt

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

-9

Далее предельно внимательно следите за ходом действий и выполнением команд. Переходим в директорию /mnt командой для того что бы в подмантированном разделе с btrfs создать subvolium'ы иначе не получится

cd /mnt

далее создаем subvolium'ы для ROOT и HOME (так как мы используем BTRFS надо пользоваться всеми ее прелестями и возможностями, а так же если будите пользоваться timeshift'ом, на первых парах изучения, утилита весьма полезна)

subvoliume для ROOT раздела (btrfs subvolume create @ можно использовать сокращения как на скрине)

btrfs su cr @

аналогично для HOME

btrfs su cr @home

далее вернемся в корень / командой

cd /

и от монтируем раздел ROOT от /mnt командой

umount /mnt

что бы удостовериться вводим команду lsblk. И самое страшное монтируем subvolium'ы, не пугайтесь просто команда длинная(рекомендую дополнительно изучить параметры монтирования, вероятно что-то может пригодится), монтируем subvolume ROOT в /mnt:

mount -o noatime,compress=zstd:6,space_cache=v2,discard=async,subvol=@ /dev/vda2 /mnt

теперь важный момент надо создать директорию /mnt/home иначе вы не при монтриуете subvolume HOME:

mkdir /mnt/home

готово, монтируем subvolume HOME:

mount -o noatime,compress=zstd:6,space_cache=v2,discard=async,subvol=@home /dev/vda2 /mnt/home

давайте разберем опции монтирования:

noatime - не обновлять время доступа к файлу

compress=zstd:6 - включает алгоритм прозрачного сжатия zstd (есть еще lzo и zlib) 6 это степень сжатия

space_cache=v2 - Кэширование данных о свободных блоках, чтобы не искать их перед записью в данном примере использую 2 версии

discard=async - Незанятые блоки, группируются и освобождаются позже в отдельном потоке, что улучшает задержки при записи на диск (так скажем более бережное отношение к ssd в плане перезаписи) можно добавит параметр ssd (хотя она включается автоматически) так же есть еще ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие ssd. autodefrag - дефрагментация на «лету», не применять для SSD. не использовал эти параметры, вычитал на просторах инета.

subvol=@home - Монтирует подраздел @home (аналогично @). Увлекся, продолжаем дальше.

дабы убедится в монтировании используем уже заученную команду lsblk. Замечательно, мы увидели все наши точки монтирования, создаем директории для монтирования раздела BOOT командой:

mkdir -p /mnt/boot/efi

далее монтируем раздел BOOT в только что созданную директорию командой

mount /dev/vda1 /mnt/boot/efi

для пущей верности запускаем команду lsblk, что бы увидеть все точки монтирования, если все как на скриншоте, спешу вас поздравить половина работы выполнено, да и самое сложное позади

-10

Опционально. конфиг pacman.conf.

давайте сразу в лайф системе поправим конфиг pacman.conf, это ускорит установку выполнив команду

nano /etc/pacman.conf

проверим параметр ParallelDownloads = 5 если раскомментирован, то замечательно это заставит менеджера пакетов скачивать сразу в несколько потоков в данном случае в 5. За одно раскомментируем секцию [Multilib] и ее параметр include = .., это дополнительный репозиторий с 32-битными библиотеками (не забудьте провернуть данную операцию на установленном Арче).

-11

Установка базовых пакетов.

приступаем к установке пакетов поставив все самое необходимое (чисто мое субъективное мнение) следующей командой:

pacstrap -i /mnt base base-devel linux-zen linux-zen-headers linux-firmware dosfstools btrfs-progs amd-ucode nano sudo grub eifbootmgr dhcpcd dhcpclient networkmanager
  • base base-devel основные мета-пакеты Arch Linux
  • dosfstools btrfs-progs дополнительные пакеты для работе с файловыми системами
  • amd-ucode / intel-ucode iucode-tool пакеты для amd-процессора и для intel-процессора

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

Три основных ядра

  1. linux (Стабильное)Ядро по умолчанию. Всегда самая свежая стабильная версия от разработчиков Linux. Для тех, кто хочет иметь поддержку новейшего «железа» и последние программные улучшения.
  2. linux-lts (Long Term Support)Версия с длительной поддержкой. Реже обновляется (меняется только минорная версия с исправлениями
    багов), что снижает риск того, что после обновления что-то сломается. Для серверов или тех, кому важна максимальная предсказуемость системы. Опытные пользователи часто ставят его вторым «запасным» ядром.
  3. linux-zen (Оптимизированное)Результат совместной работы по улучшению ядра для обычных ПК. Настроено на лучшую отзывчивость рабочего стола (responsiveness). Включает патчи для повышения производительности в играх и тяжелых приложениях. Геймеры и пользователи, которым важна плавность интерфейса.

Для каждого ядра (linux, lts, zen) есть соответствующий пакет заголовков (linux-headers, linux-lts-headers, linux-zen-headers). Это заголовочные файлы (интерфейсы), необходимые для компиляции модулей, которые не входят в основное ядро. Обязательно устанавливайте их, в соответствии в выбранным ядром, если вы используете: Драйверы NVIDIA (проприетарные). VirtualBox (модули гостевой ОС или хоста). Любое оборудование, требующее сборки драйверов через DKMS.

  • linux-firmware пакет содержащий набор бинарных файлов прошивок (firmware/microcode), необходимых ядру Linux для инициализации и работы аппаратных компонентов (видеокарты, Wi-Fi, Bluetooth, звуковые карты). Эти файлы загружаются в устройство при старте системы, обеспечивая корректное функционирование оборудования, которое не работает корректно с открытыми драйверами напрямую
  • nano текстовый редактор нам потребуется для редактирования файлов конфигураций (для новичков это будет удобным инструментом)
  • sudo позволяет выполнять команды от имени суперпользователя (root). По умолчанию в Arch вы работаете под обычным пользователем, и sudo нужен для установки софта или изменения системных файлов.
  • grub самый популярный загрузчик. Это меню, которое вы видите сразу после включения компьютера, где выбираете ОС для запуска.
  • eifbootmgr утилита для взаимодействия с UEFI (современной заменой BIOS). Она нужна grub, чтобы он мог прописать себя в память материнской платы как вариант загрузки.

Сетевые пакеты. Здесь важно понимать, что обычно выбирают либо минималистичный вариант, либо универсальный комбайн.

  • networkmanager — «всё в одном». Самый удобный вариант для десктопа или ноутбука. Он сам управляет Wi-Fi, Ethernet и VPN.
  • dhcpcd — легкий DHCP-клиент. Он просто запрашивает IP-адрес у вашего роутера. Часто используется на серверах или в минималистичных сборках, где не нужен тяжелый NetworkManager.
  • dhclient — альтернативный DHCP-клиент от ISC. В Arch чаще используют dhcpcd, но dhclient может понадобиться некоторым специфическим программам.

Важный нюанс: Если вы ставите networkmanager, то запускать отдельно dhcpcd не нужно они будут конфликтовать, так как оба попытаются управлять сетевым интерфейсом одновременно.

-12

по этому не обязательно ставить все три пакета dhcpcd, dhcpclient, networkmanager. Но на всякий случай пусть будут.

-13

Нюанс с PGP ключами.

Иногда бывают проблемы с PGP сигнатурой пакетов, но это бывает при условии если установочный образ скачен с офсайта довольно таки давно. Лечится это весьма легко установив пакет с PGP ключами.

pacstrap -i /mnt archlinux-keyring

далее все должно пройти как по маслу, считайте больше половина работы по установке уже за плечами

-14

Генерация fstab.

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

lsblk

если это так генерируем файл fstab командой

genfstab -U /mnt > /mnt/etc/fstab

отлично, давайте убедимся в этом с помощью команды

cat /mnt/etc/fstab

или

nano /mnt/etc/fstab

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

-15

Переход в chroot и конфигурирование системы.

далее переходим в установленную систему с помощью chroot

arch-chroot /mnt

настраиваем часовой пояс(вы же указывайте свой)

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
hwclock --systohc

переходим к локализации правим конфиг locale.gen командой

nano /etc/locale.gen
-16

да и помните, английская локализация обязательна!!! локализация какая требуется следует раскомментировать

...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...

генерируем локали с помощью команды

locale-gen

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

-17

далее правим конфиг locale.conf командой

nano /etc/locale.conf

вносим следующие параметры

...
LANG=ru_RU.UTF-8
...
-18

далее правим конфиг vconsole.conf командой

nano /etc/vconsole.conf

вносим следующие строки

...
KEYMAP=ru
FONT=cyr-sun16
...
-19

далее правим конфиг localhost командой

nano /etc/localhost

это будет имя системы в сети, называем как душе угодно, но латиницей

-20

далее правим конфиг hosts командой

nano /etc/hosts

вносим следующие строки:

...
127.0.0.1 localhost
::1 localhost
...
-21

основная часть Arch Linux сконфигурирована.

Генерация initramfs и установка grub.

переходим к ответственной части, initramfs с помощью команды

mkinitcpio -p linux-zen (если ядер несколько)

или же

mkinitcpio -P linux-zen (если ядро одно)

либо другое ядро linux или linux-lts в зависимости какие ставили с помощью pacstrap, если все так, двигаемся дальше

-22

Если смущают warning'и я описал в отдельной статье "WARNING при генерации initramfs"

далее устанавливаем grub на накопитель (именно на устройство, а не раздел, не путайте) должно быть согласно скриншоту

grub-install /dev/vda

grub сам знает что куда ему записывать

далее конфигурируем grub командой

grub-mkconfig -o /boot/grub/grub.cfg

согласно скриншоту должно быть так, да? замечательно двигаемся дальше

-23

Сеть.

Далее добавляем в автозагрузку dhcpcd что бы после перезагрузки сеть заработала.

systemctl enable dhcpcd
-24

Создание пользователей и установка паролей.

далее с помощью команды ставим пароль на root

passwd

добавляем пользователя john в группу wheel

useradd -m -G wheel -s /bin/bash john

и задаем пароль для пользователя john

passwd john
-25

так как sudo уже установлен перейдем к его конфигурации командой

nano /etc/sudoers

раскомментируем строку %wheel ALL=(ALL:ALL) ALL так как пользователь (john) в группе wheel.

К размышлению, нюанс в плане безопасности, все пользователи этой группы будут иметь права выполнять что либо от Root

какие варианты:

  1. явно прописать своего пользователя например john ALL=(ALL:ALL) ALL
  2. пользователя который будет обладать правом выполнять что либо от Root добавить еще в группу sudo и ее только раскомментировать в файле sudoers строка %sudo ALL=(ALL:ALL) ALL

получается что пользователи состоящее в группе wheel не будут иметь право выполнять что либо от Root, а состоящие в sudo имеют право выполнять что либо от Root, следовательно пользователь john будет в группах wheel и sudo что бы иметь право выполнять что либо от Root (запутано написал, сам в шоке, но думаю вы поняли ход мыслей)

-26

далее выходим из chroot командой

exit

отмонтируем разделы

umount -R /mnt

убедимся в этом командой

lsblk

перезапускаемся

reboot

отлично, по сути базовая установка и настройка завершена, но без оболочки.

-27

после перезагрузки если все действия выполнены корректно вас встретит grub

-28

входим под своим пользователем (у меня john) проверим работает ли dhcpcd выполнив следующую команду

sudo systemctl status dhcpcd

результат должен быть подобен скриншоту ниже

-29

далее будем

  • устанавливать видео драйвера
  • устанавливать yay для установки приложений из AUR
  • устанавливать оболочку на пример: KDE Plasma, Gnome, XFCE, Budgie, Mate, Pantheon, Cinnamon, LXDE, LXQt, CuteFish, Deepin, Enlightenment и другие

ну и конечно же чисто по красоваться красивыми циферками пару скринов

-30
-31

За основу взято ArchWiki, так же несколько инструкций от других пользователей и переписаны под себя. Статья немного доработана в 2026.

За сим откланиваюсь...