Handbook:MIPS/Installation/Stage

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:MIPS/Installation/Stage and the translation is 100% complete.
MIPS Handbook
Установка
Об установке
Выбор подходящего источника для установки
Настройка сети
Подготовка дисков
Установка файла stage
Установка базовой системы
Настройка ядра
Настройка системы
Установка системных утилит
Настройка загрузчика
Завершение
Работа с Gentoo
Введение в Portage
USE-флаги
Возможности Portage
Система сценариев инициализации
Переменные окружения
Работа с Portage
Файлы и каталоги
Переменные
Смешение ветвей программного обеспечения
Дополнительные утилиты
Дополнительные репозитории пакетов
Расширенные возможности
Настройка сети OpenRC
Начальная настройка
Расширенная настройка
Модульное построение сети
Беспроводная сеть
Добавляем функциональность
Динамическое управление


Выбор архива stage

Совет
On supported architectures, it is recommended for users targeting a desktop (graphical) operating system environment to use a stage file with the term desktop within the name. These files include packages such as sys-devel/llvm and dev-lang/rust-bin and USE flag tuning which will greatly improve install time.

The stage file acts as the seed of a Gentoo install. Stage files are generated with Catalyst by the Release Engineering Team. Stage files are based on specific profiles, and contain an almost-complete system.

When choosing a stage file, it's important to pick one with profile targets corresponding to the desired system type.

Заметка
Технически, вы можно переключить Gentoo уже после установки с OpenRC на systemd и обратно. Однако, переключение потребует определённых усилий и выходит за рамки данного руководства по установке. Перед загрузкой stage3 архива решите, будет ли использоваться OpenRC или systemd в качестве целевой системы инициализации, и загрузите соответствующий stage3 архив.

Большинству пользователей не следует использовать «продвинутые» варианты архивов; они предназначены для конкретных программных или аппаратных конфигураций.

OpenRC

OpenRC — это система инициализации на основе зависимостей (ответственна за загрузку системных сервисов после загрузки ядра), которая поддерживает совместимость с системной программой для загрузки (обычно расположенная в /sbin/init). Она является основной и оригинальной в Gentoo, но она также используется в некоторых других дистрибутивах Linux и системах BSD.

По умолчанию, OpenRC не заменяет файл /sbin/init и на 100% совместим с инит-скриптами Gentoo. Это означает, что вы получите готовые сервисы для множества програм в репозиториях Gentoo.

systemd

systemd — это современная система инициализации для систем на базе Linux. Она используется как основная система инициализации в большинстве дистрибутивов Linux. systemd полностью поддерживается в Gentoo и работает по своему прямому назначению. Если вам кажется, что чего–то не хватает в Руководстве для поддержки установки с systemd, просмотрите статью systemd перед тем, как попросить поддержки.

Multilib (32 и 64 бит)

Заметка
Не все архитектуры имеют поддержку multilib. Много архитектур выполняют код в «родном» режиме. Multilib по большей части относится к amd64.

В профиле multilib предпочтение отдаётся 64-битным библиотекам, но, если необходимо обеспечение совместимости, есть возможность использовать 32-битные версии. Это великолепный выбор для большинства установок, так как он обеспечивает большую гибкость конфигурации в будущем.

Совет
Using multilib targets makes it easier to switch profiles later, compared to no-multilib

No-multilib (чистый 64-bit)

Предупреждение
Имейте в виду, пользователям, которые только начинают знакомиться с Gentoo, следует избегать использование архива no-multilib (если только это не продиктовано другими соображениями). Миграция с no-multilib на multilib потребует чрезвычайно хорошего знания Gentoo и наличия набора инструментов разработки более низкого уровня (от которых наших разработчиков Toolchain может даже бросить дрожь). Данный процесс не для слабонервных и выходит за рамки данного руководства.

Выбор no‐multilib архива в качестве основы для системы позволяет получить полностью 64‐битное окружение операционной системы. Это существенно снижает возможность перехода на multilib‐профили, но по‐прежнему технически осуществимо.

Скачивание архива stage

Установка даты и времени

Stage archives are generally obtained using HTTPS which requires relatively accurate system time. Clock skew can prevent downloads from working, and can cause unpredictable errors if the system time is adjusted by any considerable amount after installation.

Текущую дату и время можно проверить с помощью команды date:

root #date
Mon Oct  3 13:16:22 PDT 2021

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

Автоматическая настройка

Using NTP to correct clock skew is typically easier and more reliable than manually setting the system clock.

chronyd, part of net-misc/chrony can be used to update the system clock to UTC with:

root #chronyd -q
Важно
Systems without a functioning Real-Time Clock (RTC) must sync the system clock at every system start, and on regular intervals thereafter. This is also beneficial for systems with a RTC, as the battery could fail, and clock skew can accumulate.
Предупреждение
Standard NTP traffic not authenticated, it is important to verify time data obtained from the network.

Ручная настройка

When NTP access is unavailable, date can be used to manually set the system clock.

Для всех систем Linux рекомендуется использовать время UTC. Часовой пояс будет установлен позже в процессе установки, что позволит изменить отображение часов с учётом местного времени.

В системах, где нет доступа к серверу времени, для ручной установки системных часов можно использовать команду date. Она принимает параметр в следующем формате: code>MMDDhhmmYYYY (M — месяц, D — день, h — час, m — минута и Y — год).

Например, чтобы установить дату на 13:16 3 октября 2021 года, выполните:

root #date 100313162021

Перейдите к точке монтирования Gentoo, где размещается корневая файловая система (скорей всего это /mnt/gentoo):

root #cd /mnt/gentoo

Графические веб-браузеры

У пользователей, использующих среду с полноценными веб-браузерами, не будет никаких проблем с копированием URL файла stage из раздела загрузки главного веб-сайта. Просто выберите подходящую вкладку, щёлкните правой кнопкой по ссылке файла stage, выберите Копировать ссылку, скопировав её в буфер обмена. Затем вставьте ссылку в командной строке после команды wget для скачивания архива:

root #wget <PASTED_STAGE_FILE_URL>

Веб-браузер в командной строке

Более опытные пользователи или «старики» Gentoo, которые работают исключительно из командной строки, могут воспользоваться links (www-client/links) — консольным веб-браузером на основе меню. Чтобы загрузить файл архива stage, просмотрите список зеркал Gentoo:

root #links https://www.gentoo.org/downloads/mirrors/

Чтобы использовать HTTP-прокси в links, введите URL с параметром -http-proxy:

root #links -http-proxy proxy.server.com:8080 https://www.gentoo.org/downloads/mirrors/

Наряду с links так же есть браузер lynx (www-client/lynx). Как и links, он не имеет графического интерфейса, но у него нет меню.

root #lynx https://www.gentoo.org/downloads/mirrors/

Если прокси нужно сохранить, экспортируйте переменные http_proxy и/или ftp_proxy:

root #export http_proxy="http://proxy.server.com:port"
root #export ftp_proxy="http://proxy.server.com:port"

В списке зеркал выберите зеркало, которое находится рядом. Обычно достаточно HTTP-зеркала, но другие протоколы также доступны. Перейдите в каталог releases/mips/autobuilds/. Там отображаются все доступные stage-файлы (они могут находиться в подкаталогах с названиями отдельных субархитектур). Выберите нужный и нажмите d для скачивания.

После завершения скачивания можно проверить целостность и достоверность содержимого архива stage. Если вам это интересно, перейдите к следующему разделу.

Тем, кому не интересно проверять архив stage, могут закрыть браузер в командной строке с помощью клавиши q и сразу перейти к разделу Распаковка архива stage.

Проверка и валидация

Заметка
Многие stage архивы теперь явно содержат суффикс с типом системы инициализации (openrc или systemd), хотя у некоторых архитектур они могут пока отсутствовать.

Как и в случае с минимальными установочными компакт-дисками, доступно несколько файлов, необходимых для проверки и валидации файла stage. Хотя этот шаг может быть пропущен, эти файлы могут пригодиться пользователям, которым важна целостность только что скачанных файлов. Упомянутые дополнительные файлы находятся в том же каталоге, что и связанные stage-файлы. Перейдите в каталог, соответствующий аппаратной архитектуре и профилю системы, и загрузите соответствующие файлы с суффиксами .CONTENTS.gz, .DIGESTS и .sha265.

root #wget https://distfiles.gentoo.org/releases/
  • Сжатый файл .CONTENTS.gz содержит список всех файлов в stage-архиве.
  • Файл .DIGESTS содержит контрольные суммы stage-архива, вычисленные с использованием нескольких криптографических хеш-функций.
  • Файл .sha265 содержит контрольную сумму stage-архива, вычисленную с использованием единственной хеш-функции SHA256. Обратите внимание, что этот файл может быть недоступен для некоторых stage-архивов.

Для сравнения контрольных сумм реальных данных с контрольными суммами из файла .DIGESTS можно использовать криптографические инструменты и утилиты, такие как openssl, sha256sum или sha512sum.

Чтобы проверить контрольную сумму SHA512 с помощью openssl:

root #openssl dgst -r -sha512 stage3-mips-<release>-<init>.tar.xz

Флаг dgst указывает команде openssl, что используется подкоманда Message Digest (Хеш-сумма Сообщения), -r выводит хеш-суммы в формате coreutils, а -sha512 выбирает алгоритм SHA512.

Чтобы проверить контрольную сумму BLAKE2B512 с помощью openssl:

root #openssl dgst -r -blake2b512 stage3-mips-<release>-<init>.tar.xz

Сравните полученные результаты с парами из хэш-суммы и имён файлов из .DIGESTS. Если эти значения не совпадают с полученными, это означает, что загруженный файл поврежден и его следует отбраковать и загрузить заново.

Чтобы проверить хеш SHA256 с помощью утилиты sha256sum, используя связанный файл .sha265, запустите эту команду:

root #sha256sum --check stage3-mips-<release>-<init>.tar.xz.sha256

Опция --check указывает sha256sum, что из полученного файла необходимо считать список пар из ожидаемых файлов и их хэшей, а затем вычислять реальные значения и выводить для каждого файла либо "OK", если хеш-суммы совпали для этого файла, либо "FAILED", если нет.

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

Для официальных образов Gentoo предоставляется пакет sec-keys/openpgp-keys-gentoo-release, в котором содержатся PGP-ключи, которыми подписываются автоматические выпуски. Чтобы сверить ключи, их необходимо сначала импортировать в сессию пользователя:

root #gpg --import /usr/share/openpgp-keys/gentoo-release.asc

В неофициальных образах, которые содержат утилиты gpg и wget, связку ключей Gentoo можно загрузить вручную:

root #wget -O - https://qa-reports.gentoo.org/output/service-keys.gpg | gpg --import

Чтобы проверить подпись архива и (опционально) связанный файл с контрольными суммами:

root #gpg --verify stage3-mips-<release>-<init>.tar.xz.asc
root #gpg --verify stage3-mips-<release>-<init>.tar.xz.DIGEST
root #gpg --verify stage3-mips-<release>-<init>.tar.xz.sha256

Если верификация пройдёт успешно, в выводе предыдущих команд появится сообщение "Good signature from".

Отпечатки ключей OpenPGP, используемые для подписи релизов, можно найти на странице сигнатур.

Установка файла stage

Далее распакуйте загруженный stage-архив в систему, Для этого используйте утилиту tar в такой же форме:

root #tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

Перед распаковкой ознакомьтесь с ее параметрами:

  • x extract, instructs tar to extract the contents of the archive.
  • p preserve permissions.
  • v verbose output.
  • f file, provides tar with the name of the input archive.
  • --xattrs-include='*.*' Preserves extended attributes in all namespaces stored in the archive.
  • --numeric-owner Ensure that the user and group IDs of files being extracted from the tarball remain the same as Gentoo's release engineering team intended (even if adventurous users are not using official Gentoo live environments for the installation process).

Теперь, когда stage распакован, перейдём к настройке параметров компиляции.

Настройка параметров компиляции

Введение

Для оптимизации системы можно установить переменные, которые влияют на поведение Portage, официально поддерживаемого менеджера пакетов Gentoo. Все эти переменные могут быть установлены как переменные окружения (с помощью export), но установка через export не будет постоянной.

Заметка
Технически, переменные можно экспортировать через профиль shell или файлы rc, однако это не лучшая практика для базового администрирования системы.

При запуске Portage читает файл make.conf, который изменяет поведение во время выполнения в зависимости от значений, записанных в этом файле. make.conf можно считать основным конфигурационным файлом для Portage, поэтому будьте внимательнее с его содержимым.

Совет
Cписок всех возможных переменных с комментариями можно найти в /mnt/gentoo/usr/share/portage/config/make.conf.example. Дополнительная документация по файлу make.conf доступна через справочную страницу man 5 make.conf.

Для успешной установки Gentoo необходимо установить только те переменные, которые указаны ниже.

Запустите редактор (в этом руководстве мы используем nano) для изменения параметров оптимизации, о которых написано далее.

root #nano /mnt/gentoo/etc/portage/make.conf

В файле make.conf.example показано, как файл должен быть структурирован: строки комментариев начинаются с #, другие строки описывают переменные вида ПЕРЕМЕННАЯ="содержание". Некоторые из этих переменных мы обсудим в следующем разделе.

CFLAGS и CXXFLAGS

Переменные CFLAGS и CXXFLAGS определяют параметры оптимизации для компиляторов GCC C и C++ соответственно. Хотя они и указаны здесь, для достижения максимальной производительности можно было бы указать флаги оптимизации для каждой программы отдельно. Причина этого в том, что все программы различны. Но этим тяжело управлять, следовательно, запишем эти переменные в make.conf файл.

В make.conf следует указывать параметры оптимизации, которые сделают систему наиболее отзывчивой в целом. Не нужно использовать экспериментальные настройки; излишняя оптимизация может привести к непредсказуемому поведению программ (аварийному завершению, или ещё хуже, к неправильной работе).

Мы не будем описывать все возможные параметры оптимизации. За более подробной информацией обратитесь к Документации GNU или к инфо-странице gcc (info gcc). Сам файл make.conf.example тоже содержит множество примеров и информации, так что не забудьте прочитать его.

Первым параметром обычно является флаг -march= или -mtune=, который указывает имя целевой архитектуры. Возможные варианты описаны в файле make.conf.example (в комментариях). Обычно используется значение native, который сообщает компилятору, чтобы он использовал целевую архитектуру существующей системы (той, на которую будет установлена Gentoo).

Второй параметр оптимизации — это флаг (это заглавная буква О, а не ноль), который определяет класс оптимизации для gcc. Возможные классы: s (оптимизация по размеру), 0 (ноль — без оптимизации), 1, 2 или даже 3 для более лучшей оптимизация по скорости (в каждый класс входят все флаги предыдущего, и некоторые дополнительные). -O2 является рекомендованным значением по умолчанию. -O3 может вызывать проблемы при глобальном использовании на уровне системы, так что мы рекомендуем придерживаться -O2.

Ещё одним популярным флагом оптимизации является -pipe (использование конвейера вместо временных файлов для взаимодействия между различными стадиями компиляции). Это не имеет никакого влияния на сгенерированный код, при этом использует больше памяти. В системах с небольшим объемом памяти gcc может аварийно завершиться из-за нехватки памяти. В этом случае не используйте этот флаг.

Использование -fomit-frame-pointer (не хранить указатель фрейма в регистре для функций, которым он не нужен) может привести к серьезным последствиям во время отладки приложений.

Определение переменных CFLAGS и CXXFLAGS позволяет комбинировать несколько флагов оптимизации в одной строке. Значений по умолчанию, содержащихся в архиве stage3, обычно более чем достаточно. Ниже приведён пример конфигурации:

КОД Пример для переменных CFLAGS и CXXFLAGS
# Флаги компилятора, используемые для всех языков
COMMON_FLAGS="-mabi=32 -mips4 -pipe -O2"
# Используйте те же настройки для обеих переменных
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
Совет
Хотя руководство по оптимизации GCC имеет больше информации о том, как различные параметры компиляции могут повлиять на систему, статья Safe CFLAGS будет более полезной для начинающих пользователей, желающих оптимизировать свою систему.

MAKEOPTS

Переменная MAKEOPTS определяет, сколько параллельных процессов компиляции должно запускаться при установке пакета. На момент Portage версии 3.0.31[1], если переменная не определена, Portage выставит параметр jobs в MAKEOPTS на то же количество потоков, которое возвращает nproc.

Кроме того, начиная с Portage версии 3.0.53[2], если переменная не определена, Portage по такой же логике (используя вывод nproc) выставит параметр load-average в MAKEOPTS.

Лучше всего выбрать наименьшее из следующих значений: количество потоков у процессора или общий объем ОЗУ системы, разделённый на 2 ГиБ.

Предупреждение
Использование большого количества процессов может значительно повлиять на потребление памяти. Хорошая рекомендация — имейте не менее 2 Гб свободной оперативной памяти на каждый поток (так, например, для -j6 потребуется не менее 12 ГиБ). Чтобы избежать нехватки памяти, уменьшите количество процессов.
Совет
Когда вы используете параллельный emerge (--jobs), количество потоков может вырасти в разы (до количества make потоков, помноженное на количество emerge потоков). Это можно обойти, запустив distcc только для localhost, с конфигурацией, которая ограничит количество экземпляров компилятора на хосте.
ФАЙЛ /etc/portage/make.confПример объявления переменной MAKEOPTS
# Если переменная не определена, то по умолчанию Portage:
# - устанавливает значение параметра jobs в переменной MAKEOPTS равным количеству потоков, получая информацию от `nproc`
# - устанавливает значение параметра load-average в переменной MAKEOPTS равным количеству потоков, получая информацию от `nproc`
# Пожалуйста, замените число '4' на соответствующее характеристикам системы (руководствуясь формулой min(ОЗУ/2ГиБ, кол-во потоков)),
# или оставьте не-заданным.
MAKEOPTS="-j4 -l4"

Для получения более подробной информации прочтите о переменной MAKEOPTS в man 5 make.conf.

На старт, внимание, марш!

Обновите файл /mnt/gentoo/etc/portage/make.conf в соответствии с личными предпочтениями и сохраните изменения (в nano нужно нажать Ctrl+o, чтобы записать изменения, и затем Ctrl+x для выхода).

Примечания