Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) 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, вы на верном пути
далее настраиваем окружение, дату и время: переключение языков (ru/en, в принципе как бы это и не обязательно, чисто внутренний эстетизм требует)
loadkeys ru
поддержка кириллицы
setfont cyr-sun16
включение синхронизации времени
timedatectl set-ntp true
настраиваем часовой пояс (в данном случае Европа/Москва)
timedatectl set-timezone Europe/Moscow
проверяем состояние времени
timedatectl status
Если все как на скриншоте, замечательно, мы настроили поддержку кириллицы, дату, время, часовой пояс. Двигаемся дальше, пора определится на какой накопитель будем устанавливать Arch Linux.
Разметка накопителя.
Так как в демонстрации установки Arch Linux используем виртуальную машину, то у нас один диск VDA, у вас же вероятно будут SDA, SDB (SATA - накопители, не важно это ssd/hdd), либо же NVME0N1, NVME1N1 (это NVME - накопители), надо определиться. В данном случае у нас отдельный накопитель без разметки, что нам демонстрирует команда ниже:
lsblk
И так наш диск на 32Gb, подготовим его к установки, создав разделы с помощью cfdisk команда:
cfdisk /dev/vda
в данном случае выбираем GPT, и переходим к разметке накопителя
- /dev/vda1 размером 512Mb (более достаточно) указываем тип EFI System - тут будет жить загрузчик, раздел BOOT.
- /dev/vda2 тип Linux filesystem, размер уже на ваше усмотрение тут будет сама система, раздел ROOT.
- /dev/vda3 тип Linux swap, опять же на ваше усмотрение (добавил для демонстрации) так то можно создать и файл-swap хотя для btrfs не рекомендуются этого делать, но это уже другая история, хотя в некоторых случаях можно обойтись и без него, опять же на ваше усмотрение.
не забудьте записать(пункт write) и подтвердить изменения, написав yes. Часть ответственной работы выполнена идем дальше
для проверки используем команду (для наглядности я ее буду часто применять)
lsblk
хотя можно воспользоваться
fdisk -l /dev/vda
вывод будет содержать избыточную информацию о разметке диска. Если все как на скриншоте ниже, то могу вас поздравить, вы подготовили накопитель к установке Arch Linux.
Форматирование разделов.
двигаемся дальше. Теперь надо отформатировать разделы, и так, план такой
- /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
все сделано как на скриншоте? Отлично, двигаемся дальше
Монтирование разделов и создание subvolum'ов.
Далее, нам нужно под монтировать раздел /dev/vda2 (ROOT) в каталог /mnt следующей командой
mount /dev/vda2 /mnt
для наглядности до и после использовал lsblk
Далее предельно внимательно следите за ходом действий и выполнением команд. Переходим в директорию /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, что бы увидеть все точки монтирования, если все как на скриншоте, спешу вас поздравить половина работы выполнено, да и самое сложное позади
Опционально. конфиг pacman.conf.
давайте сразу в лайф системе поправим конфиг pacman.conf, это ускорит установку выполнив команду
nano /etc/pacman.conf
проверим параметр ParallelDownloads = 5 если раскомментирован, то замечательно это заставит менеджера пакетов скачивать сразу в несколько потоков в данном случае в 5. За одно раскомментируем секцию [Multilib] и ее параметр include = .., это дополнительный репозиторий с 32-битными библиотеками (не забудьте провернуть данную операцию на установленном Арче).
Установка базовых пакетов.
приступаем к установке пакетов поставив все самое необходимое (чисто мое субъективное мнение) следующей командой:
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 есть несколько официальных вариантов ядра. Выбор зависит от
того, что вам важнее: стабильность, скорость или свежие функции.
Три основных ядра
- linux (Стабильное)Ядро по умолчанию. Всегда самая свежая стабильная версия от разработчиков Linux. Для тех, кто хочет иметь поддержку новейшего «железа» и последние программные улучшения.
- linux-lts (Long Term Support)Версия с длительной поддержкой. Реже обновляется (меняется только минорная версия с исправлениями
багов), что снижает риск того, что после обновления что-то сломается. Для серверов или тех, кому важна максимальная предсказуемость системы. Опытные пользователи часто ставят его вторым «запасным» ядром. - 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 не нужно они будут конфликтовать, так как оба попытаются управлять сетевым интерфейсом одновременно.
по этому не обязательно ставить все три пакета dhcpcd, dhcpclient, networkmanager. Но на всякий случай пусть будут.
Нюанс с PGP ключами.
Иногда бывают проблемы с PGP сигнатурой пакетов, но это бывает при условии если установочный образ скачен с офсайта довольно таки давно. Лечится это весьма легко установив пакет с PGP ключами.
pacstrap -i /mnt archlinux-keyring
далее все должно пройти как по маслу, считайте больше половина работы по установке уже за плечами
Генерация fstab.
и так давайте убедимся что все под монтировано командой
lsblk
если это так генерируем файл fstab командой
genfstab -U /mnt > /mnt/etc/fstab
отлично, давайте убедимся в этом с помощью команды
cat /mnt/etc/fstab
или
nano /mnt/etc/fstab
должно быть подобно как скриншоту ниже, замечательно двигаемся дальше
Переход в chroot и конфигурирование системы.
далее переходим в установленную систему с помощью chroot
arch-chroot /mnt
настраиваем часовой пояс(вы же указывайте свой)
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
hwclock --systohc
переходим к локализации правим конфиг locale.gen командой
nano /etc/locale.gen
да и помните, английская локализация обязательна!!! локализация какая требуется следует раскомментировать
...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...
генерируем локали с помощью команды
locale-gen
должно быть примерно как на скриншоте, замечательно, двигаемся дальше
далее правим конфиг locale.conf командой
nano /etc/locale.conf
вносим следующие параметры
...
LANG=ru_RU.UTF-8
...
далее правим конфиг vconsole.conf командой
nano /etc/vconsole.conf
вносим следующие строки
...
KEYMAP=ru
FONT=cyr-sun16
...
далее правим конфиг localhost командой
nano /etc/localhost
это будет имя системы в сети, называем как душе угодно, но латиницей
далее правим конфиг hosts командой
nano /etc/hosts
вносим следующие строки:
...
127.0.0.1 localhost
::1 localhost
...
основная часть Arch Linux сконфигурирована.
Генерация initramfs и установка grub.
переходим к ответственной части, initramfs с помощью команды
mkinitcpio -p linux-zen (если ядер несколько)
или же
mkinitcpio -P linux-zen (если ядро одно)
либо другое ядро linux или linux-lts в зависимости какие ставили с помощью pacstrap, если все так, двигаемся дальше
Если смущают warning'и я описал в отдельной статье "WARNING при генерации initramfs"
далее устанавливаем grub на накопитель (именно на устройство, а не раздел, не путайте) должно быть согласно скриншоту
grub-install /dev/vda
grub сам знает что куда ему записывать
далее конфигурируем grub командой
grub-mkconfig -o /boot/grub/grub.cfg
согласно скриншоту должно быть так, да? замечательно двигаемся дальше
Сеть.
Далее добавляем в автозагрузку dhcpcd что бы после перезагрузки сеть заработала.
systemctl enable dhcpcd
Создание пользователей и установка паролей.
далее с помощью команды ставим пароль на root
passwd
добавляем пользователя john в группу wheel
useradd -m -G wheel -s /bin/bash john
и задаем пароль для пользователя john
passwd john
так как sudo уже установлен перейдем к его конфигурации командой
nano /etc/sudoers
раскомментируем строку %wheel ALL=(ALL:ALL) ALL так как пользователь (john) в группе wheel.
К размышлению, нюанс в плане безопасности, все пользователи этой группы будут иметь права выполнять что либо от Root
какие варианты:
- явно прописать своего пользователя например john ALL=(ALL:ALL) ALL
- пользователя который будет обладать правом выполнять что либо от Root добавить еще в группу sudo и ее только раскомментировать в файле sudoers строка %sudo ALL=(ALL:ALL) ALL
получается что пользователи состоящее в группе wheel не будут иметь право выполнять что либо от Root, а состоящие в sudo имеют право выполнять что либо от Root, следовательно пользователь john будет в группах wheel и sudo что бы иметь право выполнять что либо от Root (запутано написал, сам в шоке, но думаю вы поняли ход мыслей)
далее выходим из chroot командой
exit
отмонтируем разделы
umount -R /mnt
убедимся в этом командой
lsblk
перезапускаемся
reboot
отлично, по сути базовая установка и настройка завершена, но без оболочки.
после перезагрузки если все действия выполнены корректно вас встретит grub
входим под своим пользователем (у меня john) проверим работает ли dhcpcd выполнив следующую команду
sudo systemctl status dhcpcd
результат должен быть подобен скриншоту ниже
далее будем
- устанавливать видео драйвера
- устанавливать yay для установки приложений из AUR
ну и конечно же чисто по красоваться красивыми циферками пару скринов
За основу взято ArchWiki, так же несколько инструкций от других пользователей и переписаны под себя. Статья немного доработана в 2026.
За сим откланиваюсь...