Skip to content

1. Установка Arch Linux

Раздел:
Тема:
Количество часов: 2
Задачи:
Порядок выполнения работы:

Revolution OS

Сетевой и системный администратор в своей работе должен опираться не только на технические знания и практические навыки, но и понимать контекст — зачем была создана та или иная технология, кто её разработал и с какой целью. Важно видеть не только «как», но и «почему». Особенно это актуально в отношении масштабных явлений, таких как движение Open Source. Рекомендую посмотреть документальный фильм Revolution OS — в нём участники движения, создатели Linux, GNU и других ключевых компонентов свободного ПО, рассказывают о своих идеях, мотивации и борьбе за открытость кода. Этот фильм позволяет понять, как личные убеждения и стремление к свободе обмена знаниями привели к созданию технологий, ставших сегодня глобальным достоянием и основой современной цифровой инфраструктуры.

https://rutube.ru/video/4d6aa787f23b8a59777d59248cd82e7f/

Предисловние

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

Более подробные инструкции приведены в соответствующих статьях ArchWiki и на страницах справочных руководств (man) различных программ. Также вы можете получить помощь в IRC-канале и на англоязычном и русскоязычном форумах Arch Linux.

Arch Linux способен работать на любой x86_64-совместимой машине, имеющей хотя бы 512 МиБ ОЗУ, однако понадобится больше памяти для загрузки live-системы. Базовая установка занимает меньше 2 ГиБ дискового пространства. Поскольку для процесса установки требуется получать пакеты из удалённого репозитория, необходимо работающее интернет-соединение.

Архитектурный контекст

Arch Linux следует философии KISS (Keep It Simple, Stupid), что отражает основной принцип Unix-подобных систем: каждая утилита должна решать одну задачу, но делать это качественно. Обратите внимание, что:

  • Ядро Linux управляет взаимодействием с железом
  • GNU-утилиты (bash, coreutils, grep и др.) предоставляют пользовательский интерфейс
  • Пакетный менеджер pacman — "клеевой компонент", соединяющий эти слои.

Это разделение ответственности между ядром, утилитами и пакетами — ключевая особенность архитектуры GNU/Linux.

Разметка дисков

Когда запущенная система распознает накопители, они становятся доступны как блочные устройства, например, /dev/sda/dev/nvme0n1 или /dev/mmcblk0. Чтобы посмотреть их список, используйте lsblk или fdisk:

bash
fdisk -l

Результаты, оканчивающиеся на romloop и airoot, можно игнорировать.

Блочные устройства и ядро

Блочные устройства (/dev/sdX, /dev/nvmeX) — это абстракция ядра Linux для работы с дисками. Важно понимать:

  • sda — интерфейс SATA/SCSI, nvme0n1 — интерфейс NVMe, mmcblk0 — карта памяти
  • Ядро динамически создает эти узлы через подсистему udev
  • Разделы (например, /dev/sda1) — логические части физического устройства

Это демонстрирует принцип "всё в Linux — файлы", даже аппаратные устройства представлены в файловой системе.

Необходимо выбрать блочное устройство на которое планируется установка системы.

Используйте fdisk чтобы разметить диск:

bash
fdisk /dev/диск_для_разметки

Создайте два раздела: основной раздел системы и SWAP раздел.

SWAP и виртуальная память

SWAP — не просто "резервная память". Это ключевой компонент виртуальной памяти:

  • Позволяет ядру выгружать неактивные страницы RAM на диск
  • Критичен для систем с малым объемом ОЗУ
  • Современные ядра используют SWAP даже при наличии свободной RAM (для оптимизации)

В Linux управление памятью — часть ядра (subsystem mm), а не отдельный сервис.

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

Когда новые разделы созданы, каждый из них необходимо отформатировать в подходящую файловую систему.

Например, чтобы отформатировать /dev/корневой_раздел в Ext4, выполните следующую команду:

bash
mkfs.ext4 /dev/корневой_раздел

Файловые системы и VFS

Ext4 — это journaling файловая система, но важно понять:

  • VFS (Virtual Filesystem Switch) — абстрактный слой ядра, через который взаимодействуют все FS
  • Файловая система — не часть ядра, а модуль, подключаемый динамически
  • Характеристики FS (ext4, btrfs, xfs) определяют:
    • Алгоритмы хранения данных
    • Поддержку ACL/SELinux
    • Механизмы восстановления после сбоев

Это пример разделения ядра и пользовательского пространства.

Если вы создали раздел для подкачки (swap), инициализируйте его с помощью утилиты mkswap:

bash
mkswap /dev/раздел_подкачки

Монтирование разделов

Смонтируйте корневой раздел в каталог /mnt. Например, если корневой раздел — /dev/корневой_раздел, выполните следующую команду:

bash
mount /dev/корневой_раздел /mnt

Иерархия файловых систем

Обратите внимание на принцип единой иерархии каталогов:

  • В отличие от Windows (C:, D:), в Linux все разделы монтируются в единую дерево начиная с /
  • Точка монтирования — обычный каталог, не имеющий специальных прав
  • /proc, /sys — псевдо-файловые системы ядра (procfs, sysfs), предоставляющие интерфейс к параметрам ядра

Это фундаментальное отличие архитектуры Unix-систем от других ОС.

Создайте точки монтирования для всех остальных разделов (например, /mnt/efi) и примонтируйте соответствующие разделы.

Совет

Команда mount, запущенная с опцией --mkdir, автоматически создаст требуемую точку монтирования. Можно создать их и вручную с помощью mkdir.

Если вы ранее создали раздел подкачки (swap), активируйте его с помощью swapon:

bash
swapon /dev/раздел_подкачки

В дальнейшем genfstab обнаружит смонтированные файловые системы и пространство подкачки.

Установка

Выбор зеркал

Пакеты для установки должны скачиваться с серверов-зеркал, прописанных в файле /etc/pacman.d/mirrorlist. В установочном образе, после подключения к сети, reflector обновит список зеркал (выбрав 20 наиболее актуальных HTTPS-зеркал) и отсортирует их по скорости загрузки.

Репозитории и пакетный менеджер

Pacman использует двухуровневую модель:

  1. Репозитории (mirrorlist) — статические архивы пакетов
  2. Локальная БД (/var/lib/pacman/local) — отслеживает установленные пакеты Ключевые концепции:
  • Пакет — не просто набор файлов, а метаданные + скрипты установки
  • Зависимости разрешаются на уровне пакетного менеджера, а не через LD_LIBRARY_PATH
  • Arch использует rolling release — обновления поступают сразу после тестирования

Чем выше зеркало расположено в списке, тем больший приоритет оно имеет при скачивании пакета. Вы можете проверить этот файл и, при необходимости, отредактировать его вручную, переместив наверх наиболее географически близкие зеркала. При этом также учитывайте и другие критерии.

Позже pacstrap скопирует этот файл в новую систему, так что это действительно стоит сделать. Установка основных пакетов

Установка пакетов

Используйте скрипт pacstrap, чтобы установить пакет base, ядро Linux и прошивки часто встречающихся устройств:

bash
pacstrap -K /mnt base linux linux-firmware dhcpcd nano openssh

Совет

В случае проблем с pgp key используйте:

bash
pacman -Sy archlinux-keyring

Совет

linux можно заменить на другой желаемый пакет ядра. Можно вообще не устанавливать ядро, если установка происходит в контейнере.

Можно пропустить установку пакета прошивок, если установка происходит в контейнере или виртуальной машине.

Пакет base содержит не все инструменты, имеющиеся на установочном носителе, из-за чего может потребоваться установка дополнительных пакетов для получения полностью функциональной базовой системы. В частности, вам могут пригодиться следующие программы:

  • утилиты для управления файловыми системами в пользовательском пространстве, которые будут использоваться в системе,
  • утилиты для доступа к RAID- или LVM-разделам,
  • специфические прошивки других устройств, не включённые в linux-firmware (например, sof-firmware для некоторых звуковых карт),
  • ПО, необходимое для организации сети (например, менеджер сети или DHCP-клиент),
  • текстовый редактор,
  • пакеты для доступа к документации в man и infoman-dbman-pages и texinfo.

Чтобы установить другие пакеты или группы, добавьте их названия к команде pacstrap (разделяя их пробелом) или используйте pacman во время этапа #Chroot. Список пакетов, присутствующих в установочном образе, доступен на странице pkglist.x86_64.txt.

Состав базовой системы

Пакет base включает:

  • GNU Coreutils (ls, cp, rm и др.)
  • Bash (но не единственный shell)
  • systemd (менеджер служб)
  • pacman (сам пакетный менеджер!)

Важно: ядро Linux (linux) и прошивки (linux-firmware) — отдельные компоненты, так как:

  • Ядро работает в привилегированном режиме (kernel space)
  • Прошивки — двоичные blob'ы для оборудования (часто закрытые) Это демонстрирует разделение на open-source ядро и проприетарные компоненты.

Настройка системы

Fstab

Сгенерируйте файл fstab (используйте ключ -U или -L, чтобы для идентификации разделов использовались UUID или метки, соответственно):

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

После этого проверьте файл /mnt/etc/fstab и отредактируйте его в случае необходимости.

fstab и процесс загрузки

Файл /etc/fstab — часть системы инициализации:

  • Читается на ранней стадии загрузки (до запуска systemd)
  • Определяет порядок монтирования разделов
  • UUID предпочтительнее /dev/sdX, так как:
    • Не зависит от порядка обнаружения устройств
    • Гарантирует стабильность при изменении конфигурации

Это пример связи между низкоуровневыми операциями (монтирование) и высокоуровневой системой (systemd).

Chroot

Перейдите к корневому каталогу новой системы:

bash
arch-chroot /mnt

Chroot и изоляция

Команда arch-chroot делает два ключевых действия:

  1. Меняет корневую файловую систему на /mnt
  2. Корректирует пространство процессов (PID namespace) Это базовый механизм изоляции, на котором строятся:
  • Контейнеры (LXC, Docker)
  • Системы восстановления
  • Безопасное выполнение программ

Понимание chroot критично для работы с современными Linux-системами.

Часовой пояс

Задайте часовой пояс:

bash
ln -sf /usr/share/zoneinfo/Регион/Город /etc/localtime

Время в Linux

Два ключевых аспекта:

  1. Аппаратные часы (RTC) — хранят время в UTC (не в локальном!)
  2. Системные часы — управляются ядром, используют локальную зону через /etc/localtime

Почему UTC?

  • Позволяет корректно работать с несколькими временными зонами
  • Избегает проблем с летним/зимним временем
  • Стандарт для серверных систем

Это пример компромисса между технической простотой и пользовательским удобством.

Запустите hwclock, чтобы сгенерировать /etc/adjtime:

bash
hwclock --systohc

Эта команда предполагает, что аппаратные часы настроены в формате UTC.

Пароль суперпользователя

Установите пароль суперпользователя:

bash
passwd

Загрузчик GRUB2

Установка пакета

Файлы и утилиты для установки GRUB2 содержатся в пакете grub, и устанавливаются командой:

bash
pacman -S grub

Установка загрузчика

Установка BIOS-версии загрузчика

Для установки GRUB2 нужно выполнить команду от root:

bash
grub-install /dev/sda
  • где /dev/sda это устройство (не раздел!) для установки загрузочных образов GRUB. Файлы загрузчика будут установлены в каталог /boot. Код GRUB (boot.img) будет встроен в начальный сектор, а загрузочный образ core.img – в просвет перед первым разделом MBR, или BIOS boot partition для GPT.

Если при выполнении команды происходит ошибка, попробуйте добавить --recheck в аргументы как показано ниже:

bash
grub-install --recheck /dev/sda

Загрузчики и этапы загрузки

Процесс загрузки Linux:

  1. BIOS/UEFI — инициализация железа
  2. Загрузчик (GRUB) — загружает ядро и initramfs
  3. Ядро — монтирует корневую ФС
  4. systemd — запускает службы GRUB работает в режиме реальных адресов (как DOS!), поэтому:
  • Нужен отдельный раздел /boot (обычно ext4)
  • Не может напрямую работать с LVM/Btrfs на ранних этапах Это историческое наследие влияет на современную архитектуру систем.

После установки

В настоящее время GRUB2, сразу после установки, готов к работе только в режиме консоли. (Это будет продолжаться до тех пор, пока мейнтейнеры пакета "grub" не заменят бессмысленный дефолтный файл конфигурации загрузчика на рабочую статическую или автоматически генерируемую версию.)

Чтобы получить при загрузке действующее меню GRUB2, требуется заменить файл grub.cfg самостоятельно.

Генерация конфига

Команда grub-mkconfig может быть использована для генерации файла grub.cfg.

Для автоматического обнаружения ОС отличных от Linux установите пакет os-prober. Если после установки пакета os-prober автоматическое обнаружение не работает должным образом, то может потребоваться установка пакета hwinfo. Чтобы применить изменения, запустите команду:

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

Она не только создаст файл /boot/grub/grub.cfg, но и проверит конфигурацию на наличие ошибок.

Важно

Если вы запускаете конфигуратор при установке Arch Linux, убедитесь, что вы делаете это внутри arch-chroot, иначе программа будет читать и записывать файлы конфигурации текущей, а не устанавливаемой системы.

Перезагрузка

Выйдите из окружения chroot, набрав exit или нажав Ctrl+d.

Вы можете размонтировать все разделы с помощью команды:

bash
umount -R /mnt

Фаза выгрузки системы

Команда umount -R критична, потому что:

  • Ядро блокирует доступ к файлам при монтировании
  • Неотмонтированные разделы могут повредить данные
  • systemd автоматически размонтирует при перезагрузке, но лучше делать это вручную

Это демонстрирует принцип синхронизации состояния в Unix-системах: все операции с диском должны быть завершены перед выключением.

Теперь перезагрузите компьютер, набрав reboot: если какие-нибудь разделы остались смонтированными, systemd их размонтирует. Не забудьте извлечь установочный носитель. После загрузки войдите в систему в качестве суперпользователя.

Контрольные вопросы по теме: Установка Arch Linux

1. Общие сведения

  1. Какие минимальные системные требования для установки Arch Linux?
  2. Зачем нужен работающий интернет-доступ при установке Arch Linux?
  3. Что представляет собой live-система при установке Arch Linux?
  4. Где можно найти официальную документацию по установке Arch Linux?

2. Разметка дисков

  1. Какие команды можно использовать для просмотра списка доступных блочных устройств?
  2. Как определить, какой диск использовать для установки системы?
  3. Какие типы разделов необходимо создать при установке Arch Linux (минимальный набор)?
  4. Какая команда используется для разметки диска в интерактивном режиме?
  5. Почему при установке GRUB в режиме BIOS важно указывать не раздел, а само устройство (например, /dev/sda, а не /dev/sda1)?

3. Форматирование и монтирование

  1. Какая команда используется для форматирования раздела в файловую систему ext4?
  2. Что делает команда mkswap и для какого раздела она применяется?
  3. Как активировать swap-раздел после его создания?
  4. В какую директорию монтируется корневой раздел при установке?
  5. Какая опция команды mount позволяет автоматически создать точку монтирования?

4. Установка пакетов

  1. Что делает утилита pacstrap?
  2. Какие пакеты устанавливаются командой:
bash
pacstrap -K /mnt base linux linux-firmware dhcpcd nano openssh
  1. Зачем нужно обновлять archlinux-keyring при возникновении ошибок с PGP-ключами?
  2. Можно ли установить Arch Linux без ядра? В каком случае это допустимо?
  3. Какие дополнительные пакеты могут понадобиться для полноценной базовой системы?

5. Настройка системы

  1. Как сгенерировать файл /etc/fstab? Какой ключ рекомендуется использовать и почему?
  2. Для чего используется команда arch-chroot и когда она применяется?
  3. Как установить часовой пояс в Arch Linux? Приведите пример команды.
  4. Какая команда синхронизирует системные часы с аппаратными?
  5. В каком формате предполагается, что работают аппаратные часы при выполнении hwclock --systohc?
  6. Как установить пароль для пользователя root?

6. Загрузчик GRUB

  1. Какой пакет необходимо установить для работы с GRUB2?
  2. Какая команда устанавливает загрузчик GRUB2 на диск в режиме BIOS?
  3. Что делает опция --recheck в команде grub-install?
  4. Почему после установки GRUB2 требуется вручную генерировать grub.cfg?
  5. Какая команда генерирует конфигурационный файл GRUB?
  6. Какой пакет нужен для обнаружения других операционных систем при генерации grub.cfg?
  7. Почему важно запускать grub-mkconfig внутри arch-chroot?

7. Завершение установки

  1. Как выйти из окружения chroot?
  2. Как размонтировать все разделы перед перезагрузкой?
  3. Что произойдёт, если не извлечь установочный носитель после перезагрузки?

Отчёт

Требования к отчету

1. Формат и структура

  • Файл должен называться Group_Lastname_Firstname_HW1.md
  • Использовать синтаксис Markdown (заголовки, списки, код, цитаты)
  • Обязательные разделы:
    markdown
    # Введение
    # Анализ этапов установки
    # Выводы

2. Содержание разделов

Введение (200-300 слов)

  • Кратко опишите философию Arch Linux (KISS, DIY)
  • Объясните разницу между ядром Linux и GNU-утилитами
  • Упомяните, почему Arch подходит для изучения архитектуры ОС
  • Пример:

    "Arch Linux реализует принцип «не навязывать предустановленные решения», что позволяет увидеть «костяк» GNU/Linux-системы. В отличие от Ubuntu, где скрыты этапы инициализации, Arch требует ручной настройки каждого компонента..."

Анализ этапов установки (основная часть) Для каждого из этапов установки:

  1. Вставьте скриншот терминала с выполненной командой

  2. Добавьте подпись с пояснением:

    markdown
    ![Разметка диска](скриншот.png)
    *Рис. 1. Создание разделов через fdisk. Обратите внимание, что /dev/sda — абстракция ядра для SATA-диска, а не физическое устройство.*
  3. Напишите краткое описание (80-100 слов), отвечая на простые вопросы:

    • Какую команду вы выполняли?
    • Что эта команда делает в контексте установки?
    • Какие параметры вы использовали и почему?
    • Что произошло после выполнения команды?

    Пример для этапа разметки:

    "Команда fdisk /dev/sda запустила утилиту для разметки диска. Я создал два раздела: основной и swap. Параметр /dev/sda указывает на первый жесткий диск. После создания разделов команда lsblk показала новые разделы sda1 и sda2. Это важно, потому что без разделов нельзя установить систему."

Что я узнал(а) (200-250 слов)

  • Какие 3 момента процесса установки оказались для вас неожиданными
  • Какие команды/этапы были самыми сложными и почему
  • Что нового вы поняли о работе операционных систем

3. Требования к скриншотам

  • Минимум 5 скриншотов
  • В скриншотах должны быть видны:
    • Команды в терминале
    • Вывод системных утилит (lsblk, fdisk -l и т.д.)
    • Ваш username в приглашении терминала (для подтверждения авторства)
  • Каждый скриншот должен иметь подпись и пояснение

Важно!

  1. Не копируйте текст руководства — пишите своими словами
  2. Избегайте общих фраз вроде "Linux хорош"
  3. Ссылайтесь на конкретные компоненты (VFS, udev, initramfs)
  4. Проверяйте корректность терминов (например, не "ядро GNU", а "ядро Linux")

Контакты: bystrovno@basealt.ru