Gentoo Linux sparc Handbook: Установка Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:SPARC/Full/Installation and the translation is 100% complete.



Введение

Добро пожаловать

Добро пожаловать в Gentoo! Gentoo — это свободная операционная система на базе Linux, которая может быть автоматически оптимизирована и настроена практически под любые приложения и нужды. Она опирается на экосистему свободного программного обеспечения и не скрывает от пользователей, что находится «под капотом».

Открытость

Основные инструменты в Gentoo написаны на простых языках программирования. Например, Portage, система управления пакетами в Gentoo, написана на языке Python, а ebuild-файлы, которые описывают пакеты для Portage, написаны на сценариях bash. Наши пользователи могут свободно просматривать, изменять и улучшать исходный код всех частей Gentoo.

По умолчанию пакеты модифицируются только тогда, когда это необходимо для исправления ошибок или обеспечения совместимости внутри Gentoo. Они устанавливаются в систему путём компиляции исходного кода, поставляемого авторами пакета (upstream project), в двоичный формат (хотя установка уже собранных пакетов также поддерживается). Конфигурация Gentoo выполняется через текстовые файлы.

По этим и другим причинам, открытость является основополагающим принципом.

Свобода выбора

Свобода выбора является другим основополагающим принципом Gentoo.

Свобода выбора при установке Gentoo прослеживается во всём Руководстве. Системные администраторы могут выбрать две полностью поддерживаемые системы инициализации (собственную OpenRC от Gentoo и systemd от Freedesktop.org), структуру разделов для диска (дисков) хранения, какие файловые системы будут использоваться на дисках, целевой системный профиль, удалить или добавить возможности на глобальном (всей системы) или по-пакетном уровне с помощью USE-флагов, загрузчик, утилиту управления сетью и многое, многое другое.

Следуя своей философии развития, авторы Gentoo стараются не навязывать пользователям определённый системный профиль или среду рабочего стола. Если что-то уже предлагается в экосистеме GNU/Linux, то это, скорее всего, доступно и в Gentoo. Если нет, то мы будем рады видеть это в Gentoo. Для запроса новых пакетов, пожалуйста, сообщите нам в систему отслеживания ошибок (bugtracker) или создайте свой собственный репозиторий ebuild-файлов.

Власть над системой

Будучи операционной системой на основе исходных текстов, Gentoo может быть относительно легко портирована на новые компьютерные архитектуры, а ещё позволяет настраивать все установленные пакеты. Это преимущество отражает еще один основополагающий принцип Gentoo: власть над системой.

Системный администратор, который установил и настроил Gentoo, по сути скомпилировал из исходного кода адаптированную операционную систему. Вся операционная система может быть настроена на двоичном уровне с помощью механизмов, которые регулируются в главном файле настроек для Portage make.conf. При желании, можно вносить небольшие изменения для конкретного пакета или группы пакетов. Более того, с помощью USE-флагов можно включать или отключать множество функций в этих пакетах.

Читателю Руководства важно понять, что именно эти основополагающие принципы делают Gentoo уникальной системой. Принципы контроля над системой, свободы выбора и чрезвычайной открытости требуют усилий, размышлений и стремления при использовании Gentoo.

Как организована установка?

Установку Gentoo можно рассматривать как процедуру из 10 шагов, которым соответствуют определённые главы. Каждый шаг ведёт к достижению определённого результата:

Шаг Результат
1 Пользователь находится в рабочей среде, готовой к установке Gentoo.
2 Подключение к Интернету готово для установки Gentoo.
3 Жёсткие диски готовы к установке Gentoo.
4 Подготовлена установочная среда, и пользователь готов переключиться (chroot) в новую среду.
5 Развернуты основные пакеты, общие для всех систем Gentoo.
6 Установлено ядро Linux.
7 Создана основная часть конфигурационных файлов системы.
8 Установлены необходимые системные средства.
9 Установлен и настроен выбранный начальный загрузчик.
10 Только что установленное окружение Gentoo готово к изучению.

Каждый раз, когда будет предоставлен выбор, в Руководстве будут приведены все плюсы и минусы каждого варианта. Хотя текст будет продолжаться с использованием выбора по умолчанию (он помечен как «По умолчанию: » в заголовке), другие возможности также документированы (они помечены как «Альтернатива: » в заголовке). Не думайте, что выбор по умолчанию является рекомендацией Gentoo. Это всего лишь тот вариант, который, по мнению Gentoo, будет использовать наибольшее число пользователей.

Иногда есть возможность выполнить необязательный шаг. Такие шаги помечены как «Необязательно: » и не требуются для установки Gentoo. Однако, некоторые из них будут зависеть от ранее принятого решения. Мы будем сообщать об этом, как в момент выбора, так и непосредственно перед описанием необязательных шагов.

Варианты установки Gentoo

Gentoo можно установить разными способами. Вы можно загрузить и установить Gentoo с помощью официальных установочных носителей, таких как наши загрузочные ISO-образы. Установочный носитель можно записать на USB-носитель или предоставить к нему доступ из загруженного с сети окружения. Gentoo также можно установить с неофициального носителя, например, из уже установленного дистрибутива или не-Gentoo загрузочного диска (например, Knoppix).

В этом руководстве описывается установка с официального установочного носителя Gentoo, или, в некоторых случаях, с помощью сетевой загрузки.

Заметка
Для помощи по другим вариантам установки, включая использование не-Gentoo загрузочных носителей, прочитайте статью Альтернативные методы установки.

Также существует статья Полезные советы по установке Gentoo, которая в некоторых случаях может быть полезна.

Проблемы

Если при установке вы столкнулись с проблемой (или с ошибкой в документации по установке), посетите нашу систему отслеживания ошибок и проверьте, известно ли об этой ошибке. Если это не так, то создайте отчет об ошибке, чтобы мы о ней позаботились. Не бойтесь разработчиков, которым выпадает работа над вашими ошибками — людей они (обычно) не едят.

Хотя этот документ посвящён определенной архитектуре, в нём могут упоминаться и другие архитектуры, так как значительная часть Руководства Gentoo использует общий текст для всех архитектур (чтобы не дублировать работу). Во избежание путаницы, такие упоминания сокращены до минимума.

Если есть сомнения в том, является ли ошибка пользовательской (сделана какая-то погрешность, хотя внимательно прочитали документацию) или программной (какую-то ошибку совершили мы, несмотря на тщательное тестирование установки/документации), то не стесняйтесь, заходите на канал #gentoo (webchat) сервера irc.libera.chat. Разумеется, мы будем рады пообщаться и по любым другим вопросам, так как наш канал освещает всё, что связано с Gentoo.

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





Аппаратные требования

Прежде чем приступить к процессу установки, необходимо свериться с минимальными аппаратными требованиями, необходимыми для успешной установки Gentoo на компьютере с системной архитектурой sparc.


Система Sparc Проверьте Gentoo Linux/SPARC64 список совместимостей, или UltraLinux FAQ
Центральный процессор В настоящий момент поддерживаются только процессоры SPARC64
Память 64 Мб
Дисковое пространство 1.5 Гб (исключая пространство подкачки)
Пространство подкачки Не менее 256 Мб

Метод установки

Ниже мы описываем, как установить Gentoo Linux на системе Sparc, используя минимальный установочный компакт-диск. Gentoo также поддерживает установку с образа TFTP. Для более подробной информации о настройке сервера netboot просмотрите статью Sparc/Netboot. Образы TFTPBoot можно найти на зеркалах Gentoo в каталоге experimental/sparc/tftpboot/sparc64/.


Установочный носитель Gentoo Linux

Совет
Хотя при установке рекомендуется использовать официальный загрузочный носитель Gentoo, можно использовать и другие среды установки. Однако нет никакой гарантии, что они будут содержать необходимые компоненты. При использовании других установочных носителей можно сразу перейти в раздел Подготовка дисков.

Минимальный установочный компакт-диск Gentoo

Минимальный установочный компакт-диск Gentoo — это небольшой загрузочный образ, который содержит автономную среду Gentoo. Этот образ сопровождается разработчиками Gentoo и предназначен для того, чтобы любой пользователь с активным Интернет-подключением мог установить Gentoo. При запуске обнаруживается оборудование и автоматически загружаются соответствующие драйверы.

Названия выпусков минимального установочного диска следуют данному формату:

install-<архитектура>-minimal-<временная метка выпуска>.iso.

The Gentoo LiveGUI

Некоторые пользователи, возможно, предпочтут установить Gentoo через LiveGUI, в котором можно использовать среду рабочего стола KDE. LiveGUI также содержит больше модулей ядра и прошивок, что может помочь при использовании современных Wi-Fi чипсетов.

Заметка
USB-образ для Gentoo LiveGUI собирается еженедельно для архитектур amd64 и arm64.

Что такое stage-файлы?

Stage-файл — это архив с начальными для среды Gentoo файлами.

Stage3-файлы можно загрузить в каталоге releases/sparc/autobuilds/ на любом из официальных зеркал Gentoo. Stage-файлы часто обновляются, и поэтому их не включают в официальные установочные образы.
Совет
Пока что концепцию stage-файлов можно игнорировать. Они будут описаны более подробно позднее, когда в них возникнет необходимость.
Заметка
Когда-то в Руководстве Gentoo описывались шаги для установки с использованием stage-файлов версии ниже, чем 3 (т.е. stage1 и stage2, этапы 1 и 2). Эти файлы содержали среды, непригодные для обычной установки, и поэтому больше не описываются в Руководстве.

Скачивание

Получение образа

Основной установочный образ, используемый Gentoo Linux — это минимальный установочный CD, на котором находится очень маленькая загружаемая среда Gentoo Linux. Эта среда содержит все необходимые утилиты для установки Gentoo Linux. Сами образы можно скачать со страницы загрузки (рекомендуется) или самостоятельно найдя образ ISO, доступном на одном из множества зеркал.

Навигация по зеркалам Gentoo

При загрузке с зеркала минимальные установочные компакт-диски можно найти следующим образом:

  1. Подключитесь к зеркалу, обычно используется местное зеркало из списка source-зеркал Gentoo.
  2. Перейдите в каталог releases/.
  3. Выберите подходящую архитектуру (как архитектуру sparc/).
  4. Выберите каталог autobuilds/.
  5. Для архитектур amd64 и x86 выберите либо каталог current-install-amd64-minimal/, либо каталог current-install-x86-minimal/ (соответственно). Для всех других архитектур выберите каталог current-iso/.
Заметка
У некоторых архитектур, таких как arm, mips и s390, нет минимального установочного компакт-диска. На данный момент проект Gentoo Release Engineering не поддерживает сборку .iso файлой для данных архитектур.

В этом каталоге находится файл установочного образа, который оканчивается на .iso. Например, посмотрите на следующий список:

КОД Примерный список скачиваемых файлов в каталоге releases/amd64/autobuilds/current-install-amd64-minimal/
[TXT]	install-amd64-minimal-20231112T170154Z.iso.asc	        2023-11-12 20:41        488
[TXT]	install-amd64-minimal-20231119T164701Z.iso.asc	        2023-11-19 18:41        488
[TXT]	install-amd64-minimal-20231126T163200Z.iso.asc	        2023-11-26 18:41        488
[TXT]	install-amd64-minimal-20231203T170204Z.iso.asc	        2023-12-03 18:41        488
[TXT]	install-amd64-minimal-20231210T170356Z.iso.asc	        2023-12-10 19:01        488
[TXT]	install-amd64-minimal-20231217T170203Z.iso.asc	        2023-12-17 20:01        488
[TXT]	install-amd64-minimal-20231224T164659Z.iso.asc	        2023-12-24 20:41        488
[TXT]	install-amd64-minimal-20231231T163203Z.iso.asc	        2023-12-31 19:01        488
[ ]     install-amd64-minimal-20240107T170309Z.iso              2024-01-07 20:42        466M
[ ]     install-amd64-minimal-20240107T170309Z.iso.CONTENTS.gz	2024-01-07 20:42        9.8K
[ ]     install-amd64-minimal-20240107T170309Z.iso.DIGESTS      2024-01-07 21:01        1.3K
[TXT]   install-amd64-minimal-20240107T170309Z.iso.asc	        2024-01-07 21:01        488
[ ]     install-amd64-minimal-20240107T170309Z.iso.sha256       2024-01-07 21:01        660
[TXT]	latest-install-amd64-minimal.txt                        2024-01-08 02:01        653

В приведённом примере файл install-amd64-minimal-20240107T170309Z.iso и есть минимальный установочный компакт-диск. Но как можно увидеть, существуют и другие связанные с ним файлы:

  • Текстовый файл (сжатый при помощи gz) .CONTENTS.gz, содержащий список всех файлов на установочном образе. Данный файл может использоваться для проверки того, существует ли конкретная прошивка или конкретный драйвер на установочном образе без его загрузки.
  • Файл .DIGESTS, содержащий контрольные суммы файла ISO, с использованием различных форматов/алгоритмов хэширования. Данный файл можно использовать для проверки целостности файла ISO.
  • Файл .asc, содержащий криптографическую цифровую подпись файла ISO. Его можно использоваться для проверки целостности и подлинности образа; другими словами, для того, чтобы убедиться, что данная закачка действительно предоставлена командой Gentoo Release Engineering и не была подделана.

Пока не обращайте внимания на остальные файлы, находящиеся в данном каталоге — про них мы поговорим по мере установки системы. Скачайте файл .iso, и, если нужна проверка скачанных файлов, также соответствующий ему файл .iso.asc.

Совет
Для проверки файл .DIGESTS необязателен. Он нужен только в том случае, если цифровая подпись в файле .iso.asc не подтверждена.

Проверка скачанных файлов

Заметка
Это необязательный шаг и не требуется для установки Gentoo Linux. Однако его рекомендуется выполнить, чтобы удостовериться, что скачанный файл не поврежден и действительно был предоставлен командой Gentoo Infrastructure.

Файл .asc содержит криптографическую подпись для файла ISO. Проверив его, можно убедиться, что что установочный файл предоставлен командой Gentoo Release Engineering и он не повреждён или изменён.

Проверка на Microsoft Windows

Чтобы проверить криптографическую подпись, можно использовать такие программы, как GPG4Win. После установки необходимо импортировать открытые ключи команды Gentoo Release Engineering. Список ключей находится на странице сигнатур. После импорта пользователь может проверить подпись, указанную в файле .asc.

Проверка на Linux

На системе с Linux самым распространённым способом проверки криптографической подписи является использование программы app-crypt/gnupg. После установки данного пакета, можно использовать следующую команду для проверки криптографической подписи, указанной в файле .asc.

Совет
При импортировании ключей Gentoo убедитесь, что отпечатки (BB572E0E2D182910) совпадают.

Ключи Gentoo могут быть скачаны с hkps://keys.gentoo.org, используя отпечатки, доступные на странице сигнатур:

user $gpg --keyserver hkps://keys.gentoo.org --recv-keys 13EBBDBEDE7A12775DFDB1BABB572E0E2D182910
gpg: создан каталог '/root/.gnupg'
gpg: создан щит с ключами '/root/.gnupg/pubring.kbx'
gpg: /root/.gnupg/trustdb.gpg: создана таблица доверия
gpg: ключ BB572E0E2D182910: импортирован открытый ключ "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>"
gpg: Всего обработано: 1
gpg:                  импортировано: 1

Либо вы можете использовать WKD для скачивания ключа:

user $gpg --auto-key-locate=clear,nodefault,wkd --locate-key releng@gentoo.org
gpg: ключ 9E6438C817072058: импортирован открытый ключ "Gentoo Linux Release Engineering (Gentoo Linux Release Signing Key) <releng@gentoo.org>"
gpg: ключ BB572E0E2D182910: импортирован открытый ключ "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>"
gpg: Всего обработано: 2
gpg:                  импортировано: 2
gpg: абсолютно доверенных ключей не найдено
pub   dsa1024 2004-07-20 [SC] [   годен до: 2025-07-01]
      D99EAC7379A850BCE47DA5F29E6438C817072058
uid         [ неизвестно ] Gentoo Linux Release Engineering (Gentoo Linux Release Signing Key) <releng@gentoo.org>
sub   elg2048 2004-07-20 [E] [   годен до: 2025-07-01]

Если вы используете официальный установочный носитель Gentoo, вы можете импортировать ключ /usr/share/openpgp-keys/gentoo-release.asc (предоставляется пакетом sec-keys/openpgp-keys-gentoo-release):

user $gpg --import /usr/share/openpgp-keys/gentoo-release.asc
gpg: создан каталог '/home/larry/.gnupg'
gpg: создан щит с ключами '/home/larry/.gnupg/pubring.kbx'
gpg: ключ DB6B8C1F96D8BF6D: 2 подписи не проверены за отсутствием ключа
gpg: /home/servers/.gnupg/trustdb.gpg: создана таблица доверия
gpg: ключ DB6B8C1F96D8BF6D: импортирован открытый ключ "Gentoo ebuild repository signing key (Automated Signing Key) <infrastructure@gentoo.org>"
gpg: ключ 9E6438C817072058: 3 подписи не проверены за отсутствием ключа
gpg: ключ 9E6438C817072058: импортирован открытый ключ "Gentoo Linux Release Engineering (Gentoo Linux Release Signing Key) <releng@gentoo.org>"
gpg: ключ BB572E0E2D182910: 1 подпись не проверена за отсутствием ключа
gpg: ключ BB572E0E2D182910: импортирован открытый ключ "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>"
gpg: ключ A13D0EF1914E7A72: 1 подпись не проверена за отсутствием ключа
gpg: ключ A13D0EF1914E7A72: импортирован открытый ключ "Gentoo repository mirrors (automated git signing key) <repomirrorci@gentoo.org>"
gpg: Всего обработано: 4
gpg:                  импортировано: 4
gpg: абсолютно доверенных ключей не найдено

Далее проверьте криптографическую подпись:

user $gpg --verify install-sparc-minimal-20240107T170309Z.iso.asc
gpg: assuming signed data in 'install-sparc-minimal-20240107T170309Z.iso'
gpg: Signature made Sun 07 Jan 2024 03:01:10 PM CST
gpg:                using RSA key 534E4209AB49EEE1C19D96162C44695DB9F6043D
gpg: Good signature from "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 13EB BDBE DE7A 1277 5DFD  B1BA BB57 2E0E 2D18 2910
     Subkey fingerprint: 534E 4209 AB49 EEE1 C19D  9616 2C44 695D B9F6 043D

Чтобы быть абсолютно уверенным в том, что всё верно, сверьте указанные отпечатки с отпечатками на странице сигнатур Gentoo.

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

Запись загрузочного носителя

Конечно, запустить установку Gentoo Linux, имея только загруженный ISO-файл просто так не получится. Файл ISO необходимо записать на загрузочный носитель. Обычно для этого содержимое образа извлекают в файловую систему или записывают непосредственно на устройство.

Запись загрузочного USB

Большинство современных систем поддерживают загрузку с USB-устройств.

Запись в Linux

dd (как правило) имеется в большинстве дистрибутивов Linux и может быть использован для записи загрузочного носителя Gentoo на USB-накопитель.

Определение пути к USB-устройству

Перед записью необходимо определить путь к нужному накопителю.

dmesg отобразит подробную информацию об устройстве хранения данных в момент его подключения к системе:

root #dmesg
[268385.319745] sd 19:0:0:0: [sdd] 60628992 512-byte logical blocks: (31.0 GB/28.9 GiB)

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

root #lsblk
sdd           8:48   1  28.9G  0 disk
├─sdd1        8:49   1   246K  0 part
├─sdd2        8:50   1   2.8M  0 part
├─sdd3        8:51   1 463.5M  0 part
└─sdd4        8:52   1   300K  0 part

После того как имя устройства было определено, его нужно добавить к префиксу пути /dev/, чтобы получить путь к устройству /dev/sdd.

Совет
Рекомендуется использовать путь к самому устройство, т.е. sdd, а не к одному из его разделов по типу sdd1, потому что загрузочный носитель Gentoo содержит полную GPT разметку.
Запись с помощью dd
Предупреждение
Обязательно проверьте путь к цели (of=target) перед выполнением dd, так как она будет перезаписана.

После получения пути к устройству (/dev/sdd) и загрузочного носителя install-amd64-minimal-<временная метка выпуска>.iso выполните:

root #dd if=install-amd64-minimal-<временная метка выпуска>.iso of=/dev/sdd bs=4096 status=progress && sync
Заметка
if= обозначает входящий файл (input file), of= обозначает выходной файл (output file), в нашем случае устройство.
Совет
Параметр bs=4096 используется для того, чтобы ускорить передачу в большинстве случаев, а status=progress показывает статистику и прогресс передачи.

Запись диска

См. также
Более подробные инструкции можно найти в CD/DVD/BD_writing#Image_writing.

Прожиг в Microsoft Windows 7 и выше

Microsoft Windows версии 7 и выше могут как монтировать, так и записывать ISO-образы на оптические носители без использования стороннего программного обеспечения. Просто вставьте записываемый диск, перейдите к загруженным файлам ISO, щелкните правой кнопкой мыши файл по файлу и выберите "Записать образ диска".

Прожиг в Linux

В Linux ISO-образы можно записать командой cdrecord из пакета app-cdr/cdrtools.

Чтобы прожечь файл ISO на CD в устройстве /dev/sr0 (это первое устройство для CD в системе — замените его на правильное, если необходимо):

user $cdrecord dev=/dev/sr0 install-sparc-minimal-20141204.iso

Пользователи, которые предпочитают графический интерфейс, могут использовать K3B из пакета kde-apps/k3b. В K3B перейдите в раздел Tools и выберите Burn CD Image.

Загрузка

Загрузка с установочного компакт-диска

Вставьте установочный компакт-диск Gentoo в CD-ROM, и загрузите вашу систему. При старте нажмите Stop+A, чтобы войти в OpenBootPROM (OBP). Как только попали в OBP, загрузитесь с CD-ROM:

okboot cdrom

Запустится менеджер загрузки SILO (на установочном компакт-диске). Нажмите Enter для получения помощи. Введите gentoo, и нажмите Enter для продолжения процесса загрузки системы:

boot:gentoo

Как только установочный компакт-диск будет загружен, будет отображена приглашение root ("#") на текущей консоли. Также будет присутствовать приглашение root на последовательной консоли (ttyS0).


Дополнительная настройка оборудования

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

В следующем примере загружается модуль 8139too (который поддерживает определенные виды сетевых интерфейсов):

root #modprobe 8139too

Опционально: Учётные записи пользователей

Если другим людям необходим доступ к среде установки, или есть необходимость запускать команды без прав суперпользователя root на установочном образе (например, общаться с помощью irssi без прав суперпользователя по соображениям безопасности), то необходимо создать дополнительную учётную запись пользователя, а пользователю root задать сложный пароль.

Для изменения пароля root используйте утилиту passwd:

root #passwd
New password: (Enter the new password)
Re-enter password: (Re-enter the password)

Для создания учётной записи пользователя сначала введите учетные данные, следом задайте пароль аккаунту. Для этой задачи используйте команды useradd и passwd.

В следующем примере создаем пользователя с именем john:

root #useradd -m -G users john
root #passwd john
New password: (Enter john's password)
Re-enter password: (Re-enter john's password)

Для переключения с (текущего) пользователя root на вновь созданный аккаунт пользователя используйте команду su:

root #su - john

Опционально: Просмотр документации во время установки

TTY

Для просмотра Руководства Gentoo в TTY во время установки, необходимо сначала создать учётную запись пользователя, как описано выше, затем нажать Alt+F2 для перехода в новое окно терминала (TTY) и войти в только что созданного пользователя. Согласно принципу наименьшего допуска, рекомендуется избегать выполнения задач (к примеру, просмотр веб-страниц) в учётной запись с привилегиями выше необходимого. Учётная запись root обладает полным контролем над системой, и использовать её следует осторожно.

Во время установки можно использовать веб-браузер links для просмотра Руководства Gentoo — конечно, только с того момента, как заработает подключение к Интернету.

user $links https://wiki.gentoo.org/wiki/Handbook:SPARC/ru

Чтобы вернуться к первоначальному терминалу, нажмите Alt+F1.

Совет
После загрузки в минимальное окружение/образ Gentoo (или версию для администраторов) будут доступны семь окон терминала (TTY). Их можно переключать, удерживая кнопку Alt, а затем нажимая одну из функциональных клавиш от F1 до F7 (по номеру терминала). Это может быть полезно для переключения в другой терминал во время ожидания завершения работы, для открытия документации и т.д.

GNU Screen

Утилита Screen по умолчанию установлена на официальном установочном носителе Gentoo. Для опытных пользователей Linux просмотр инструкций по установке будет более удобен в разных панелях screen, а в разных консолях TTY, как это было описано выше.

Опционально: Запуск демона SSH

Чтобы разрешить другим пользователям доступ к системе во время установки (возможно, для поддержки во время установки, или даже выполнить её удаленно), необходимо предварительно создать учётную запись пользователя (как описывалось ранее) и запустить службу SSH.

Чтобы запустить демон SSH, при использовании системы инициализации OpenRC, выполните следующую команду:

root #rc-service sshd start
Заметка
При входе пользователь увидит сообщение о необходимости подтвердить ключ узла этой системы (называемый отпечатком). Такое поведение вполне обычно и происходит при первом подключении к SSH-серверу. Однако позднее, когда когда система будет уже установлена, пользователь, ранее входивший в систему, при повторной попытке получит предупреждение о том, что ключ узла изменился. Это происходит потому, что с точки зрения SSH пользователь теперь входит в другой сервер (а именно в новую систему, а не в живое окружение, использованное при установке). Чтобы заменить ключ узла на клиентской системе, следуйте следующим инструкциям.

Для возможности использования sshd необходимо, чтобы сеть работала должным образом. Для этого перейдите к главе Настройка сети.





Автоматическая конфигурация сети

Может быть, всё уже работает?

Если система подключена к сети Ethernet, в которой есть IPv6-маршрутизатор или DHCP-сервер, весьма вероятно, что системная конфигурация сети была выполнена автоматически. Если расширенная настройка не требуется, можно сразу перейти к проверке подключения к Интернету.

Использование DHCP

DHCP (Dynamic Host Configuration Protocol) облегчает настройку сети и позволяет автоматически настраивать различные параметры, включая: IP-адрес, маску сети, маршруты, DNS-сервера, NTP-сервера и так далее.

DHCP требует, чтобы сервер работал в том же Layer 2 (Ethernet) сегменте, что и клиент, запрашивающий аренду. DHCP часто используется в RFC1918 (частных) сетях, а также в сетях провайдеров, чтобы запросить публичный IP-адрес.

Совет
Официальный загрузочный носитель Gentoo запускает dhcpcd автоматически, при запуске системы. Этот автозапуск можно пропустить, добавив nodhcp в параметры загрузки.

Если он ещё не запущен, dhcpcd можно запустить для устройства enp1s0 с помощью команды:

root #dhcpcd enp1s0

Некоторые сетевые администраторы требуют, чтобы имя узла и домена, назначенное сервером DHCP, использовались самой системой. В этом случае используйте:

root #dhcpcd -HD enp1s0

Чтобы остановить dhcpcd, можно использовать опцию '-x:

root #dhcpcd -x
sending signal Term to pid 10831
waiting for pid 10831 to exit

Проверка сети

Правильная настройка маршрута default (по умолчанию) критически важна для подключения к Интернету. Конфигурацию маршрута можно проверить с помощью:

root #ip route
default via 192.168.0.1 dev enp1s0

Если default маршрута не существует, Интернет-подключение не будет работать и понадобится дополнительная конфигурация.

Простой тест соединения с Интернетом можно провести утилитой ping:

root #ping -c 3 1.1.1.1
Совет
Лучше всего начать с проверки известного IP-адреса, а не доменного имени. Это поможет отделить проблемы с DNS от проблем с базовым подключением к Интернету.

Исходящий доступ по HTTPS и разрешение доменных имён в DNS можно проверить с помощью:

root #curl --location gentoo.org --output /dev/null

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

Если curl сообщил об ошибке, но ping других серверов в Интернете работает, возможно, стоит настроить DNS.

Если Интернет-подключения и вовсе не было установлено, сначала необходимо получить информацию о сетевых интерфейсах, затем:

Получение информации о сетевых интерфейсах

Если сеть не работает «из коробки», необходимо выполнить дополнительные шаги, чтобы обеспечить подключение к Интернету. Как правило, первым шагом перечисляются сетевые интерфейсы хоста.

Для чтения и изменения системных настроек сети можно использовать команду ip из пакета sys-apps/iproute2.

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

root #ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether e8:40:f2:ac:25:7a brd ff:ff:ff:ff:ff:ff

Чтобы получить информацию об адресе устройства, используйте подкоманду address:

root #ip address
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000<pre>
    link/ether e8:40:f2:ac:25:7a brd ff:ff:ff:ff:ff:ff
    inet 10.0.20.77/22 brd 10.0.23.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::ea40:f2ff:feac:257a/64 scope link 
       valid_lft forever preferred_lft forever

Эта команда выводит информацию для каждого сетевого интерфейса в системе. Первым идёт порядковый номер устройства, затем его название enp1s0.

Совет
Если в выводе ifconfig нет никаких интерфейсов, кроме lo (loopack), это означает, что сетевое оборудование неисправно либо драйвер для сетевого интерфейса не был загружен в ядро. Обе ситуации не рассматриваются в данном Руководстве. В этом случае, пожалуйста, попросите о помощи в сообществе #gentoo (webchat).

Для единообразия и упрощения, в Руководстве главный сетевой интерфейс называется enp1s0 в качестве примера.

Заметка
В результате перехода на предсказуемые имена для сетевых интерфейсов название интерфейса может отличаться от старого соглашения о именовании (eth0). Современные загрузочные носители Gentoo используют префиксы при именовании сетевых интерфейсов, например: eno0, ens1 или enp5s0.

Опционально: Конфигурация для конкретного приложения

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

Настройка веб-прокси

Если доступ в Интернет осуществляется через веб-прокси, то необходимо задать информацию о прокси, чтобы Portage мог правильно обращаться через него для каждого поддерживаемого протокола. Portage учитывает переменные окружения http_proxy, ftp_proxy и RSYNC_PROXY во время получения пакетов через механизмы скачки wget и rsync.

Некоторые текстовые веб-браузеры, такие как links, тоже могут использовать переменные окружения, определяющие настройки веб-прокси. В частности, для доступа по протоколу HTTPS для них потребуется определить переменную окружения https_proxy. В Portage переменные окружения подхватываются автоматически, без дополнительных аргументов к команде, но для links потребуется добавить некоторые флаги.

В большинстве случаев достаточно задать переменные окружения, используя имя хоста сервера. В следующем примере предполагается, что прокси-сервер находится на хосту proxy.gentoo.org и доступен на порту 8080.

Заметка
Символы # в следующих командах обозначают комментарии. Они используются только для ясности, и их необязательно писать во время запуска команд.

Чтобы задать HTTP-прокси (для HTTP- и HTTPS-трафика):

root #export http_proxy="http://proxy.gentoo.org:8080" # Для Portage и Links
root #export https_proxy="http://proxy.gentoo.org:8080" # Только для Links

Если для HTTP-прокси требуется аутентификация, установить имя пользователя и пароль с помощью следующей команды:

root #export http_proxy="http://username:password@proxy.gentoo.org:8080" # Для Portage и Links
root #export https_proxy="http://username:password@proxy.gentoo.org:8080" # Только для Links

Запустите links с следующими флагами, чтобы включить поддержку прокси:

user $links -http-proxy ${http_proxy} -https-proxy ${https_proxy}

Чтобы задать FTP-прокси для Portage и/или links:

root #export ftp_proxy="ftp://proxy.gentoo.org:8080" # Для Portage и Links

Запустите links с флагами для поддержки FTP-прокси:

user $links -ftp-proxy ${ftp_proxy}

Чтобы задать RSYNC-прокси для Portage:

root #export RSYNC_PROXY="proxy.gentoo.org:8080" # Только для Portage; браузер Links не поддерживает rsync-прокси

Использование pppoe-setup для ADSL

Если для доступа в Интернет требуется использовать PPPoE, то в состав загрузочного носителя Gentoo входит скрипт pppoe-setup, упрощающий настройку ppp.

Во время настройки, pppoe-setup попросит предоставить:

  • Название Ethernet интерфейса, подключенного к ADSL-модему.
  • Имя пользователя и пароль PPPoE.
  • IP-адреса DNS-сервера.
  • Нужно ли использовать брандмауэр/файрвол/межсетевой экран.
root #pppoe-setup
root #pppoe-start

В случае ошибки следует проверить учётные данные в /etc/ppp/pap-secrets или /etc/ppp/chap-secrets. Если они верны, следует проверить, правильно ли выбран Ethernet интерфейс для PPPoE.

Использование PPTP

Если нужна поддержка PPTP, можно использовать утилиту pptpclient, но для неё требуется конфигурирование перед запуском.

Отредактируйте /etc/ppp/pap-secrets or /etc/ppp/chap-secrets так, чтобы файл содержал правильный логин и пароль:

root #nano /etc/ppp/chap-secrets

При необходимости подправьте /etc/ppp/options.pptp:

root #nano /etc/ppp/options.pptp

После завершения настройки, запустите pptp (вместе с опциями, которые не удалось установить в options.pptp) для подключения к серверу:

root #pptp <server ipv4 address>

Конфигурация WEP

Предупреждение
По возможности избегайте WEP: этот стандарт в плане безопасности почти ничем не лучше открытой сети.
Важно
Команда iw доступна только на следующих архитектурах: amd64, x86, arm, arm64, ppc, ppc64 и riscv.

Беспроводные карты (стандарта 802.11) перед использованием необходимо предварительно настроить. Для отображения текущих настроек можно воспользоваться командой iw, вывод которой может быть таким:

root #iw dev wlp9s0 info
Interface wlp9s0
	ifindex 3
	wdev 0x1
	addr 00:00:00:00:00:00
	type managed
	wiphy 0
	channel 11 (2462 MHz), width: 20 MHz (no HT), center1: 2462 MHz
	txpower 30.00 dBm

Чтобы проверить текущее подключение:

root #iw dev wlp9s0 link
Not connected.

или

root #iw dev wlp9s0 link
Connected to 00:00:00:00:00:00 (on wlp9s0)
	SSID: GentooNode
	freq: 2462
	RX: 3279 bytes (25 packets)
	TX: 1049 bytes (7 packets)
	signal: -23 dBm
	tx bitrate: 1.0 MBit/s
Заметка
Некоторые беспроводные карты могут иметь имена wlan0 или ra0 вместо wlp9s0. Запустите ip link, чтобы определить правильное имя устройства.

В большинстве случаев, для подключения необходимо только два параметра: ESSID (название беспроводной сети) и ключ WEP (необязательно).

  • Сперва удостоверьтесь, что интерфейс включён:
root #ip link set dev wlp9s0 up
  • Чтобы подключиться к открытой сети с именем GentooNode:
root #iw dev wlp9s0 connect -w GentooNode
  • Чтобы подключиться с шестнадцатеричным ключом WEP, добавьте к нему префикс d::
root #iw dev wlp9s0 connect -w GentooNode key 0:d:1234123412341234abcd
  • Чтобы подключиться с ключом ASCII WEP:
root #iw dev wlp9s0 connect -w GentooNode key 0:some-password
Заметка
Если в беспроводной сети применяются протоколы WPA или WPA2, то необходимо использовать wpa_supplicant. Больше информации по настройке беспроводной сети в Gentoo Linux можно прочитать в разделе Беспроводная сеть Руководства Gentoo.

Для подтверждения беспроводных настроек используйте iw dev wlp9s0 link. Как только беспроводная сеть заработает, продолжите настройку сетевых параметров, как описано в следующем разделе (Сетевая терминология) или с помощью инструмента net-setup, как описано ранее.

Использование net-setup

В случае, если автоматическая настройка сети не удалась, загрузочный носитель Gentoo предоставляет скрипты для помощи в настройке сети. Скрипт net-setup можно использовать для настройки информации о беспроводной сети и статических IP-адресов.

root #net-setup enp1s0

net-setup задаст несколько вопросов о сетевом окружении и с помощью этой информации сконфигурирует wpa_supplicant или статическую адресацию.

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

Интернет и основы IP-адресации

Если все способы выше провалились, необходимо настроить сеть вручную. Это относительно несложно, но нужно делать всё осторожно. Этот раздел призван разъяснить терминологию и ознакомить пользователя с базовыми сетевыми концепциями, они встретятся во время ручной настройке подключения к Интернету.

Совет
Ряд абонентского оборудования (CPE, Carrier Provided Equipment или Customer Premises Equipment) совмещает функции «маршрутизатора», «точки доступа», «модема», «DHCP-сервера» и «DNS-сервера» в одном устройстве. Важно понимать, что функции устройства не зависят от его внешнего вида.

Интерфейсы и адреса

Сетевые интерфейсы — это логические представления сетевых устройств. Интерфейсу нужен адрес для связи с другими устройствами в сети. Интерфейс обязан иметь хотя бы один адрес, однако он может иметь и несколько адресов одновременно. Это особенно полезно для параллельного использования IPv4 и IPv6.

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

Важно
IP-адреса могут быть заданы произвольно. Из-за этого, разные устройства могут получить одинаковый IP-адрес, что приведёт к конфликту адресов (англ. address conflict). Конфликты адресов следует избегать. используя (к примеру) DHCP или SLAAC.
Совет
IPv6 обычно использует автоматический механизм StateLess Address AutoConfiguration (SLAAC) для настройки адреса. В большинстве случаев не рекомендуется выставлять IPv6-адрес вручную. Если нужно задать конкретный суффикс адреса, можно использовать идентификационные токены интерфейса.

Сети и CIDR

Откуда устройство знает, как общаться с другими устройствами после получения адреса?

IP-адреса связаны с понятием сети. IP-сеть — это последовательный логический диапазон адресов.

Classless Inter-Domain Routing or CIDR notation is used to distinguish network sizes.

  • The CIDR value, often notated starting with a /, represents the size of the network.
    • The formula 2 ^ (32 - CIDR) can be used to calculate network size.
    • Once network size is calculated, usable node count must be reduced by 2.
      • The first IP in a network is the Network address, and the last is typically the Broadcast address. These addresses are special and cannot be used by normal hosts.
Совет
The most common CIDR values are /24, and /32, representing 254 nodes and a single node respectively.

A CIDR of /24 is the de-facto default network size. This corresponds to a subnet mask of 255.255.255.0, where the last 8 bits are reserved for IP addresses for nodes on a network.

The notation: 192.168.0.2/24 can be interpreted as:

  • The address 192.168.0.2
  • On the network 192.168.0.0
  • With a size of 254 (2 ^ (32 - 24) - 2)
    • Usable IPs are in the range 192.168.0.1 - 192.168.0.254
  • With a broadcast address of 192.168.0.255
    • In most cases, the last address on a network is used as the broadcast address, but this can be changed.

Using this configuration, a device should be able to communicate with any host on the same network (192.168.0.0).

Интернет

Once a device is on a network, how does it know how to talk to devices on the Internet?

To communicate with devices outside of local networks, routing must be used. A router is simply a network device that forwards traffic for other devices. The term default route or gateway typically refers to whatever device on the current network is used for external network access.

Совет
It's a standard practice to make the gateway the first or last IP on a network.

If an Internet-connected router is available at 192.168.0.1, it can be used as the default route, granting Internet access.

To summarize:

  • Interfaces must be configured with an address and network information, such as the CIDR value.
  • Local network access is used to access a router on the same network.
  • The default route is configured, so traffic destined for external networks is forwarded to the gateway, providing Internet access.

Система доменных имен (DNS)

Remembering IPs is hard. The Domain Name System was created to allow mapping between Domain Names and IP addresses.

Linux systems use /etc/resolv.conf to define nameservers to be used for DNS resolution.

Совет
Many routers can also function as a DNS server, and using a local DNS server can augment privacy and speed up queries through caching.

Many ISPs run a DNS server that is generally advertised to the gateway over DHCP. Using a local DNS server tends to improve query latency, but most public DNS servers will return the same results, so server usage is largely based on preference.

Ручная конфигурация сети

Interface address configuration

Важно
When manually configuring IP addresses, the local network topology must be considered. IP addresses can be set arbitrarily; conflicts may cause network disruption.

To configure enp1s0 with the address 192.168.0.2 and CIDR /24:

root #ip address add 192.168.0.2/24 dev enp1s0
Совет
The start of this command can be shortened to ip a.

Настройка маршрута по умолчанию

Configuring address and network information for an interface will configure link routes, allowing communication with that network segment:

root #ip route
192.168.0.0/24 dev enp1s0 proto kernel scope link src 192.168.0.2
Совет
This command can be shortened to ip r.

The default route can be set to 192.168.0.1 with:

root #ip route add default via 192.168.0.1

Конфигурация DNS

Nameserver info is typically acquired using DHCP, but can be set manually by adding nameserver entries to /etc/resolv.conf.

Предупреждение
If dhcpcd is running, changes to /etc/resolv.conf will not persist. Status can be checked with ps x | grep dhcpcd.

nano is included in Gentoo boot media and can be used to edit /etc/resolv.conf with:

root #nano /etc/resolv.conf

Lines containing the keyword nameserver followed by a DNS server IP address are queried in order of definition:

ФАЙЛ /etc/resolv.confUse Quad9 DNS.
nameserver 9.9.9.9
nameserver 149.112.112.112
ФАЙЛ /etc/resolv.confUse Cloudflare DNS.
nameserver 1.1.1.1
nameserver 1.0.0.1

DNS status can be checked by pinging a domain name:

root #ping -c 3 gentoo.org

Once connectivity has been verified, continue with Preparing the disks.





Введение в блочные устройства

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

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

Для начала, рассмотрим блочные устройства. Устройства SCSI и Serial ATA обозначаются как /dev/sda, /dev/sdb, /dev/sdc и так далее. На более современных компьютерах твердотельные накопители NVMe на базе PCI Express имеют дескриптор вида /dev/nvme0n1, /dev/nvme0n2 и так далее.

Следующая таблица поможет определить необходимый тип блочного устройства в системе:

Тип устройства Дескриптор устройства по умолчанию Примечания и полезные сведения
IDE, SATA, SAS, SCSI или USB flash /dev/sda Данный тип устройств стал доступным примерно с 2007 года и встречается до сих пор, являясь, пожалуй, самым используемым типом в Linux. Устройства могут подключаться через шины SATA, SCSI или USB в виде устройства блочного хранилища. Например, первый раздел на первом SATA устройстве обозначается как /dev/sda1.
NVM Express (NVMe) /dev/nvme0n1 Передовая на данный момент технология твердотельных накопителей. Устройства NVMe подключаются к шине PCI Express и обладают наиболее быстрой скоростью передачи блочных данных, доступной на рынке. Системы образца 2014 года и новее могут иметь поддержку устройств NVMe. Первый раздел на первом NVMe устройстве обозначается как /dev/nvme0n1p1.
MMC, eMMC и SD /dev/mmcblk0 Устройства embedded MMC, SD-карты и другие типы карт памяти могут использоваться для хранения данных. Однако не все системы могут позволить загружаться с данного типа устройств. Не рекомендуется использовать данные устройства для установки Linux; лучше используйте их по прямому назначению — для переноса файлов. Также их можно использовать для кратковременного резервного копирования или снимков диска.

Данные блочные устройства представляют абстрактный интерфейс к диску. Пользовательские приложения могут использовать их для взаимодействия с диском, не заботясь о том, какой это диск — SATA, SCSI или какой-либо ещё. Программа просто адресует пространство на диске как совокупность следующих друг за другом 4096-байтных (4K) блоков с произвольным доступом.


Таблица разделов

Although it is theoretically possible to use a raw, unpartitioned disk to house a Linux system (when creating a btrfs RAID for example), this is almost never done in practice. Instead, disk block devices are split up into smaller, more manageable block devices. On sparc systems, these are called partitions. There are currently two standard partitioning technologies in use: Sun and GPT; the latter is supported only on more recent systems with a sufficiently recent firmware.

GUID Partition Table (GPT)

GUID Partition Table (GPT, таблица разделов GUID, также может называться GPT disklabel) использует 64-битные идентификаторы разделов. Место, в котором хранится информация о разделах, также гораздо больше, чем 512 байт таблицы разделов MBR (DOS disklabel), что означает, что нет почти никаких ограничений на количество разделов для диска с GPT. Также максимальный размер раздела был значительно увеличен (почти 8 ЗиБ — да, зебибайт).

Также GPT использует контрольные суммы и избыточность. Он содержит контрольные суммы CRC32 для обнаружения ошибок в заголовке и таблице разделов. У GPT есть резервная таблица в конце диска. Её можно использовать для восстановления первичной таблицы GPT, которая располагается в начале диска.

GPT is only supported on Oracle SPARC machines of the T4 generation or newer. Additionally, only certain more recent firmware includes GPT support. There are several methods to check whether GPT support is available.

From the OBP prompt, execute:

{0} okcd /packages/disk-label
{0} ok.properties
gpt

supported-labels gpt

                   sun
                   mbr
name disk-label

If gpt is included in the output, then GPT support is available. Alternatively, this can be determined from the installation media without entering OBP. Use the prtconf command from sys-apps/sparc-utils to access this information from userspace:

root #prtconf -pv | grep -c gpt

Or, check if the file /sys/firmware/devicetree/base/packages/disk-label/gpt exists. If none of these methods succeeds, then a firmware update is required in order to support GPT.

Sun partition table

Systems not manufactured by Oracle, T3 or earlier systems, or systems running an earlier firmware must use the Sun partition table type.

На системах Sun третий раздел выделен отдельно и используется как специальный слайс «whole disk». Этот раздел не должен содержать какой-либо файловой системы.

Пользователи, привыкшие к схеме разделов в стиле DOS, должны отметить, что метки дисков Sun не имеют «основных» или «расширенных» разделов. Вместо этого на каждом устройстве может располагаться до восьми разделов, при этом третий зарезервирован.

Авторы Руководства при установке Gentoo рекомендуют использовать GPT везде, где это возможно.

Схема разделов по умолчанию

Due to the differences in required partition layout between GPT and Sun partition tables, a single partitioning scheme is not sufficient to support all possible system requirements. Some example schemes are provided below.

GPT partition scheme

The following partitioning scheme will be used as an example for GPT-formatted disks:

Раздел Файловая система Размер Точка монтирования Описание
/dev/sda1 (нет) 2 Мб нет BIOS boot partition
/dev/sda2 (swap) Размер ОЗУ * 2 нет Раздел подкачки
/dev/sda3 ext4 Оставшаяся часть диска / Корневой раздел

Sun formatted partition scheme

The following partitioning scheme will be used as an example for Sun-formatted disks:

Раздел Файловая система Размер Точка монтирования Описание
/dev/sda1 ext4 Размер диска минус размер раздела подкачки / Корневой раздел
/dev/sda2 (swap) Размер ОЗУ * 2 нет Раздел подкачки
/dev/sda3 (none) Весь диск нет Раздел всего диска. Нужен для дисков с использованием таблицы разделов Sun.
Важно
SPARC systems using OBP version 3 or older have additional restrictions on their partitioning scheme. The root partition must be the first partition on the disk, and it may be no larger than 2 GiB. For this reason, such systems will require additional sufficiently-sized partitions for top-level directories, such as /usr, /var, /home, and other directories which would likely cause the root partition to exceed this limit. These systems are also likely to require the Sun partition table type, so do not forget to include the whole disk partition.

Создание разделов на диске с GPT

Следующие части объяснят, как создать структуру разделов из примера для установки с GPT с использованием fdisk (пример структуры разделов приводился выше):

Раздел Описание
/dev/sda1 Загрузочный раздел
/dev/sda2 Раздел подкачки
/dev/sda3 Корневой раздел

Change the partition layout according the system's needs.

Просмотр текущей разметки разделов

fdisk является популярным и мощным инструментом для создания разделов на диске. Запустите fdisk, передав в качестве параметра имя диска (в нашем примере мы используем /dev/sda):

root #fdisk /dev/sda

Нажмите на клавишу p для отображения текущей конфигурации разделов:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9850A2C2-76C4-FC47-9F0B-DA60449D2413

Device     Start      End  Sectors  Size Type
/dev/sda1   2048 30547967 30545920 14.6G Linux filesystem

Creating a new disklabel and removing all existing partitions

Нажмите g, чтобы создать новую разметку GPT на диске; это удалит все существующие разделы.

Command (m for help):g
Created a new GPT disklabel (GUID: 9850A2C2-76C4-FC47-9F0B-DA60449D2413).

Для диска с существующей разметкой GPT (смотрите вывод p выше), вы также можете удалять существующие разделы на диске. Нажмите d для удаления раздела. Например, чтобы удалить существующий /dev/sda1:

Command (m for help):d
Selected partition 1
Partition 1 has been deleted.

Теперь раздел отмечен для удаления. Он больше не будет отображаться в списке разделов при вводе p, но не будет удален, пока не будут сохранены изменения. Это даёт возможность пользователю прервать операцию, если была допущена ошибка — в этом случае сразу нажмите q и Enter, и раздел не будет удален.

Удалите все разделы, поочерёдно нажимая на p для вывода списка разделов, d и номер раздела — для удаления. В конечном счете, таблица разделов будет пуста:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9850A2C2-76C4-FC47-9F0B-DA60449D2413

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

Создание загрузочного раздела BIOS

First, create the BIOS boot partition. Type n to create a new partition, followed by 1 to select the first partition. When prompted for the first sector, make sure it starts from 2048 (which may be needed for the boot loader) and hit Enter. When prompted for the last sector, type +2M to create a partition 2 Mbyte in size:

Command (m for help):n
Partition number (1-128, default 1): 
First sector (2048-30548062, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-30548062, default 30547967): +2M

Created a new partition 1 of type 'Linux filesystem' and of size 2 MiB.

Mark the partition as a BIOS boot partition:

Command (m for help):t
Selected partition 1
Partition type or alias (type L to list all): 4
Changed type of partition 'Linux filesystem' to 'BIOS boot'.

Создание раздела подкачки

Для создания раздела подкачки введите n, чтобы создать новый раздел, затем введите 2 для создания второго основного раздела, /dev/sda2. При появлении запроса первого сектора, введите Enter. При появлении запроса последнего сектора, наберите +4G (или любой другой размер, необходимый для подкачки) для создания раздела размером 4 ГиБ.

Command (m for help):n
Partition number (2-128, default 2): 
First sector (6144-30548062, default 6144): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (6144-30548062, default 30547967): +4G

Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.

После этого введите t для выбора типа раздела, 2 для выбора только что созданного раздела и введите 19, чтобы установить тип раздела как «Linux Swap».

Command (m for help):t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

Создание корневого раздела

Наконец, чтобы создать корневой раздел, введите n, чтобы создать новый раздел. Затем введите 3, чтобы создать третий основной раздел, /dev/sda3. При запросе последнего сектора нажмите Enter, чтобы создать раздел, занимающий всё оставшееся доступное пространство диска. После завершения этих шагов введите p для вывода на экран таблицы разделов, которая должна выглядеть примерно так:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9850A2C2-76C4-FC47-9F0B-DA60449D2413

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     6143     4096    2M BIOS boot
/dev/sda2     6144  8394751  8388608    4G Linux swap
/dev/sda3  8394752 30547967 22153216 10.6G Linux filesystem

Сохранение разметки разделов

Для сохранения разметки разделов и выхода из fdisk введите w.

Command (m for help):w

Разделы созданы, теперь настало время создать на них файловые системы.

Partitioning the disk with a Sun partition table

The following parts explain how to create the example partition layout for a Sun partition table installation using fdisk. The example partition layout was mentioned earlier:

Раздел Описание
/dev/sda1 Корневой раздел
/dev/sda2 Раздел подкачки
/dev/sda3 Раздел всего диска

Change the partition layout according to personal preference. If partitioning for a system using OBP version 3 or earlier, ensure that the root partition is less than 2G in size, and additionally create partitions /dev/sda4 and onward for additional filesystems.

Просмотр текущей разметки разделов

fdisk является популярным и мощным инструментом для создания разделов на диске. Запустите fdisk, передав в качестве параметра имя диска (в нашем примере мы используем /dev/sda):

root #fdisk /dev/sda

Нажмите на клавишу p для отображения текущей конфигурации разделов:

Command (m for help):p
Disk model: USB Flash Disk  
Geometry: 64 heads, 32 sectors/track, 14916 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: sun

Device        Start      End  Sectors  Size Id Type         Flags
/dev/sda1         0 30445567 30445568 14.5G 83 Linux native 
/dev/sda2  30445568 30547967   102400   50M 82 Linux swap      u 
/dev/sda3         0 30547967 30547968 14.6G  5 Whole disk   

Создание нового disklabel / удаление всех разделов

Type s to create a new Sun disklabel on the disk; this will remove all existing partitions.

Command (m for help):s
Created a new partition 1 of type 'Linux native' and of size 14.5 GiB.
Created a new partition 2 of type 'Linux swap' and of size 50 MiB.
Created a new partition 3 of type 'Whole disk' and of size 14.6 GiB.
Created a new Sun disklabel.

For an existing Sun disklabel (see the output of p above), alternatively consider removing the existing partitions one by one from the disk. Type d to delete a partition. For instance, to delete an existing /dev/sda1:

Command (m for help):d
Partition number (1-3, default 3): 1

Partition 1 has been deleted.

Теперь раздел отмечен для удаления. Он больше не будет отображаться в списке разделов при вводе p, но не будет удален, пока не будут сохранены изменения. Это даёт возможность пользователю прервать операцию, если была допущена ошибка — в этом случае сразу нажмите q и Enter, и раздел не будет удален.

Удалите все разделы, поочерёдно нажимая на p для вывода списка разделов, d и номер раздела — для удаления. В конечном счете, таблица разделов будет пуста:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Geometry: 64 heads, 32 sectors/track, 14916 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: sun

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

Creating the whole disk partition

First, create the whole disk partition. Type n to create a new partition, followed by 3 to select the third partition. When prompted for the first sector, hit Enter. When prompted for the last sector, hit Enter to create a partition that takes up all of the space on the disk.

Command (m for help):n
Partition number (1-8, default 1): 3

It is highly recommended that the third partition covers the whole disk and is of type `Whole disk'
First sector (0-30547968, default 0): 
Last sector or +/-sectors or +/-size{K,M,G,T,P} (0-30547968, default 30547968): 

Created a new partition 3 of type 'Whole disk' and of size 14.6 GiB.

fdisk will automatically set the type of such a partition to 'Whole disk', so there is no need to explicitly set the type.

Создание корневого раздела

Next, to create the root partition, type n to create a new partition. Then type 1 to create the third partition, /dev/sda1. When prompted for the first sector, hit Enter. When prompted for the last sector, type -4G (or whatever space is required for non-root partitions). After completing these steps, typing p should display a partition table that looks similar to this:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Geometry: 64 heads, 32 sectors/track, 14916 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: sun

Device     Start      End  Sectors  Size Id Type         Flags
/dev/sda1      0 22159359 22159360 10.6G 83 Linux native 
/dev/sda3      0 30547967 30547968 14.6G  5 Whole disk   

Создание раздела подкачки

Finally, to create the swap partition, type n to create a new partition, then type 2 to create the second partition, /dev/sda2. When prompted for the first sector, hit Enter. When prompted for the last sector, hit Enter to take up the remaining space on the disk.

Command (m for help):n
Partition number (2,4-8, default 2): 
First sector (22159360-30547968, default 22159360): 
Last sector or +/-sectors or +/-size{K,M,G,T,P} (22159360-30547968, default 30547968): 

Created a new partition 2 of type 'Linux native' and of size 4 GiB.

После этого введите t для выбора типа раздела, 3 для выбора только что созданного раздела и введите 82, чтобы установить тип раздела как «Linux Swap».

Command (m for help):t
Partition number (1-3, default 3): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux native' to 'Linux swap'.

After completing these steps, typing p should display a partition table that looks similar to this:

Command (m for help):p
Disk /dev/sda: 14.57 GiB, 15640625152 bytes, 30548096 sectors
Disk model: USB Flash Disk  
Geometry: 64 heads, 32 sectors/track, 14916 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: sun

Device        Start      End  Sectors  Size Id Type         Flags
/dev/sda1         0 22159359 22159360 10.6G 83 Linux native 
/dev/sda2  22159360 30547967  8388608    4G 82 Linux swap      u 
/dev/sda3         0 30547967 30547968 14.6G  5 Whole disk   

Сохранение разметки разделов

Для сохранения разметки разделов и выхода из fdisk введите w.

Command (m for help):w

Разделы созданы, теперь настало время создать на них файловые системы.


Создание файловых систем

Предупреждение
При использовании SSD или NVMe диска, пожалуйста, проверьте наличие обновлений для прошивки. В частности, некоторые SSD от Intel (600p и 6000p) нуждаются в обновлении прошивки для исправления критических ошибок, чтобы не допустить повреждение данных из-за особенностей использования I/O в XFS (не по вине самой файловой системы). Программа smartctl умеет отображать модель и версию прошивки.

Введение

Теперь, когда разделы созданы, пора разместить на них файловые системы. В следующем разделе описаны различные поддерживаемые в Linux файловые системы. Те из читателей, кто уже знает, какую файловую систему будет использовать, могут продолжить с раздела Создание файловой системы на разделе. Остальным стоит продолжить чтение, чтобы узнать о доступных вариантах…

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

Linux поддерживает несколько десятков файловых систем, хотя для большинства из них необходимы достаточно веские причины их использовать. Лишь только некоторые из них можно считать стабильными на архитектуре sparc. Рекомендуется прочитать информацию о файловых системах и об их состоянии поддержки перед тем, как останавливать свой выбор на экспериментальных. XFS — рекомендуемая стабильная файловая система общего применения для всех платформ. Ниже представлен неполный список файловых систем:

btrfs
Файловая система нового поколения. Предоставляет множество продвинутых функций, таких как мгновенные снимки, самовосстановление с помощью контрольных сумм, поддержка прозрачного сжатия, подтомов и интегрированный RAID. Ядра старше ветки 5.4 не обеспечивают безопасную работу btrfs, так как исправления наиболее серьёзных проблем стабильности появились только в более поздних ветках долговременной поддержки (LTS) ядра. RAID 5/6 и quota groups небезопасны на всех версиях btrfs.
ext4
Ext4 является стабильной файловой системой общего применения для всех платформ, хотя в ней отсутствуют современные возможности по типу «reflinks».
f2fs
Файловая система (Flash-Friendly File System) была создана Samsung для использования на NAND-накопителях. Она может быть достойным выбором при установке на microSD карту, USB-накопитель или другие накопители.
XFS
Файловая система с журналированием метаданных, которая поставляется с мощным набором функций и оптимизирована для масштабируемости. Она непрерывно обновляется, обрастая новым возможностями. Единственным недостатком является то, что разделы с XFS пока нельзя уменьшать (хотя и над этим ведётся работа). Примечательно, что XFS поддерживает «reflinks» и механизм «копирование при записи» (Copy-on-Write, CoW), что весьма полезно для Gentoo систем из-за частых и/или больших компиляций, которые совершает пользователь. XFS является рекомендуемой современной файловой системой общего назначения для всех платформ. Для неё требуется раздел размером не менее 300 МБ.
VFAT
Так же известная как FAT32, поддерживается Linux, но не имеет поддержку стандартных файловых разрешений UNIX. В основном используется для взаимодействия или взаимозаменяемости с другими операционными системами (в основном Microsoft Windows и Apple macOS), но также необходима при использовании некоторых системных прошивок загрузчика (например, UEFI). Пользователям систем с UEFI должны использовать эту файловую систему для EFI System Partition, чтобы иметь возможность загружаться.
NTFS
New Technology Filesystem является основной файловой системой для Microsoft Windows начиная с NT 3.5. Как и VFAT, она не сохраняет настройки UNIX разрешений и расширенные атрибуты, необходимые для нормальной работы BSD или Linux, поэтому в большинстве случаев её не следует использоваться в качестве файловой системы для корневого раздела. Её следует использовать только для взаимодействия или обмена данными с системами Microsoft Windows (обратите внимание на акцент слова только).

Более подробную информацию о файловых системах можно найти в (поддерживаемой сообществом) статье Файловая система.

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

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

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

Файловая система Команда для создания Присутствует в «живом» окружении? Пакет
btrfs mkfs.btrfs Да sys-fs/btrfs-progs
ext4 mkfs.ext4 Да sys-fs/e2fsprogs
f2fs mkfs.f2fs Да sys-fs/f2fs-tools
xfs mkfs.xfs Да sys-fs/xfsprogs
vfat mkfs.vfat Да sys-fs/dosfstools
NTFS mkfs.ntfs Да sys-fs/ntfs3g
Важно
The handbook recommends new partitions as part of the installation process, but it is important to note running any mkfs command will erase any data contained within the partition. When necessary, ensure any data that exists within is appropriately backed up before creating a few filesystem.

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

root #mkfs.xfs /dev/sda1

EFI system partition filesystem

The EFI system partition () must be formatted as FAT32:

root #mkfs.vfat -F 32

Legacy BIOS boot partition filesystem

Systems booting via legacy BIOS with a MBR/DOS disklabel can use any filesystem format supported by the bootloader.

For example, to format with XFS:

root #mkfs.xfs

Small ext4 partitions

При использовании ext4 на малых разделах (менее 8 ГиБ) файловая система должна быть создана с особыми параметрами для резервирования достаточного количества индексных дескрипторов (inodes). Для этого используется одна из следующих команд:

root #mkfs.ext4 -T small /dev/<раздел>

Данная команда учетверит количество индексных дескрипторов для такой ФС, так как мы уменьшили количество байт на каждый дескриптор («bytes-per-inode») с 16 кб до 4 кб.

Активация раздела подкачки

Для инициализации разделов подкачки используется команда mkswap:

root #mkswap /dev/sda2

Чтобы активировать раздел подкачки, используйте swapon:

root #swapon /dev/sda2

This 'activation' step is only necessary because the swap partition is newly created within the live environment. Once the system has been rebooted, as long as the swap partition is properly defined within fstab or other mount mechanism, swap space will activate automatically.

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

Заметка
Installations which were previously started, but did not finish the installation process can resume the installation from this point in the handbook. Use this link as the permalink: Resumed installations start here.
Совет
Если в качестве установочного носителя используется не Gentoo-образ, необходимо дополнительно создать точку монтирования:
root #mkdir --parents /mnt/gentoo
root #mkdir --parents /mnt/gentoo

For EFI installs only, the ESP should be mounted under the root partition location:

root #mkdir --parents /mnt/gentoo

Continue creating additional mount points necessary for any additional (custom) partition(s) created during previous steps by using the mkdir command.

Теперь, когда созданы разделы и размещённые на них файловые системы, настало время их смонтировать. Используйте команду mount, только не забудьте предварительно создать каталоги для монтирования каждого созданного раздела. В качестве примера мы смонтируем корневой раздела:

Mount the root partition:

root #mount /dev/sda1 /mnt/gentoo

Continue mounting additional (custom) partitions as necessary using the mount command.

Заметка
Если /tmp/ находится на отдельном разделе, не забудьте после монтирования изменить права доступа:
root #chmod 1777 /mnt/gentoo/tmp
Это также справедливо для /var/tmp.

Позже в инструкции будут смонтированы файловая система proc (виртуальный интерфейс к ядру) и другие псевдофайловые системы ядра. Но сначала необходимо распаковать файл стадии Gentoo.





Выбор архива 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

Before downloading the stage file, the current directory should be set to the location of the mount used for the install:

root #cd /mnt/gentoo

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

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

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

У пользователей, использующих среду с полноценными веб-браузерами, не будет никаких проблем с копированием 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/sparc/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-sparc-<release>-<init>.tar.xz

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

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

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

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

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

root #sha256sum --check stage3-sparc-<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-sparc-<release>-<init>.tar.xz.asc
root #gpg --verify stage3-sparc-<release>-<init>.tar.xz.DIGESTS
root #gpg --verify stage3-sparc-<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="-O2 -mcpu=ultrasparc -pipe"
# Используйте те же настройки для обеих переменных
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 для выхода).

Примечания





Переход в изолированную среду

Копирование информации о DNS

Единственное, что ещё осталось сделать перед входом в новое окружение, это скопировать информацию о DNS из файла /etc/resolv.conf. Это нужно сделать, чтобы сеть всё ещё будет работать даже после входа в новое окружение. Файл /etc/resolv.conf содержит сервера имён.

Чтобы скопировать эту информацию, рекомендуется ввести ключ --dereference для команды cp. Благодаря этому /etc/resolv.conf будет скопирован как файл, если является символьной ссылкой. В противном случае в новом окружении символическая ссылка будет ссылаться на несуществующий файл (так как цель ссылки, скорее всего, будет недоступна внутри нового окружения).

root #cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

Монтирование необходимых файловых систем

Через несколько мгновений корневая система Linux будет перемещена в новое место.

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

  • /proc/ — псевдофайловая система. Она выглядит как обычные файлы, но на самом деле генерируется на лету ядром Linux
  • /sys/ — псевдофайловая система, как и /proc/, которую она когда-то должна была заменить, и более структурированнее, чем /proc/
  • /dev/ — это обычная файловая система, которая содержит все файлы устройств. Она частично управляемется менеджером устройств Linux (обычно udev)
  • /run/ — временная файловая система, которая содержит генерируемые на лету файлы по типу файлов PID или файлов блокировки (locks)

Каталог /proc/ монтируется в /mnt/gentoo/proc/, остальные — через перепривязку точки монтирования. Это означает, что, например, /mnt/gentoo/sys/ на самом деле будет /sys/ (это просто вторая точка входа в ту же файловую систему), тогда как /mnt/gentoo/proc/ является новой точкой монтирования (так сказать, экземпляром) файловой системы.

Совет
При использовании установочного носителя Gentoo этот шаг можно заменить простой командой: arch-chroot /mnt/gentoo.
root #mount --types proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev
root #mount --bind /run /mnt/gentoo/run
root #mount --make-slave /mnt/gentoo/run
Заметка
Параметр --make-rslave необходим для дальнейшей поддержки systemd в ходе установки.
Предупреждение
Если при установке используется не дистрибутив Gentoo, то этого может быть недостаточно. Некоторые дистрибутивы делают /dev/shm символьной ссылкой на /run/shm/, которая после перехода в изолированную среду станет недействительной. Создание правильного подключения /dev/shm/ в tmpfs поможет избежать этой проблемы:
root #test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm

Также проверьте, что права доступа установлены в 1777:

root #chmod 1777 /dev/shm /run/shm

Переход в новое окружение

Теперь, когда все разделы инициализированы и базовое окружение установлено, настало время войти в новое установочное окружение (выполнить chroot). Это означает, что сессия изменит свой корневой каталог (наивысший каталог, в который можно перейти) из текущей установочного окружения (CD или другого установочного носителя) в систему установки (где находятся размеченные разделы).

Переход в изолированное окружение делается в три шага:

  1. Изменение корневого каталога с / (который находится на установочном носителе) в /mnt/gentoo/ (на разделах диска) с помощью команды chroot или arch-chroot если доступно.
  2. Загрузка в память некоторых параметров из /etc/profile с помощью команды source
  3. Изменение приглашения командной строки, чтобы не забыть, что эта сессия находится в изолированном окружении.
root #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"

С этого момента все действия выполняются непосредственно в новом окружении Gentoo Linux.

Совет
Если установка Gentoo будет прервана где-то после этой точки, можно «продолжить» установку с последнего состояния. Не нужно разбивать диск снова! Просто смонтируйте корневой раздел снова и проделайте предыдущие шаги, начиная с копирования информации о DNS, для повторного входа в рабочее окружение. Эти шаги подойдут и для решения проблем с загрузчиком. Больше информации можно найти в статье chroot.

Preparing for a bootloader

Now that the new environment has been entered, it is necessary to prepare the new environment for the bootloader. It will be important to have the correct partition mounted when it is time to install the bootloader.

Системы UEFI

For UEFI systems, was formatted with the FAT32 filesystem and will be used as the EFI System Partition (ESP). Create a new directory (if not yet created), and then mount ESP there:

root #mkdir
root #mount

DOS/Legacy BIOS systems

For DOS/Legacy BIOS systems, the bootloader will be installed into the /boot directory, therefore mount as follows:

root #mount /boot

Настройка Portage

Установка снимка Gentoo репозитория ebuild-файлов

Следующим шагом будет установка снимка репозитория ebuild-файлов Gentoo. Этот снимок содержит коллекцию файлов, которая сообщает Portage о доступных программах (для установки), какой профиль может выбрать системный администратор, о новостях о конкретных пакетах или профилях и так далее.

emerge-webrsync рекомендуется использовать в случаях, когда система находится за межсетевым экраном (для загрузки снимка используется только протоколы HTTP/HTTPS), а также когда необходимо снизить нагрузку канал сети. У кого нет ограничений с сетью или шириной канала, могут счастливо перейти к следующему разделу.

Команда ниже загрузит последний снимок (которые выпускаются каждый день), с одного из зеркал Gentoo, и распакует его в системе:

root #emerge-webrsync
Заметка
Во время этой операции, emerge-webrsync может жаловаться на отсутствие /var/db/repos/gentoo/. В этом нет ничего страшного — инструмент сам создаст этот каталог.

Начиная с этого места, Portage может попросить установить некоторые рекомендуемые обновления: некоторые системные пакеты, установленные из архива stage, могут иметь новые доступные версии. Пакетному менеджеру теперь известно о новых пакетах благодаря снимку репозитория. Обновление пакетов можно проигнорировать, этот процесс можно отложить до завершения установки Gentoo.


Необязательно: Выбор зеркала

Для быстрой загрузки исходного кода рекомендуется выбрать быстрое, географически находящееся рядом зеркало. Portage будет искать в файле make.conf переменную GENTOO_MIRRORS и использовать перечисленные в ней зеркала. Можно просмотреть список зеркал Gentoo и найти зеркало (или несколько зеркал), наиболее близко расположенное к месту физического расположения (чаще всего они и есть самые быстрые).

A tool called mirrorselect provides a pretty text interface to more quickly query and select suitable mirrors. Just navigate to the mirrors of choice and press Spacebar to select one or more mirrors.

root #emerge --ask --verbose --oneshot app-portage/mirrorselect
root #mirrorselect -i -o >> /etc/portage/make.conf

Alternatively, a list of active mirrors are available online.

Необязательно: Обновление Gentoo репозитория ebuild-файлов

Также можно обновить репозиторий ebuild-файлов Gentoo до текущего состояния. Предыдущая команда emerge-webrsync устанавливает относительно недавний снимок (обычно не старше суток), поэтому этот шаг совершенно необязателен.

Если необходимо установить последние обновления пакетов (выпущенных не более 1 часа назад), то используйте emerge --sync. Эта команда использует rsync-протокол для обновления репозитория ebuild-файлов Gentoo (которое было получено ранее с помощью emerge-webrsync) до самой свежей версии.

root #emerge --sync

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

root #emerge --sync --quiet

Чтение новостей

После обновления репозитория ebuild-файлов Gentoo, Portage может вывести похожие сообщения:

* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

Новостные сообщения были созданы для обеспечения коммуникационного канала и оповещения пользователей о важных событиях через репозиторий ebuild-файлов Gentoo. Для управления оповещениями используйте команду eselect news. Приложение eselect предоставляет общий интерфейс для системного администрирования. В данном случае eselect используется совместно с модулем news.

Для модуля news есть три наиболее распространенных операций:

  • list отображает общий список новостей.
  • с помощью read можно прочитать какую-либо новость.
  • purge удалит прочитанные новости, поэтому перечитать новость снова уже будет нельзя.
root #eselect news list
root #eselect news read

Более подробную информацию о чтении новостей можно найти на странице man:

root #man news.eselect

Выбор подходящего профиля

Совет
Профили desktop (для настольных систем) можно использовать не только со средами рабочего стола. Они также подходят и для минимальных менеджеров окон, таких как i3 или sway.

Профиль — это важная часть любой системы Gentoo. Он не только определяет такие важные переменные, как USE, CFLAGS и многие другие, а также фиксирует версии для определённых пакетов. Все эти нюансы поддерживаются разработчиками Portage в Gentoo.

Для того, чтобы увидеть, какой профиль использует система на данный момент, запустите eselect с модулем profile:

root #eselect profile list
Available profile symlink targets:
  [1]   default/linux/sparc/23.0 *
  [2]   default/linux/sparc/23.0/desktop
  [3]   default/linux/sparc/23.0/desktop/gnome
  [4]   default/linux/sparc/23.0/desktop/kde
Заметка
Вывод команды является только примером и может меняться время от времени.
Заметка
Для использования systemd выберите профиль, в котором содержится слово «systemd» (или его отсутствие в обратном случае).

Для некоторых архитектур есть субпрофиль для настольных систем.

Предупреждение
Не стоит халатно относиться к обновлениям профиля. Выбирая изначальный профиль, используйте тот, что соответствует той же версии, которая была использована в stage3 (к примеру, 23.0). Каждая новая версия профиля объявляется через элемент новостей с инструкциями по миграции. Следуйте им, прежде чем перейти на новый профиль.

После просмотра доступных профилей для архитектуры sparc, пользователи могут выбрать другой системный профиль:

root #eselect profile set 2



Заметка
Подпрофиль developer сделан специально для разработки Gentoo Linux и не предназначен для использования обычными пользователями.

Optional: Adding a binary package host

Since December 2023, Gentoo's Release Engineering team has offered an official binary package host (colloquially shorted to just "binhost") for use by the general community to retrieve and install binary packages (binpkgs).[1]

Adding a binary package host allows Portage to install cryptographically signed, compiled packages. In many cases, adding a binary package host will greatly decrease the mean time to package installation and adds much benefit when running Gentoo on older, slower, or low power systems.

Конфигурация репозитория

The repository configuration for a binhost is found in Portage's /etc/portage/binrepos.conf/ directory, which functions similarly to the configuration mentioned in the Gentoo ebuild repository section.

When defining a binary host, there are two important aspects to consider:

  1. The architecture and profile targets within the sync-uri value do matter and should align to the respective computer architecture (sparc in this case) and system profile selected in the Choosing the right profile section.
  2. Selecting a fast, geographically close mirror will generally shorten retrieval time. Review the mirrorselect tool mentioned in the Optional: Selecting mirrors section or review the online list of mirrors where URL values can be discovered.

ФАЙЛ /etc/portage/binrepos.conf/gentoobinhost.confCDN-based binary package host example
[binhost]
priority = 9999
sync-uri = https://distfiles.gentoo.org/releases/<arch>/binpackages/<profile>/x86-64/

Installing binary packages

Portage will compile packages from code source by default. It can be instructed to use binary packages in the following ways:

  1. The --getbinpkg option can be passed when invoking the emerge command. This method of for binary package installation is useful to install only a particular binary package.
  2. Changing the system's default via Portage's FEATURES variable, which is exposed through the /etc/portage/make.conf file. Applying this configuration change will cause Portage to query the binary package host for the package(s) to be requested and fall back to compiling locally when no results are found.

For example, to have Portage always install available binary packages:

ФАЙЛ /etc/portage/make.confConfigure Portage to use binary packages by default
# Appending getbinpkg to the list of values within the FEATURES variable
FEATURES="${FEATURES} getbinpkg"
# Require signatures
FEATURES="${FEATURES} binpkg-request-signature"

Please also run getuto for Portage to set up the necessary keyring for verification:

root #getuto

Additional Portage features will be discussed in the the next chapter of the handbook.

Необязательно: Настройка переменной USE

USE — это одна из самых мощных переменных Gentoo, доступная пользователям. Разные программы могут быть скомпилированы с или без поддержки некоторых элементов. Например, некоторые программы могут быть собраны с поддержкой GTK+ или Qt. Другие могут быть собраны с или без поддержки SSL. Некоторые программы можно даже собрать с поддержкой кадрового буфера (svgalib) вместо X11 (X-сервера).

Большинство дистрибутивов компилируют свои пакеты с поддержкой всего, что возможно, увеличивая размер и время запуска программ, не говоря уже о чрезмерных зависимостях. Благодаря Gentoo пользователь может определить, с какими параметрами пакет должен быть скомпилирован. И здесь переменная USE вступает в игру.

В переменной USE пользователи могут определить ключевые слова, которые сказываются на параметрах сборки. Например, ssl компилирует SSL-поддержку в программах, которые её поддерживают. -X уберёт поддержку X-сервера (обратите внимание на знак минус перед X). gnome gtk -kde -qt5 скомпилирует программы с поддержкой GNOME (и GTK+), но без поддержки KDE (и Qt), что делает систему более оптимальной для использования GNOME (если архитектура поддерживает его).

Настройки по умолчанию для USE находятся в файле make.defaults профиля Gentoo, который используется на данный момент системой. Gentoo использует сложную систему наследования для своих профилей, которая не будет подробно рассматриваться во время установки. Простой способ проверить, какие настройки используются для USE — запустить emerge --info и просмотреть строку, начинающуюся с USE:

root #emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
Заметка
В приведённом выше примере список укорочен. Настоящий список USE флагов намного больше.

Полное описание всех доступных USE-флагов можно найти в файле /var/db/repos/gentoo/profiles/use.desc.

root #less /var/db/repos/gentoo/profiles/use.desc

При использовании команды less можно использовать прокрутку с помощью клавиш и , для выхода нажмите клавишу q.

В качестве примера мы покажем настройки USE для системы ориентированной для использования KDE с поддержкой DVD, ALSA и записи CD:

root #nano /etc/portage/make.conf
ФАЙЛ /etc/portage/make.confНастройки переменной USE для системы, ориентированной на использование KDE/Plasma с поддержкой DVD, ALSA и записи CD
USE="-gtk -gnome qt5 kde dvd alsa cdr"

Если USE-флаг определён в /etc/portage/make.conf, он будет добавлен (или удалён, если перед USE-флагом написан знак -) в список по умолчанию. USE флаги могут быть удалены добавлением знака - перед флагом. Например, чтобы выключить поддержку для графических окружений X, нужно задать -X:

ФАЙЛ /etc/portage/make.confИгнорирование USE-флагов по умолчанию
USE="-X acl alsa"
Предупреждение
Пусть это и возможно, но установка -* (что уберёт все USE флаги, кроме указанных в make.conf) не одобряется. Писатели ebuild'ов подбирают нужные флаги по умолчанию, для того, чтобы избежать конфликтов, улучшить безопасность, и по другим причинам. Удаление всех USE флагов нарушит поведение по умолчанию и может вызвать серьезные проблемы.

CPU_FLAGS_*

Некоторые архитектуры (включая AMD64/X86, ARM, PPC) имеют переменную USE_EXPAND под названием CPU_FLAGS_<ARCH> (где <ARCH> заменяется на соответствующую архитектуру системы).

Важно
Не перепутайте! Системы AMD64 и X86 имеют общую архитектуру, поэтому для систем AMD64 правильной переменной является CPU_FLAGS_X86.

Это используется для настройки сборки на компиляцию в определённый ассемблерный код или другие интринсики, обычно написанные вручную или каким-нибудь другим дополнительным способом, и это не то же самое, что попросить компилятор вывести оптимизированный код для определенной характеристики процессора (как, например, -march=).

Пользователям рекомендуется установить эту переменную, по желанию одновременно с настройкой COMMON_FLAGS.

Для настройки необходимо выполнить несколько шагов:

root #emerge --ask --oneshot app-portage/cpuid2cpuflags

Если интересно, проверьте вывод вручную:

root #cpuid2cpuflags

Затем скопируйте вывод в package.use:

root #echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

VIDEO_CARDS

Переменная VIDEO_CARDS USE_EXPAND должна быть настроена соответствующим образом в зависимости от доступного графического процессора (процессоров). Настройка VIDEO_CARDS не требуется при установке только для режима консоли.

Below is an example of a properly set VIDEO_CARDS variable. Substitute the name of the driver(s) to be used.

ФАЙЛ /etc/portage/make.conf
VIDEO_CARDS="amdgpu radeonsi"

Details for various GPU(s) can be found at the AMDGPU, Intel, Nouveau (Open Source), or NVIDIA (Proprietary) articles.

Необязательно: Настройка переменной ACCEPT_LICENSE

Starting with Gentoo Linux Enhancement Proposal 23 (GLEP 23), a mechanism was created to allow system administrators the ability to "regulate the software they install with regards to licenses... Some want a system free of any software that is not OSI-approved; others are simply curious as to what licenses they are implicitly accepting."[2] With a motivation to have more granular control over the type of software running on a Gentoo system, the ACCEPT_LICENSE variable was born.

Portage просматривает в ACCEPT_LICENSE, пакеты с какими лицензияи разрешены для установки. Чтобы вывести текущее системное значение, выполните команду:

user $portageq envvar ACCEPT_LICENSE
@FREE

Группы лицензий, определённые в Gentoo репозитории проектом Gentoo Licenses:

Название группы Описание
@GPL-COMPATIBLE Совместимые с GPL лицензии, одобренные Free Software Foundation [a_license 1]
@FSF-APPROVED Лицензии свободного ПО, одобренные FSF (включает @GPL-COMPATIBLE)
@OSI-APPROVED Лицензии, одобренные Open Source Initiative [a_license 2]
@MISC-FREE Различные лицензии, которые, вероятнее всего, тоже относятся к свободному ПО, то есть следуют Определению Свободного ПО [a_license 3], но не одобрены ни FSF, ни OSI
@FREE-SOFTWARE Сочетание @FSF-APPROVED, @OSI-APPROVED и @MISC-FREE
@FSF-APPROVED-OTHER Одобренные FSF лицензии для «свободной документации» и «работ для практического применения, не являющихся ПО или документацией» (включая шрифты)
@MISC-FREE-DOCS Различные лицензии для свободных документов и прочих работ (включая шрифты), следующие определению свободного произведения [a_license 4], но НЕ включены в @FSF-APPROVED-OTHER
@FREE-DOCUMENTS Сочетание @FSF-APPROVED-OTHER и @MISC-FREE-DOCS
@FREE Надмножество всех лицензий, обладающих свободой использования, распространения, изменения и распространения изменений. Сочетание @FREE-SOFTWARE и @FREE-DOCUMENTS
@BINARY-REDISTRIBUTABLE Лицензии, разрешающие по крайней мере свободное распространение ПО в двоичной форме. Включает в себя @FREE
@EULA Лицензионные соглашения, которые пытаются отобрать ваши права. Они более строги, чем «все права защищены», или могут требовать явного согласия.

Some common license groups include:

A list of software licenses grouped according to their kinds.
Name Description
@GPL-COMPATIBLE GPL compatible licenses approved by the Free Software Foundation [a_license 5]
@FSF-APPROVED Free software licenses approved by the FSF (includes @GPL-COMPATIBLE)
@OSI-APPROVED Licenses approved by the Open Source Initiative [a_license 6]
@MISC-FREE Misc licenses that are probably free software, i.e. follow the Free Software Definition [a_license 7] but are not approved by either FSF or OSI
@FREE-SOFTWARE Combines @FSF-APPROVED, @OSI-APPROVED, and @MISC-FREE.
@FSF-APPROVED-OTHER FSF-approved licenses for "free documentation" and "works of practical use besides software and documentation" (including fonts)
@MISC-FREE-DOCS Misc licenses for free documents and other works (including fonts) that follow the free definition [a_license 8] but are NOT listed in @FSF-APPROVED-OTHER.
@FREE-DOCUMENTS Combines @FSF-APPROVED-OTHER and @MISC-FREE-DOCS.
@FREE Metaset of all licenses with the freedom to use, share, modify and share modifications. Combines @FREE-SOFTWARE and @FREE-DOCUMENTS.
@BINARY-REDISTRIBUTABLE Licenses that at least permit free redistribution of the software in binary form. Includes @FREE.
@EULA License agreements that try to take away your rights. These are more restrictive than "all-rights-reserved" or require explicit approval

Currently set system wide acceptable license values can be viewed via:

user $portageq envvar ACCEPT_LICENSE
@FREE

As visible in the output, the default value is to only allow software which has been grouped into the @FREE category to be installed.

Specific licenses or licenses groups for a system can be defined in the following locations:

  • Для всей системы в выбранном профиле.
  • Для всей системы в файле /etc/portage/make.conf.
  • По-пакетно в файле /etc/portage/package.license.
  • По-пакетно в каталоге /etc/portage/package.license/ с файлами.

По желанию переопределите принятое в системе значение по умолчанию в профилях, изменив /etc/portage/make.conf. /etc/portage/make.conf.

ФАЙЛ /etc/portage/make.confПример разрешения лицензий с помощью ACCEPT_LICENSE в масштабах всей системы
ACCEPT_LICENSE="-* @FREE @BINARY-REDISTRIBUTABLE"

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

root #mkdir /etc/portage/package.license

Software license details for an individual Gentoo package are stored within the LICENSE variable of the associated ebuild. One package may have one or many software licenses, therefore it be necessary to specify multiple acceptable licenses for a single package.

ФАЙЛ /etc/portage/package.license/kernelПример по-пакетного разрешения лицензии
app-arch/unrar unRAR
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
sys-firmware/intel-microcode intel-ucode
Важно
Переменная LICENSE в ebuild-файле является только ориентиром для разработчиков и пользователей Gentoo. Она не является юридически значимым заявлением и не гарантирует, что условия использования соответствуют действительности. Не стоит доверять ей безоговорочно и при необходимости следует проводить полный аудит всех файлов, которые были установлены на системе.

Необязательно: Обновление набора @world

Это действие необходимо, чтобы система могла применить какие-либо обновления с момента сборки stage3 и обновления профиля:

  1. A profile target different from the stage file has been selected.
  2. Additional USE flags have been set for installed packages.

Readers who are performing an 'install Gentoo speed run' may safely skip @world set updates until after their system has rebooted into the new Gentoo environment.

Readers who are performing a slow run can have Portage perform updates for package, profile, and/or USE flag changes at the present time:

root #emerge --ask --verbose --update --deep --newuse @world

Удаление устаревших пакетов

It is important to always depclean after system upgrades to remove obsolete packages. Review the output carefully with emerge --depclean --pretend to see if any of the to-be-cleaned packages should be kept if personally using them. To keep a package which would otherwise be depcleaned, use emerge --noreplace foo.

root #emerge --ask --pretend --depclean

If happy, then proceed with a real depclean:

root #emerge --ask --depclean
Совет
Если до этого был выбран профиль для полноценной графической оболочки, процесс установки может занять значительное время. Оценить время установки очень просто: чем короче имя профиля, тем меньше будет набор @world; чем меньше набор @world, тем меньше пакетов системе потребуется. Другими словами:
  • При выборе default/linux/amd64/23.0 потребует обновления небольшого количества пакетов, когда как
  • При выборе default/linux/amd64/23.0/desktop/gnome/systemd потребует обновления гораздо большего числа пакетов, так как система инициализации поменяется с OpenRC на systemd, и будут установлены пакеты рабочего стола GNOME.


Часовой пояс

Заметка
Этот раздел неприменим к пользователям стандартной библиотеки C musl. Если вы не знаете, что это такое, то к вам это не относится и вы должны следовать этому разделу.
Предупреждение
Старайтесь не использовать часовые пояса, начинающиеся с /usr/share/zoneinfo/Etc/GMT*, так как их названия не отражают настоящий часовой пояс. Например, GMT-8 на самом деле является GMT+8.

Выберите часовой пояс для системы. Просмотрите список всех доступных часовых поясов в каталоге /usr/share/zoneinfo/:

root #ls -l /usr/share/zoneinfo
total 352
drwxr-xr-x 2 root root   1120 Jan  7 17:41 Africa
drwxr-xr-x 6 root root   2960 Jan  7 17:41 America
drwxr-xr-x 2 root root    280 Jan  7 17:41 Antarctica
drwxr-xr-x 2 root root     60 Jan  7 17:41 Arctic
drwxr-xr-x 2 root root   2020 Jan  7 17:41 Asia
drwxr-xr-x 2 root root    280 Jan  7 17:41 Atlantic
drwxr-xr-x 2 root root    500 Jan  7 17:41 Australia
drwxr-xr-x 2 root root    120 Jan  7 17:41 Brazil
-rw-r--r-- 1 root root   2094 Dec  3 17:19 CET
-rw-r--r-- 1 root root   2310 Dec  3 17:19 CST6CDT
drwxr-xr-x 2 root root    200 Jan  7 17:41 Canada
drwxr-xr-x 2 root root     80 Jan  7 17:41 Chile
-rw-r--r-- 1 root root   2416 Dec  3 17:19 Cuba
-rw-r--r-- 1 root root   1908 Dec  3 17:19 EET
-rw-r--r-- 1 root root    114 Dec  3 17:19 EST
-rw-r--r-- 1 root root   2310 Dec  3 17:19 EST5EDT
-rw-r--r-- 1 root root   2399 Dec  3 17:19 Egypt
-rw-r--r-- 1 root root   3492 Dec  3 17:19 Eire
drwxr-xr-x 2 root root    740 Jan  7 17:41 Etc
drwxr-xr-x 2 root root   1320 Jan  7 17:41 Europe
...
root #ls -l /usr/share/zoneinfo/Europe/
total 256
-rw-r--r-- 1 root root 2933 Dec  3 17:19 Amsterdam
-rw-r--r-- 1 root root 1742 Dec  3 17:19 Andorra
-rw-r--r-- 1 root root 1151 Dec  3 17:19 Astrakhan
-rw-r--r-- 1 root root 2262 Dec  3 17:19 Athens
-rw-r--r-- 1 root root 3664 Dec  3 17:19 Belfast
-rw-r--r-- 1 root root 1920 Dec  3 17:19 Belgrade
-rw-r--r-- 1 root root 2298 Dec  3 17:19 Berlin
-rw-r--r-- 1 root root 2301 Dec  3 17:19 Bratislava
-rw-r--r-- 1 root root 2933 Dec  3 17:19 Brussels
...

Предположим, что необходимо установить часовой пояс Europe/Brussels:

OpenRC

Мы записываем название часового пояса в файл /etc/timezone.

root #echo "Europe/Brussels" > /etc/timezone

Далее перенастроим пакет sys-libs/timezone-data, что обновит файл /etc/localtime, основываясь на записи в /etc/timezone. Файл /etc/localtime используется системной библиотекой C, чтобы узнать, в каком часовом поясе находится система.

root #emerge --config sys-libs/timezone-data
Заметка
The /etc/localtime file is used by the system C library to know the timezone the system is in.

systemd

При использовании systemd процесс немного отличается. Мы создаём символьную ссылку:

root #ln -sf ../usr/share/zoneinfo/Europe/Brussels /etc/localtime

Впоследствии, вы можете настроить часовой пояс и связанные настройки с помощью команды timedatectl.

Настройка локалей

Заметка
Этот раздел неприменим к пользователям musl libc. Если вы не знаете, что это такое, то к вам это не относится и вы должны следовать этому разделу.

Генерация локалей

Большинству пользователей достаточно иметь одну или две локали на своих системах.

Локаль указывает не только язык, который использует пользователь при взаимодействии с системой, но и правила для сортировки строк, формат вывода даты и времени, и так далее. Локали являются регистрозависимыми и должны использоваться так, как они описаны. Полный список доступных локалей можно найти в файле /usr/share/i18n/SUPPORTED.

Локали, поддерживаемые системой, должны быть указаны в /etc/locale.gen.

root #nano /etc/locale.gen

Следующие локали являются примером для создания английской (США) и русской (Россия) локалей с поддержкой формата символов (например, UTF-8).

ФАЙЛ /etc/locale.genВключение US и RU локалей с поддержкой формата символов
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
Предупреждение
Для сборки многих приложений наличие хотя бы одной локали с поддержкой UTF-8 является обязательным требованием.

Далее, запустим команду locale-gen, которая создаст все перечисленные в файле /etc/locale.gen локали.

root #locale-gen

Чтобы убедится, что выбранные локали теперь доступны, запустите команду locale -a.

На установках с systemd можно использовать localectl, т.е. команды localectl set-locale ... или localectl list-locales.

Выбор локали

Теперь настало время установить локаль для всей системы. И снова используется eselect для этого, только теперь с модулем locale.

Команда eselect locale list выведет список доступных локалей:

root #eselect locale list
Available targets for the LANG variable:
  [1]  C
  [2]  C.utf8
  [3]  en_US
  [4]  en_US.iso88591
  [5]  en_US.utf8
  [6]  de_DE
  [7]  de_DE.iso88591
  [8]  de_DE.utf8
  [9] POSIX
  [ ]  (free form)

Команда eselect locale set <NUMBER> установит необходимую локаль:

root #eselect locale set 2

Это всё ещё можно сделать вручную с помощью файла /etc/env.d/02locale (для systemd с помощью файла /etc/locale.conf):

ФАЙЛ /etc/env.d/02localeРучная настройка системной локали
LANG="ru_RU.UTF-8"
LC_COLLATE="C.UTF-8"

Установка локали предотвратит появление предупреждений и ошибок в процессе компиляции ядра и программ.

Заново перезагрузите окружение:

root #env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

Для получения дополнительных рекомендаций по выбору локали см. также руководство по локализации и статью UTF-8.





Необязательно: Установка файлов прошивки и/или микрокода

Файлы прошивки

Linux Firmware

Перед тем, как приступить к настройке ядра, полезно будет помнить, что некоторые аппаратные устройства требуют установки в систему дополнительной, иногда не совместимой с принципами FOSS (free (as in freedom) and open source software/свободное и открытое программное обеспечение), прошивки, прежде чем они будут работать правильно. Чаще всего это касается беспроводных сетевых интерфейсов, обычно встречающихся как в настольных, так и в портативных компьютерах. Современные видеочипы от таких производителей, как AMD, Nvidia и Intel также часто требуют установки внешней прошивки для обеспечения полной функциональности. Большинство прошивок для современных аппаратных устройств можно найти в пакете sys-kernel/linux-firmware.

Рекомендуется установить пакет sys-kernel/linux-firmware перед первоначальной перезагрузкой системы, чтобы прошивка была доступна в случае необходимости:

root #emerge --ask sys-kernel/linux-firmware
Заметка
Установка определённых пакетов прошивок часто требует принятия соответствующих лицензий на прошивку. При необходимости посетите раздел руководства о принятии лицензии для получения помощи.

Важно отметить, что символы ядра, собранные как модули (M), при загрузке ядром загружают связанные с ними файлы прошивок из файловой системы. Нет необходимости встраивать в двоичный образ ядра файлы прошивок для них.

Микрокод

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

Обновления микрокода для процессоров AMD распространяются в вышеупомянутом пакете sys-kernel/linux-firmware. Обновления микрокода для процессоров Intel находятся в пакете sys-firmware/intel-microcode, который необходимо установить отдельно. См. статью Микрокол для получения дополнительной информации о том, как применять обновления микрокода.

Конфигурация и компиляция ядра

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

От наименьшего вмешательства к наибольшему:

Полностью автоматический подход: Distribution-ядра
Проект Distribution Kernel используется для конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но по умолчанию включено) файла initramfs. Новые обновления ядра полностью автоматизированы, поскольку они обрабатываются через менеджер пакетов, как и любой другой системный пакет. В случае необходимости можно предоставить пользовательский конфигурационный файл ядра. Это наименее сложный процесс и идеально подходит для новых пользователей Gentoo, так как работает "из коробки" и требует минимального участия системного администратора.
Гибридный подход: Genkernel
Новые обновления ядра устанавливаются через системный менеджер пакетов. Системные администраторы могут использовать инструмент Gentoo genkernel для общей конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но не включено по умолчанию) файла initramfs. Можно предоставить пользовательский файл конфигурации ядра, если необходима кастомизация. Будущая конфигурация, сборка и установка ядра требуют участия системного администратора в виде выполнения eselect kernel, genkernel и, возможно, других команд для каждого обновления.
Полностью ручная настройка
Новые исходные тексты ядра устанавливаются с помощью системного менеджера пакетов. Ядро конфигурируется, собирается и устанавливается вручную с помощью команды eselect kernel и множества команд make. С новыми обновлениями ядра повторяется ручной процесс конфигурирования, сборки и установки файлов ядра. Это самый сложный процесс, но он обеспечивает максимальный контроль над процессом обновления ядра.

Основой, вокруг которой строятся все дистрибутивы, является ядро Linux. Оно является прослойкой между пользовательскими программами и аппаратным обеспечением системы. Хотя руководство предоставляет своим пользователям несколько возможных источников ядра, более подробная информация с более детальным описанием доступна на странице {{|Link|Kernel/Overview|Общие сведения о ядре}}.

Совет
Kernel installation tasks such as, copying the kernel image to /boot or the EFI System Partition, generating an initramfs and/or Unified Kernel Image, updating bootloader configuration, can be automated with installkernel. Users may wish to configure and install sys-kernel/installkernel before proceeding. See the Kernel installation section below for more more information.


Установка исходного кода ядра

Заметка
Этот раздел актуален только при использовании следующих методов genkernel (гибридного) или ручного подхода к управлению ядром.

The use of sys-kernel/installkernel is not strictly required, but highly recommended. When this package is installed, the kernel installation process will be delegated to installkernel. This allows for installing several different kernel versions side-by-side as well as managing and automating several tasks relating to kernel installation described later in the handbook. Install it now with:

root #emerge --ask sys-kernel/installkernel

При установке и компиляции ядра для систем на базе sparc Gentoo рекомендует использовать пакет sys-kernel/gentoo-sources.

Выберите подходящий исходный код ядра и установите его с помощью emerge:

root #emerge --ask sys-kernel/gentoo-sources

Данная команда установит исходный код ядра Linux в /usr/src/, используя в названии версию ядра. Эта команда не установит автоматически символьную ссылку, пока вы не укажете USE-флаг symlink для выбранного исходного кода ядра.

Обычно, символьная ссылка /usr/src/linux указывает на исходный код текущего работающего ядра. Однако, эта символьная ссылка не создаётся по умолчанию. Создать её поможет kernel модуль для eselect.

Чтобы подробнее узнать, зачем нужна эта символьная ссылка и как ею управлять, смотрите Kernel/Upgrade.

Для начала, просмотрите список установленных ядер (в виде исходного кода):

root #eselect kernel list
Available kernel symlink targets:
  [1]   linux-6.6.21-gentoo

Для того, чтобы создать символьную ссылку linux, используйте:

root #eselect kernel set 1
root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    20 мар  3 22:44 /usr/src/linux -> linux-6.6.21-gentoo

Альтернатива: Ручная настройка

Введение

Заметка
In case it was missed, this section requires the kernel sources to be installed. Be sure to obtain the relevant kernel sources, then return here for the rest of section.

Согласно расхожему мнению, настройка ядра — одна из наиболее сложных процедур, с которыми приходится сталкиваться администратору системы. Это совсем не так — после пары-тройки настроек не всякий вспомнит, что это было сложно!

Однако одна вещь является истиной: при ручной конфигурации ядра очень важно понимать свою систему. Большую часть сведений можно почерпнуть, установив пакет sys-apps/pciutils, который содержит в команду lspci:

root #emerge --ask sys-apps/pciutils
Заметка
Находясь внутри изолированного окружения chroot, можно спокойно игнорировать любые предупреждения pcilib (например, pcilib: cannot open /sys/bus/pci/devices), которые могут появляться в выводе lspci.

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

Остаётся перейти в каталог с ядром и выполнить make menuconfig, который запустит экран меню конфигурации.

root #cd /usr/src/linux
root #make menuconfig

В конфигурации ядра Linux есть много-много разделов. Сначала пройдёмся по пунктам, которые должны быть обязательно включены (иначе Gentoo будет работать неправильно или же вовсе не запустится). Также в вики есть Руководство по настройке ядра Gentoo, которое поможет понять более тонкие детали.

Включение обязательных параметров

При использовании sys-kernel/gentoo-sources, строго рекомендуется включить Gentoo-специфичные настройки. С помощью них включается необходимый минимум настроек ядра для корректной работы:

ЯДРО Включение Gentoo-специфичных настроек
Gentoo Linux --->
  Generic Driver Options --->
    [*] Gentoo Linux support
    [*]   Linux dynamic and persistent device naming (userspace devfs) support
    [*]   Select options required by Portage features
        Support for init systems, system and service managers  --->
          [*] OpenRC, runit and other script based systems and managers
          [*] systemd

Выбор в последних двух строках зависит от того, какую систему инициализации вы выбрали — OpenRC или systemd. Ничего страшного не случится, если вы включите поддержку обоих систем.

При использовании sys-kernel/vanilla-sources, этих вспомогательных настроек не будет. Вы можете включить нужные настройки вручную, но это выходит за рамки данного руководства.

Включение поддержки основных компонентов системы

Убедитесь, что все драйверы, необходимые для загрузки системы (такие как контроллер SATA, поддержка блочных устройств NVMe, поддержка файловой системы и другие) собраны прямо в ядре, а не в виде модуля. В противном случае, система может не загрузиться.

Далее следует выбрать тип процессора. Также рекомендуется включить возможности MCE (если они доступны), чтобы пользователи системы могли получать оповещение о любых проблемах с оборудованием. На некоторых архитектурах (например, x86_64) подобные ошибки выводятся не в dmesg, а в /dev/mcelog. А для него понадобится пакет app-admin/mcelog.

Также включите Maintain a devtmpfs file system to mount at /dev, чтобы критически важные файлы устройств были доступны на самом раннем этапе загрузки (CONFIG_DEVTMPFS и CONFIG_DEVTMPFS_MOUNT):

ЯДРО Включение поддержки devtmpfs (CONFIG_DEVTMPFS)
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Убедитесь, что поддержка SCSI-дисков включена (CONFIG_BLK_DEV_SD):

ЯДРО Включение поддержки SCSI-дисков (CONFIG_SCSI, CONFIG_BLK_DEV_SD)
Device Drivers --->
  SCSI device support  ---> 
    <*> SCSI device support
    <*> SCSI disk support
ЯДРО Включение базовой поддержки SATA и PATA (CONFIG_ATA_ACPI, CONFIG_SATA_PMP, CONFIG_SATA_AHCI, CONFIG_ATA_BMDMA, CONFIG_ATA_SFF, CONFIG_ATA_PIIX)
Device Drivers --->
  <*> Serial ATA and Parallel ATA drivers (libata)  --->
    [*] ATA ACPI Support
    [*] SATA Port Multiplier support
    <*> AHCI SATA support (ahci)
    [*] ATA BMDMA support
    [*] ATA SFF support (for legacy IDE and PATA)
    <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (ata_piix)

Убедитесь, что включена базовая поддержка NVMe:

ЯДРО Включение базовой поддержки NVMe для Linux 4.4.x (CONFIG_BLK_DEV_NVME)
Device Drivers  --->
  <*> NVM Express block device
ЯДРО Включение базовой поддержки NVMe для Linux 5.x.x (CONFIG_DEVTMPFS)
Device Drivers --->
  NVME Support --->
    <*> NVM Express block device

Не помешает включить следующую дополнительную поддержку NVMe:

ЯДРО Включение дополнительной поддержки NVMe (CONFIG_NVME_MULTIPATH, CONFIG_NVME_MULTIPATH, CONFIG_NVME_HWMON, CONFIG_NVME_FC, CONFIG_NVME_TCP, CONFIG_NVME_TARGET, CONFIG_NVME_TARGET_PASSTHRU, CONFIG_NVME_TARGET_LOOP, CONFIG_NVME_TARGET_FC, CONFIG_NVME_TARGET_FCLOOP, CONFIG_NVME_TARGET_TCP
[*] NVMe multipath support
[*] NVMe hardware monitoring
<M> NVM Express over Fabrics FC host driver
<M> NVM Express over Fabrics TCP host driver
<M> NVMe Target support
  [*]   NVMe Target Passthrough support
  <M>   NVMe loopback device support
  <M>   NVMe over Fabrics FC target driver
  < >     NVMe over Fabrics FC Transport Loopback Test driver (NEW)
  <M>   NVMe over Fabrics TCP target support

Теперь перейдите в раздел File Systems и выберите те файловые системы, которые планируете использовать. Файловая система, используемая в качестве корневой, должна быть включена в ядро (не модулем), иначе система не сможет подключить раздел при загрузке. Также включите Virtual memory и /proc file system. При необходимости выберите один или несколько параметров, необходимых системе:

ЯДРО Включение поддержки файловой системы (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_BTRFS_FS, CONFIG_XFS_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, и CONFIG_TMPFS)
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Btrfs filesystem support
  <*> XFS filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

Если для подключения к Интернету используется PPPoE или модемное соединение, то включите следующие параметры (CONFIG_PPP, CONFIG_PPP_ASYNC и CONFIG_PPP_SYNC_TTY):

ЯДРО Включение поддержки PPPoE (PPPoE, CONFIG_PPPOE, CONFIG_PPP_ASYNC, CONFIG_PPP_SYNC_TTY
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*> PPP over Ethernet
    <*> PPP support for async serial ports
    <*> PPP support for sync tty ports

Два параметра сжатия не повредят, но и не являются обязательными, как и PPP over Ethernet. Фактически, последний используется в случае, если ppp сконфигурирован на использование ядерный PPPoE режим.

Не забудьте настроить поддержку сетевых карт (Ethernet или беспроводных).

Поскольку большинство современных систем являются многоядерными, важно включить Symmetric multi-processing support (CONFIG_SMP):

ЯДРО Включение поддержки SMP (CONFIG_SMP)
Processor type and features  --->
  [*] Symmetric multi-processing support
Заметка
Во многоядерных системах каждое ядро считается за один процессор.

Если используются USB-устройства ввода (например, клавиатура и мышь) или другие устройства, то не забудьте включить и эти параметры:

ЯДРО Включение поддержки USB и HID(CONFIG_HID_GENERIC, CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD, (CONFIG_HID_GENERIC, CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD, CONFIG_USB4)
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support
  <*> Unified support for USB4 and Thunderbolt  --->

Optional: Signed kernel modules

To automatically sign the kernel modules enable CONFIG_MODULE_SIG_ALL:

ЯДРО Sign kernel modules CONFIG_MODULE_SIG_ALL
[*] Enable loadable module support  
  -*-   Module signature verification    
    [*]     Automatically sign all modules    
    Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->

Optionally change the hash algorithm if desired.

To enforce that all modules are signed with a valid signature, enable CONFIG_MODULE_SIG_FORCE as well:

ЯДРО Enforce signed kernel modules CONFIG_MODULE_SIG_FORCE
[*] Enable loadable module support  
  -*-   Module signature verification    
    [*]     Require modules to be validly signed
    [*]     Automatically sign all modules
    Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->

To use a custom key, specify the location of this key in CONFIG_MODULE_SIG_KEY, if unspecified the kernel build system will generate a key. It is recommended to generate one manually instead. This can be done with:

root #openssl req -new -nodes -utf8 -sha256 -x509 -outform PEM -out kernel_key.pem -keyout kernel_key.pem

OpenSSL will ask some questions about the user generating the key, it is recommended to fill in these questions as detailed as possible.

Store the key in a safe location, at the very least the key should be readable only by the root user. Verify this with:

root #ls -l kernel_key.pem
 -r-------- 1 root root 3164 Jan  4 10:38 kernel_key.pem 

If this outputs anything other then the above, correct the permissions with:

root #chown root:root kernel_key.pem
root #chmod 400 kernel_key.pem
ЯДРО Specify signing key CONFIG_MODULE_SIG_KEY
-*- Cryptographic API  ---> 
  Certificates for signature checking  --->  
    (/path/to/kernel_key.pem) File name or PKCS#11 URI of module signing key

To also sign external kernel modules installed by other packages via linux-mod-r1.eclass, enable the modules-sign USE flag globally:

ФАЙЛ /etc/portage/make.confEnable module signing
USE="modules-sign"
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Optionally, when using custom signing keys.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Only required if the MODULES_SIGN_KEY does not also contain the certificate
MODULES_SIGN_HASH="sha512" # Defaults to sha512
Заметка
The MODULES_SIGN_KEY and MODULES_SIGN_CERT may be different files. For this example the pem file generated by OpenSSL includes both the key and the accompanying certificate, and thus both variables are set to the same value.

Optional: Signing the kernel image (Secure Boot)

When signing the kernel image (for use on systems with Secure Boot enabled) it is recommended to set the following kernel config options:

ЯДРО Lockdown for secureboot
General setup  --->
  Kexec and crash features  --->   
    [*] Enable kexec system call                                                                                          
    [*] Enable kexec file based system call                                                                               
    [*]   Verify kernel signature during kexec_file_load() syscall                                                        
    [*]     Require a valid signature in kexec_file_load() syscall                                                        
    [*]     Enable ""image"" signature verification support
</div>  

[*] Enable loadable module support  
  -*-   Module signature verification    
    [*]     Require modules to be validly signed
    [*]     Automatically sign all modules
    Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->  

Security options  ---> 
[*] Integrity subsystem   
  [*] Basic module for enforcing kernel lockdown                                                                       
  [*]   Enable lockdown LSM early in init                                                                       
        Kernel default lockdown mode (Integrity)  --->            

  [*]   Digital signature verification using multiple keyrings                                                            
  [*]     Enable asymmetric keys support                                                                                     
  -*-       Require all keys on the integrity keyrings be signed                                                              
  [*]       Provide keyring for platform/firmware trusted keys                                                                
  [*]       Provide a keyring to which Machine Owner Keys may be added                                                        
  [ ]         Enforce Machine Keyring CA Restrictions

Where ""image"" is a placeholder for the architecture specific image name. These options, from the top to the bottom: enforces that the kernel image in a kexec call must be signed (kexec allows replacing the kernel in-place), enforces that kernel modules are signed, enables lockdown integrity mode (prevents modifying the kernel at runtime), and enables various keychains.

On arches that do not natively support decompressing the kernel (e.g. arm64 and riscv), the kernel must be built with its own decompressor (zboot):

ЯДРО zboot CONFIG_EFI_ZBOOT
Device Drivers --->                                                                                                                           
  Firmware Drivers --->                                                                                                                       
    EFI (Extensible Firmware Interface) Support --->                                                                                               
      [*] Enable the generic EFI decompressor

After compilation of the kernel, as explained in the next section, the kernel image must be signed. First install app-crypt/sbsigntools and then sign the kernel image:

root #emerge --ask app-crypt/sbsigntools
root #sbsign /usr/src/linux-x.y.z/path/to/kernel-image --cert /path/to/kernel_key.pem --key /path/to/kernel_key.pem --out /usr/src/linux-x.y.z/path/to/kernel-image
Заметка
For this example the same key that was generated to sign the modules is used to sign the kernel image. It is also possible to generate and use a second sperate key for signing the kernel image. The same OpenSSL command as in the previous section may be used again.

Then proceed with the installation.

To automatically sign EFI executables installed by other packages, enable the secureboot USE flag globally:

ФАЙЛ /etc/portage/make.confEnable Secure Boot
USE="modules-sign secureboot"
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Optionally, to use custom signing keys.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Only required if the MODULES_SIGN_KEY does not also contain the certificate.
MODULES_SIGN_HASH="sha512" # Defaults to sha512
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Optionally, to boot with secureboot enabled, may be the same or different signing key.
SECUREBOOT_SIGN_KEY="/path/to/kernel_key.pem"
SECUREBOOT_SIGN_CERT="/path/to/kernel_key.pem"
Заметка
The SECUREBOOT_SIGN_KEY and SECUREBOOT_SIGN_CERT may be different files. For this example the pem file generated by OpenSSL includes both the key and the accompanying certificate, and thus both variables are set to the same value.
Заметка
When generating an Unified Kernel Image with systemd's ukify the kernel image will be signed automatically before inclusion in the unified kernel image and it is not necessary to sign it manually.


Конфигурация, специфичная для архитектуры

Включите поддержку правильной шины:

ЯДРО Включение SBUS/UPA
Console drivers --->
  Frame-buffer support --->
    [*] SBUS and UPA framebuffers             
      [*] Creator/Creator3D support     (Только для адаптера типа UPA, используемого во многих системах Ultra)
    [*] CGsix (GX,TurboGX) support      (Только для адаптера типа SBUS, используемого во многих системах SPARC)

Конечно, включите поддержку OBP:

ЯДРО Включение поддержки OBP
Misc Linux/SPARC drivers --->
  [*]  /dev/openprom device support

Включите поддержку SCSI:

ЯДРО Включение поддержки SCSI
SCSI support --->
  SCSI low-level drivers --->
    <*> Sparc ESP Scsi Driver             (Только для встроенных SCSI-адаптеров SPARC ESP)
    <*> PTI Qlogic, ISP Driver            (Только для контроллеров SBUS SCSI от PTI или QLogic)
    <*> SYM53C8XX Version 2 SCSI support  (Только для встроенных SCSI-адаптеров Ultra 60)

Для поддержки сетевой карты выберите одну из следующего списка:

ЯДРО Включение поддержки сети
Network device support --->
  Ethernet (10 or 100Mbit) --->
    <*> Sun LANCE support                   (Только для SPARCStation, устаревших систем Ultra и варианта Sbus)
    <*> Sun Happy Meal 10/100baseT support  (Только для систем Ultra; также поддерживает "qfe" quad-ethernet на PCI и Sbus)
    <*> DECchip Tulip (dc21x4x) PCI support (Для некоторых систем Netras, вроде N1)
  Ethernet (1000Mbit) --->
    <*> Broadcom Tigon3 support (Современные Netra, компьютеры Sun Fire)

У четырёхпортового Ethernet компьютера (10/100 или 10/100/1000) порядок портов отличается от используемого в Solaris. Используйте sys-apps/ethtool для проверки состояния порта.

Если используется контроллер диска qla2xxx, установите sys-block/qla-fc-firmware и добавьте поддержку загрузки внешней прошивки.


ЯДРО Включение внешней прошивки
Device Drivers  --->
   Generic Driver Options  --->
   ()  External firmware blobs to build into the kernel binary
   ()  Firmware blobs root directory

Установите «External firmware blobs» в ql2200_fw.bin и «Firmware blobs root directory» в /lib/firmware/.

Компиляция и установка

Когда настройка закончена, настало время скомпилировать и установить ядро. Выйдите из настройки и запустите процесс компиляции:

root #make && make modules_install
Заметка
Можно включить параллельную сборку, используя make -j N, где N — это целой число параллельных задач, которые может запустить процесс сборки. Это похоже на инструкции, которые были даны ранее относительно файла /etc/portage/make.conf в части переменной MAKEOPTS

Когда ядро будет скомпилировано, проверьте размер получившегося файла:

root #ls -lh arch/sparc/boot/image
-rw-r--r--    1 root     root         2.4M Oct 25 14:38 image

Если размер несжатого ядра больше чем 7,5 МБ, перенастройте ваше ядро так, чтобы оно не превышало этих пределов. Одним из путей достижения этого является компиляция большинства драйверов ядра как модулей. Игнорирование этого может привести к незагружаемому ядру.

Также если ядро чуть-чуть больше чем необходимо, можно попробовать уменьшить его при помощи команды strip:

root #strip -R .comment -R .note arch/sparc/boot/image

Наконец, скопируйте образ ядра в /boot/.

root #cp arch/sparc/boot/image /boot/kernel-6.6.21-gentoo


Альтернатива: Genkernel

Заметка
In case it was missed, this section requires the kernel sources to be installed. Be sure to obtain the relevant kernel sources, then return here for the rest of section.

Genkernel should only be considered by users that have a required need that only Genkernel can meet, otherwise it is recommended to use the Distribution kernel or manually compile your own as it will make maintaining a Gentoo system a lot more simple. An example of why genkernel is more difficult to manage is the lack of integration with sys-kernel/installkernel. This means a user will not get the same level of automation as provided by the other methods, such as Unified Kernel Images will need to be created manually when using Genkernel.

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

Учтите: хотя использование genkernel для поддержки ядра обеспечивает системным администраторам больший контроль над обновлением ядра системы, initramfs и других опций, это требует затрат времени и усилий для выполнения будущих обновлений ядра по мере выпуска новых источников. Тем, кто ищет автоматический подход к обслуживанию ядра, следует использовать distribution-ядра.

Для большей ясности, это является заблуждением, что genkernel автоматически генерирует специальную конфигурацию ядра для оборудования, на котором он запущен; он использует определённую конфигурацию ядра, которая поддерживает большинство оборудования и автоматически обрабатывает команды make, необходимые для сборки и установки ядра, сопутствующих модулей и файла initramfs.

Группа лицензий на "программное обеспечение, распространяемое в бинарном виде"

Если пакет linux-firmware был уже установлен, перейдите к разделу установки.

Поскольку по умолчанию для пакета sys-kernel/genkernel включен USE-флаг firwmare, пакетный менеджер также попытается установить пакет sys-kernel/linux-firmware. Перед установкой linux-firmware необходимо принять лицензии на "программное обеспечение, распространяемое в бинарном виде".

Эта группа лицензий может быть принята для всей системы путем добавления @BINARY-REDISTRIBUTABLE в переменную ACCEPT_LICENSE в файле /etc/portage/make.conf. Лицензия также может быть принята только для пакета linux-firmware с помощью добавления в файле /etc/portage/package.license/linux-firmware.

При необходимости ознакомьтесь с методами разрешения лицензий на программное обеспечение, о которых говорится в главе руководства Установка базовой системы , а затем внесите некоторые изменения для допустимых лицензий на программное обеспечение.

Для упрощения, примеры разрешения лицензий:

root #mkdir /etc/portage/package.license
ФАЙЛ /etc/portage/package.license/linux-firmwareРазрешения лицензий на "программное обеспечение, распространяемое в бинарном виде" для linux-firmware
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE

Установка

Итак, установите пакет sys-kernel/genkernel:

root #emerge --ask sys-kernel/genkernel

Генерация

Скомпилируйте исходные тексты ядра, выполнив команду genkernel all. Имейте в виду, что, поскольку genkernel компилирует ядро, поддерживающее широкий набор аппаратных средств для различных архитектур компьютеров, процесс компиляции может занять довольно много времени.

Заметка
Если для корневого раздела/тома используется файловая система, отличная от ext4, может потребоваться вручную настроить ядра с помощью genkernel --menuconfig all, чтобы добавить встроенную поддержку ядра для данной файловой системы (т.е. не собирать файловую систему как модуль).
Заметка
Пользователи LVM2 должны добавить --lvm в качестве аргумента к команде genkernel ниже
.
root #genkernel --mountboot --install all

По завершению работы genkernel будут сформированы ядро, полный набор модулей и файловая система инициализации (initramfs). Ядро и initrd нам понадобятся позднее. Запишите название файлов ядра и initrd, так как они нам понадобятся при настройке загрузчика. Initrd запускается сразу после ядра для определения оборудования (как при загрузке установочного CD), перед запуском самой системы.

После завершения работы genkernel, ядро и начальная файловая система ram (initramfs) будут сформированы и установлены в каталог /boot. Соответствующие модули будут установлены в каталог /lib/modules. initramfs будет запущена сразу после загрузки ядра для автоматического определения оборудования (как при загрузке "живого" (live) загрузочного диска).

root #ls /boot/vmlinu* /boot/initramfs*
root #ls /lib/modules

Kernel installation

Installkernel

Installkernel may be used to automate, the kernel installation, initramfs generation, unified kernel image generation and/or bootloader configuration among other things. sys-kernel/installkernel implements two paths of achieving this: the traditional installkernel originating from Debian and systemd's kernel-install. Which one to choose depends, among other things, on the system's bootloader. By default systemd's kernel-install is used on systemd profiles, while the traditional installkernel is the default for other profiles.

If unsure, follow the 'Traditional layout' subsection below.

systemd-boot

When using systemd-boot (formerly gummiboot) as the bootloader, systemd's kernel-install must be used. Therefore ensure the systemd and the systemd-boot USE flags are enabled on sys-kernel/installkernel, and then install the relevant package for systemd-boot.

On OpenRC systems:

ФАЙЛ /etc/portage/package.use/systemd-boot
sys-apps/systemd-utils boot kernel-install
sys-kernel/installkernel systemd systemd-boot
root #emerge --ask sys-apps/systemd-utils

On systemd systems:

ФАЙЛ /etc/portage/package.use/systemd
sys-apps/systemd boot
sys-kernel/installkernel systemd-boot
root #emerge --ask sys-apps/systemd

GRUB

Users of GRUB can use either systemd's kernel-install or the traditional Debian installkernel. The systemd USE flag switches between these implementations. To automatically run grub-mkconfig when installing the kernel, enable the grub USE flag.

ФАЙЛ /etc/portage/package.use/installkernel
sys-kernel/installkernel grub
root #emerge --ask sys-kernel/installkernel

Traditional layout, other bootloaders (e.g. lilo, etc.)

The traditional /boot layout (for e.g. LILO, etc.) is used by default if the grub, systemd-boot and uki USE flags are not enabled. No further action is required.


Building an initramfs

In certain cases it is necessary to build an initramfs - an initial ram-based file system. The most common reason is when important file system locations (like /usr/ or /var/) are on separate partitions. With an initramfs, these partitions can be mounted using the tools available inside the initramfs. The default configuration of the Project:Distribution Kernel requires an initramfs.

Without an initramfs, there is a risk that the system will not boot properly as the tools that are responsible for mounting the file systems require information that resides on unmounted file systems. An initramfs will pull in the necessary files into an archive which is used right after the kernel boots, but before the control is handed over to the init tool. Scripts on the initramfs will then make sure that the partitions are properly mounted before the system continues booting.

Важно
If using genkernel, it should be used for both building the kernel and the initramfs. When using genkernel only for generating an initramfs, it is crucial to pass --kernel-config=/path/to/kernel.config to genkernel or the generated initramfs may not work with a manually built kernel. Note that manually built kernels go beyond the scope of support for the handbook. See the kernel configuration article for more information.

Installkernel can automatically generate an initramfs when installing the kernel if the dracut USE flag is enabled:

ФАЙЛ /etc/portage/package.use/installkernel
sys-kernel/installkernel dracut

Alternatively, dracut may be called manually to generate an initramfs. Install sys-kernel/dracut first, then have it generate an initramfs:

root #emerge --ask sys-kernel/dracut
root #dracut --kver=6.6.21-gentoo

The initramfs will be stored in /boot/. The resulting file can be found by simply listing the files starting with initramfs:

root #ls /boot/initramfs*

Optional: Building an Unified Kernel Image

An Unified Kernel Image (UKI) combines, among other things, the kernel, the initramfs and the kernel command line into a single executable. Since the kernel command line is embedded into the unified kernel image it should be specified before generating the unified kernel image (see below). Note that any kernel command line arguments supplied by the bootloader or firmware at boot are ignored when booting with secure boot enabled.

An unified kernel image requires a stub loader, currently the only one available is systemd-stub. To enable it:

For systemd systems:

ФАЙЛ /etc/portage/package.use/systemd
sys-apps/systemd boot

For OpenRC systems:

ФАЙЛ /etc/portage/package.use/systemd-utils
sys-apps/systemd-utils boot

Installkernel can automatically generate an unified kernel image using either dracut or ukify, by enabling the respective flag. The uki USE flag should be enabled as well to install the generated unified kernel image to the $ESP/EFI/Linux directory on the EFI system partition (ESP).

For dracut:

ФАЙЛ /etc/portage/package.use/installkernel
sys-kernel/installkernel dracut uki
ФАЙЛ /etc/dracut.conf
uefi="yes"
kernel_cmdline="some-kernel-command-line-arguments"

For ukify:

ФАЙЛ /etc/portage/package.use/installkernel
sys-kernel/installkernel dracut ukify uki
ФАЙЛ /etc/kernel/cmdline
some-kernel-command-line-arguments

Note that while dracut can generate both an initramfs and an unified kernel image, ukify can only generate the latter and therefore the initramfs must be generated separately with dracut.

Generic Unified Kernel Image

The prebuilt sys-kernel/gentoo-kernel-bin can optionally install a prebuilt generic unified kernel image containing a generic initramfs that is able to boot most systemd based systems. It can be installed by enabling the generic-uki USE flag, and configuring installkernel to not generate a custom initramfs or unified kernel image:

ФАЙЛ /etc/portage/package.use/generic-uki
sys-kernel/gentoo-kernel-bin generic-uki
sys-kernel/installkernel -dracut -ukify uki

Secure Boot

The generic Unified Kernel Image optionally distributed by sys-kernel/gentoo-kernel-bin is already pre-signed. How to sign a locally generated unified kernel image depends on whether dracut or ukify is used. Note that the location of the key and certificate should be the same as the SECUREBOOT_SIGN_KEY and SECUREBOOT_SIGN_CERT as specified in /etc/portage/make.conf.

For dracut:

ФАЙЛ /etc/dracut.conf
uefi="yes"
kernel_cmdline="some-kernel-command-line-arguments"
uefi_secureboot_key="/path/to/kernel_key.pem"
uefi_secureboot_cert="/path/to/kernel_key.pem"

For ukify:

ФАЙЛ /etc/kernel/uki.conf
[UKI]
SecureBootPrivateKey=/path/to/kernel_key.pem
SecureBootCertificate=/path/to/kernel_key.pem

Rebuilding external kernel modules

External kernel modules installed by other packages via linux-mod-r1.eclass must be rebuilt for each new kernel version. When the distribution kernels are used this may be automated by enabling the dist-kernel flag globally.

ФАЙЛ /etc/portage/package.use/module-rebuild
*/* dist-kernel

External kernel modules may also be rebuilt manually with:

root #emerge --ask @module-rebuild

Модули ядра

Список доступных модулей ядра

Заметка
Модули оборудования не обязательно указывать вручную. В большинстве случаев, udev автоматически загрузит все необходимые модуля для обнаруженных устройств. Однако, не будет никакого вреда, если добавить автоматически загружаемые модули в список. Модули не могут быть загружены дважды; они либо загружаются, либо выгружаются. Иногда очень специфическим устройствам необходима помощь, чтобы загрузить их драйвера.

Модули, которые должны загружаться при каждой загрузке, могут быть добавлены в файлы /etc/modules-load.d/*.conf, по одному модулю в строке. Если для модулей необходимы дополнительные параметры, их следует указывать в файлах /etc/modprobe.d/*.conf.

Чтобы просмотреть все модули, доступные для определённой версии ядра, выполните следующую команду find. Не забудьте заменить "<kernel version>" на соответствующую версию ядра для поиска:

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

Принудительная загрузка отдельных модулей ядра

Чтобы принудительно загрузить в систему модуль 3c59x.ko (драйвер для определённого семейства сетевых карт от 3Com), отредактируйте файл /etc/modules-load.d/network.conf и добавьте туда имя модуля.

root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf

Обратите внимание, что суффикс в имени файла модуля .ko несущественен для механизма загрузки и не включается в файл:

ФАЙЛ /etc/modules-load.d/network.confПринудительная загрузка модуля 3c59x
3c59x

Продолжите установку с раздела Настройка системы.





Информация о файловой системе

Метки файловых систем и UUID

И MBR (BIOS), и GPT поддерживают как метки (labels), так и UUID файловой системы. Эти свойства могут быть определены в /etc/fstab в качестве альтернативы для команды mount для определения блочного устройства. Такие свойства используются при попытке найти и примонтировать блочные устройства. Метки и UUID файловой системы определяются через префиксы LABEL и UUID. Их можно посмотреть командой blkid:

root #blkid
Предупреждение
Если файловая система внутри раздела будет полностью затёрта (wipe), то значение меток и UUID файловой системы также будут изменены или удалены.

Благодаря уникальности UUID, читателям, использующим таблицу разделов в стиле MBR, рекомендуется использовать UUID вместо меток для определения монтируемых томов в /etc/fstab.

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

Метки разделов и UUID

У пользователей, которые пошли по пути использования GPT, есть несколько более надёжных вариантов для определения разделов в /etc/fstab. Метки разделов и UUID разделов могут быть использованы для идентификации разделов блочного устройства, независимо от того, какая файловая система была выбрана для самого раздела. Метки и UUID раздела определяются через префиксы PARTLABEL и PARTUUID соответственно. Их можно увидеть в терминале с помощью команды blkid:

Output for an amd64 EFI system using the Discoverable Partition Specification UUIDs may like the following:

root #blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2023-08-28-03-54-40-00" LABEL="ISOIMAGE" TYPE="iso9660" PTTYPE="PMBR"
/dev/loop0: TYPE="squashfs"
/dev/sda2: PARTUUID="0657fd6d-a4ab-43c4-84e5-0933c84b4f4f"
/dev/sda3: PARTUUID="1cdf763a-5b4c-4dbf-99db-a056c504e8b2"
/dev/sda1: PARTUUID="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"

Хотя это не всегда верно для меток разделов, использование UUID для идентификации раздела в fstab обеспечивает гарантию того, что загрузчик не собьётся при поиске определённого тома, даже если файловая система будет изменена в будущем. Использование по умолчанию старых файлов блочных устройств (/dev/sd*N) для определения разделов в fstab будет рискованно в системах, которые часто перезагружаются и в которых регулярно добавляются и удаляются блочные устройства SATA.

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

О файле fstab

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

Создание файла fstab

Заметка
If the init system being used is systemd, the partition UUIDs conform to the Discoverable Partition Specification as given in Preparing the disks, and the system uses UEFI, then creating an fstab can be skipped, since systemd auto-mounts partitions that follow the spec.

В файле /etc/fstab используется синтаксис, напоминающий таблицу. Каждая строка состоит из шести полей, которые разделены пропусками (пробелами, отступами или смесь этого). Каждое поле имеет своё значение:

  1. Первое поле содержит блочное устройство (или удалённую файловую систему), которое следует примонтировать. Для экземпляров блочных устройств возможно использование различных идентификаторов, включая путь к устройству, метки файловой системы, метки раздела и UUID
  2. Второе поле содержит точку монтирования, к которой следует монтировать раздел.
  3. Третье поле содержит тип файловой системы, используемой разделом.
  4. Четвёртое поле содержит параметры, используемые командой mount во время монтирования. Так как у каждой файловой системы могут быть собственные уникальные параметры, рекомендуется прочитать man-страницу команды mount (man mount), чтобы получить полный список всех возможных параметров. Параметры монтирования разделяются запятыми.
  5. Пятое поле используется командой dump для определения того, нуждается ли раздел в дампе или нет. Обычно это поле содержит 0 (ноль).
  6. Шестое поле используется командой fsck для определения порядка проведения проверки ошибок файловой системы, если система была отключена некорректно. Для корневой файловой системы необходимо указывать 1, для остальных — 2 (или 0, если проверка не требуется вовсе).
Важно
Файл /etc/fstab, который предоставляется в файлах stage Gentoo по умолчанию, не является валидным файлом fstab, а представлен в качестве шаблона, который может быть использован для ввода актуальных значений.
root #nano /etc/fstab

DOS/Legacy BIOS systems


Добавьте правила, которые соответствуют ранее запланированной схеме разметки диска, а также правила для таких устройств, как компакт-диски, и других устройств (если они есть в системе).

Ниже приведён более подробный пример файла /etc/fstab:

ФАЙЛ /etc/fstabПолный пример /etc/fstab
# Исправьте все различия в форматировании и добавьте дополнительные разделы, созданные на этапе "Подготовка дисков".

/dev/sda2   none         swap    sw                   0 0
/dev/sda1   /            xfs    defaults,noatime              0 1
  
/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

/dev/cdrom /mnt/cdrom auto noauto,user 0 0 }}

UEFI systems

Below is an example of an /etc/fstab file for a system that will boot via UEFI firmware:

ФАЙЛ /etc/fstabA full /etc/fstab example for an UEFI system
# Adjust for any formatting differences and/or additional partitions created from the "Preparing the disks" step
                    0 2
/dev/sda2   none             sw                   0 0
/dev/sda1   /            xfs    defaults,noatime              0 1
</div>

/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

DPS UEFI PARTUUID

Below is an example of an /etc/fstab file for a disk formatted with a GPT disklabel and Discoverable Partition Specification (DPS) UUIDs set for UEFI firmware:

ФАЙЛ /etc/fstabGPT disklabel DPS PARTUUID fstab example
# Adjust any formatting difference and additional partitions created from the "Preparing the disks" step.
# This example shows a GPT disklabel with Discoverable Partition Specification (DSP) UUID set:
PARTUUID=                                  0 2
PARTUUID=   none            sw                           0 0
PARTUUID=   /           xfs    defaults,noatime              0 1

При использовании auto в третьем поле команда mount попытается автоматически определить тип файловой системы. Это рекомендуется для отсоединяемых устройств, которые могут использовать разные файловые системы. Параметр user в четвертом поле позволяет монтировать компакт-диски обычными пользователями.

To improve performance, most users would want to add the noatime mount option, which results in a faster system since access times are not registered (those are not needed generally anyway). This is also recommended for systems with solid state drives (SSDs). Users may wish to consider lazytime instead.

Совет
Из–за ухудшения производительности, не рекомендуется устанавливать опцию монтирования discard в /etc/fstab. Вместо этого планируйте удаление блоков на периодической основе с помощью планировщика заданий, такого, как cron, или с помощью таймера (systemd). Смотрите статью Periodic fstrim jobs для более подробной информации.

Дважды проверьте файл /etc/fstab, сохраните его и выйдите из редактора, чтобы продолжить дальше.

Информация о сети

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

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

Для более конкретной настройки сети systemd, пожалуйста, обратитесь к разделу Сеть статьи systemd.

Имя хоста

Первое решение, которое предстоит принять администратору системы, это как назвать его/её компьютер. Кажется, что это является довольно лёгким решением, но многие пользователи испытывают трудности с поиском подходящего имени для своего компьютера. Чтобы не мешкать слишком долго, выберите любое имя — его можно будет сменить позже. Например, в приведённом ниже примере используется имя хоста tux.

Установка имени хоста (OpenRC или systemd)

root #echo tux > /etc/hostname

systemd

Чтобы установить имя хоста для системы с уже запущенным systemd, можно воспользоваться утилитой hostnamectl.

Например, чтобы установить имя хоста на "tux", необходимо запустить:

root #hostnamectl hostname tux

Просмотрите помощь, используя команду hostnamectl --help или man 1 hostnamectl.

Сеть

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

DHCP через dhcpcd (любая система инициализации)

В большинстве локальных сетей работает сервер DHCP. В этом случае для получения IP-адреса рекомендуется использовать программу dhcpcd.

Чтобы установить:

root #emerge --ask net-misc/dhcpcd

Чтобы включить и затем запустить сервис на системах с OpenRC:

root #rc-update add dhcpcd default
root #rc-service dhcpcd start

Чтобы включить сервис на системах с systemd:

root #systemctl enable dhcpcd

После выполнения этих шагов при следующей загрузке системы dhcpcd должен получить IP-адрес от DHCP-сервера. Подробнее см. в статье Dhcpcd.

netifrc (OpenRC)

Совет
Это один конкретный способ настройки сети, используя Netifrc с OpenRC. Существуют и другие способы для более простой настройки, такие как Dhcpcd.
Настройка сети

Во время установки Gentoo Linux сеть была уже настроена, однако она была настроена для самого установочного окружения, а не для системы. Сейчас мы устраним это упущение.

Заметка
Больше информации о настройке сети, в том числе об объединении интерфейсов, создании мостов, настройке 802.1Q VLAN и беспроводной сети, рассматриваются в разделе Настройка сети.

Все настройки сети собраны в файле /etc/conf.d/net. В нём используется простой, но, возможно, пока ещё непонятный синтаксис. Не беспокойтесь! Обо всём мы расскажем далее. Полностью документированные примеры, описывающие множество разных конфигураций, доступны в /usr/share/doc/netifrc-*/net.example.bz2.

Сначала установите net-misc/netifrc:

root #emerge --ask --noreplace net-misc/netifrc

По умолчанию используется DHCP. Но для того, чтобы он заработал, необходимо установить DHCP-клиент. Это будет описано далее в разделе «Установка необходимым системных пакетов».

Если сетевое соединение требует дополнительной настройки DHCP или вовсе не использует DHCP, тогда откройте /etc/conf.d/net:

root #nano /etc/conf.d/net

Настройте оба параметра config_eth0 и routes_eth0, введя информацию о IP-адресе и информацию о маршрутизации:

Заметка
Мы предполагаем, что сетевой интерфейс будет называться eth0, однако это во многом зависит от системы. Будем считать, что интерфейс будет называться так же, как он назывался при загрузке с установочного носителя, если установочный носитель достаточно свежий. Больше информации можно найти в разделе Именование сетевых интерфейсов.
ФАЙЛ /etc/conf.d/netНастройка статического IP-адреса
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"

Для использования DHCP настройте config_eth0:

ФАЙЛ /etc/conf.d/netНастройка для работы DHCP
config_eth0="dhcp"

Для получения списка дополнительных настроек прочтите /usr/share/doc/netifrc-*/net.example.bz2. Не забудьте также прочитать man-страницу для DHCP-клиента, если требуется сделать дополнительные настройки.

Если в системе имеются несколько сетевых интерфейсов, то повторите предыдущие шаги для config_eth1, config_eth2, и так далее.

Теперь сохраните настройки и выйдите из редактора, чтобы продолжить далее.

Автоматический запуск сетевого подключения при загрузке системы

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

root #cd /etc/init.d
root #ln -s net.lo net.eth0
root #rc-update add net.eth0 default

Если в системе есть несколько сетевых интерфейсов, то соответствующие файлы net.* должны быть созданы также, как мы сделали это для net.eth0.

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

  1. Измените настройки в файле /etc/conf.d/net, используя правильное название интерфейса (например, enp3s0 или enp5s0 вместо eth0).
  2. Создайте новую символьную ссылку (например, /etc/init.d/net.enp3s0).
  3. Удалите старую символьную ссылку (rm /etc/init.d/net.eth0).
  4. Добавьте новую в уровень запуска по умолчанию.
  5. Удалите старую с помощью rc-update del net.eth0 default.

Файл hosts

Следующим шагом мы дадим Linux сведения о сетевом окружении. Это делается с помощью /etc/hosts, который помогает разрешать имя узла в IP-адреса для узлов, которых нет в сервере имён.

root #nano /etc/hosts
ФАЙЛ /etc/hostsВнесение сетевой информации
# Это обязательные настройки для текущей системы
127.0.0.1     tux.homenetwork tux localhost
  
# Дополнительные настройки для других систем в сети
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

Сохраните и закройте текстовый редактор для продолжения.


Системная информация

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

Изменить пароль суперпользователя (с именем root) можно с помощью команды passwd.

root #passwd

Позже будет создан обычный пользователь для повседневных задач.

Настройка инициализации и загрузки

OpenRC

Если вы используете OpenRC, эта система инициализации использует /etc/rc.conf для настройки сервисов, запуска и остановки системы. Откройте /etc/rc.conf и прочтите комментарии в файле. Проверьте настройки и измените их при необходимости.

root #nano /etc/rc.conf

Далее, откройте /etc/conf.d/keymaps для настройки раскладки клавиатуры. Отредактируйте файл и выберите нужную раскладку.

root #nano /etc/conf.d/keymaps

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

Наконец, отредактируйте /etc/conf.d/hwclock чтобы установить параметры часов. Отредактируйте его в соответствии с личными предпочтениями.

root #nano /etc/conf.d/hwclock

Если аппаратные часы не настроены на время UTC, то в файле необходимо установить clock="local". В противном случае система может отображать неправильное время.

systemd

Сначала рекомендуется запустить systemd-machine-id-setup, а затем systemd-firstboot, которые подготовят различные компоненты системы к первой загрузке в новой среде systemd. При передаче следующих опций пользователю будет предложено установить локаль, часовой пояс, имя хоста, пароль от root и пользовательскую оболочку для root. После этого, установке будет присвоен случайный идентификатор машины:

root #systemd-machine-id-setup
root #systemd-firstboot --prompt

Затем пользователи должны запустить systemctl, чтобы сбросить все установленные файлы устройств на предустановленные значения правил:

root #systemctl preset-all --preset-mode=enable-only

Также можно запустить полное изменение предустановленных значений, но это может сбросить все службы, которые уже были настроены во время процесса:

root #systemctl preset-all

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





Системный журнал

OpenRC

Некоторые инструменты отсутствуют в архиве stage3, так как одну и ту же функциональность могут предоставлять несколько пакетов. Теперь пользователь может выбрать, какие из них установить.

Во-первых, нужно определиться с механизмом журналирования для системы. Unix и Linux имеют отличную историю возможностей протоколирования — если понадобится, всё, что происходит в системе, может быть записано в файл журнала.

Gentoo предоставляет несколько утилит для ведения системного журнала. Некоторые из них перечислены здесь:

  • app-admin/sysklogd — предоставляет традиционный набор возможностей. Настройки по умолчанию работают хорошо из коробки, что делает этот пакет хорошим вариантом для начинающих.
  • app-admin/syslog-ng — расширенные возможности ведения системного журнала. Требуются дополнительные настройки для того, чтобы журналировать что-либо в один большой файл. Некоторые продвинутые пользователи могут выбрать этот пакет за его потенциал; имейте ввиду, что дополнительные настройки необходимы для любого вида умного журналирования.
  • app-admin/metalog — гибко настраиваемая система журналирования.

В Gentoo репозитории ebuild-файлов могут быть доступны и другие утилиты для ведения системного журнала, поскольку количество доступных пакетов увеличивается ежедневно.

Совет
Если планируется использовать syslog-ng, рекомендуется установить пакет и настроить logrotate. syslog-ng не предоставляет механизма ротации системных журналов. Однако, новые версии (>= 2.0) sysklogd управляют своей ротацией системных журналов.

Установите выбранный пакет для ведения системного журнала. Для OpenRC, добавьте его в уровень запуска по умолчанию (default runlevel), используя rc-update. Следующий пример устанавливает и активирует app-admin/sysklogd в качестве системной утилиты для ведения системного журнала:

root #emerge --ask app-admin/sysklogd
root #rc-update add sysklogd default

systemd

Хотя для систем на базе OpenRC представлен ряд способов ведения журналов, systemd включает в себя встроенную службу под названием systemd-journald. Служба systemd-journald способна обрабатывать большинство функций ведения журнала, описанных в предыдущем разделе об журналировании. Иными словами, большинство установок, в которых будет использоваться systemd, могут спокойно пропустить установку этих дополнительных утилит.

Смотрите man journalctl для более подробной информации об использовании journalctl для запроса и просмотра системных журналов.

По ряду причин, например, в случае перенаправления журналов на центральный узел, может понадобиться включить лишние механизмы ведения системных журналов в системе на базе systemd. Этот сценарий не характерен для типичной аудитории руководства и считается продвинутым вариантом использования. По этой причине он не рассматривается в данном руководстве.

Необязательно: планировщик задач

OpenRC

Хотя планировщик задач (cron, от греч. χρόνος — время) является необязательной для системы программой, всё-таки рекомендуется его установить.

Демон cron выполняет команды через заданные интервалы времени. Интервалы могут быть ежедневными, еженедельными или ежемесячными, раз в вторник, раз в две недели и т.д. Знающий системный администратор может использовать сron-демон для автоматизации рутинных задач по обслуживанию системы.

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

Gentoo предлагает для выбора несколько возможных демонов cron, включая:

  • sys-process/cronie — cronie основан на оригинальном cron и содержит улучшения безопасности и конфигурации, такие как возможность использования PAM и SELinux.
  • sys-process/dcron — Этот лёгкий демон cron стремится быть простым и безопасным, с достаточным количеством функций, чтобы оставаться полезным.
  • sys-process/fcron — Планировщик команд с расширенными возможностями по сравнению с cron и anacron.
  • sys-process/bcron — Более современная система cron, разработанная с учетом безопасности операций. Для этого система разделена на несколько отдельных программ, каждая из которых отвечает за отдельную задачу, со жёстко контролируемыми сообщениями между частями.

cronie

Следующий пример использует sys-process/cronie:

root #emerge --ask sys-process/cronie

Добавьте cronie на уровень запуска по умолчанию, чтобы он запускался при запуске системы:

root #rc-update add cronie default

Альтернатива: dcron

root #emerge --ask sys-process/dcron

Если в качестве агента cron используется dcron, необходимо выполнить дополнительную команду инициализации:

root #crontab /etc/crontab

Альтернатива: fcron

root #emerge --ask sys-process/fcron

Если в качестве обработчика запланированных задач выбран fcron, потребуется дополнительный шаг для emerge:

root #emerge --config sys-process/fcron

Альтернатива: bcron

bcron — это более современный агент cron со встроенным разделением привилегий.

root #emerge --ask sys-process/bcron

systemd

Подобно вышеупомянутому системному журналу, системы на базе systemd включают поддержку запланированных задач из коробки в виде таймеров. Таймеры systemd могут работать на уровне системы или на уровне пользователя и включают ту же функциональность, что и традиционный демон cron. Если нет необходимости в избыточных возможностях, установка дополнительного планировщика задач обычно не нужна и может быть пропущена.

Необязательно: Индексирование файлов

Индексирование файлов поможет искать файлы в системе гораздо быстрее. Для этого установите sys-apps/mlocate.

root #emerge --ask sys-apps/mlocate

Необязательно: Удалённый доступ к командной оболочке

Совет
Конфигурация opensshd по умолчанию не позволяет подключаться суперпользователем в качестве удалённого пользователя. Создайте непривилегированного пользователя и настройте его таким образом, чтобы он смог получить доступ к установленной системе, либо измените /etc/ssh/sshd_config, чтобы разрешить вход суперпользователем.

Для того, чтобы после установки обеспечить удалённый доступ к системе, необходимо, чтобы sshd запускался во время загрузки.

OpenRC

Чтобы добавить скрипт инициализации sshd в уровень выполнения по умолчанию (default) для OpenRC:

root #rc-update add sshd default

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

Раскомментируйте раздел «serial console» в файле /etc/inittab:

root #nano -w /etc/inittab
# SERIAL CONSOLES
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

systemd

Чтобы включить SSH-сервер, введите:

root #systemctl enable sshd

Чтобы включить поддержку последовательной консоли, введите:

root #systemctl enable getty@tty1.service

Необязательно: Автодополнения командной строки

Bash

Bash is the default shell for Gentoo systems, and therefore installing completion extensions can aid in efficiency and convenience to managing the system. The app-shells/bash-completion package will install completions available for Gentoo specific commands, as well as many other common commands and utilities:

root #emerge --ask app-shells/bash-completion

Post installation, bash completion for specific commands can managed through eselect. See the Shell completion integrations section of the bash article for more details.

Синхронизация времени

Важно использовать какой-то метод синхронизации системных часов. Обычно это делается с помощью протокола NTP и программного обеспечения. Существуют и другие реализации протокола NTP, например, Chrony.

Например, чтобы настроить Chrony:

root #emerge --ask net-misc/chrony

OpenRC

Для OpenRC, запустите:

root #rc-update add chronyd default

systemd

Для systemd, запустите:

root #systemctl enable chronyd.service

В качестве альтернативы пользователи systemd могут захотеть использовать более простой SNTP-клиент systemd-timesyncd, установленный по умолчанию.

Утилиты для файловых систем

В зависимости от используемых файловых систем может понадобиться установка соответствующих утилит для их обслуживания (проверки целостности, (пере-)форматирования файловых систем и так далее). Обратите внимание, что пользовательские утилиты для ext4 (sys-fs/e2fsprogs) уже установлены как часть набора @system.

В следующей таблице перечислены утилиты, которые нужно установить, если в устанавливаемой системе понадобятся утилиты определённой файловой системы:

Файловая система Пакет
XFS sys-fs/xfsprogs
ext4 sys-fs/e2fsprogs
VFAT (FAT32, ...) sys-fs/dosfstools
Btrfs sys-fs/btrfs-progs
ZFS sys-fs/zfs
JFS sys-fs/jfsutils

Так же рекомендуется установить пакет sys-block/io-scheduler-udev-rules для правильного поведения планировщика ввода/вывода с, к примеру, NVMe устройствами:

root #emerge --ask sys-block/io-scheduler-udev-rules
Совет
Дополнительная информация о файловых системах в Gentoo доступна на странице о файловых системах.

Сетевые утилиты

Если сеть была уже настроена в разделе Настройка системы и настройка сети завершена, то данный раздел «Сетевые утилиты» можно пропустить. В этом случае, переходите к разделу Настройка загрузчика.

Установка DHCP-клиента

Важно
Большинству пользователей понадобится DHCP-клиент для подключения к собственной сети. Если не установить никакой клиент, то впоследствии система не сможет настроить подключение к сети, что сделает невозможным скачивание DHCP-клиента.

DHCP-клиент автоматически получает IP-адрес для одного или нескольких сетевых интерфейсов во время работы сценария netifrc. Мы рекомендуем использовать net-misc/dhcpcd (смотрите также dhcpcd):

root #emerge --ask net-misc/dhcpcd

Необязательно: Установка клиента PPPoE

Если для подключения к Интернету требуется PPP, установите пакет net-dialup/ppp:

root #emerge --ask net-dialup/ppp

Необязательно: Установка утилит для беспроводной сети

Если система будет подключатся к беспроводной сети, установите пакет net-wireless/iw (в случае подключения к открытым сетям или защищённым протоколом WEP), и/или пакет net-wireless/wpa_supplicant (в случае подключения к сетям, защищённым WPA или WPA2). iw также является полезной утилитой для сканирования беспроводных сетей.

root #emerge --ask net-wireless/iw net-wireless/wpa_supplicant

Теперь продолжайте с раздела Настройка начального загрузчика.






GRUB

When selecting a 64-bit profile during installation, then GRUB is the only supported bootloader.

Emerge

GRUB should be correctly configured for the platform automatically based on the profile. To make it explicit, however, specify it using:

root #echo 'GRUB_PLATFORMS="ieee1275"' >> /etc/portage/make.conf
root #emerge --ask --verbose sys-boot/grub

The GRUB software has now been merged to the system, but not yet installed as a bootloader.

Установка

GPT

If the disk is partitioned using GPT (the preferred method), then install GRUB to the BIOS boot partition. Presuming the first disk (the one where the system boots from) is /dev/sda, the following commands will do:

root #grub-install --target=sparc64-ieee1275 --recheck /dev/sda
Совет
Чтобы найти строку загрузочного устройства для ввода в прошивку, используйте утилиту grub-ofpathname. Если загрузочный раздел BIOS находится на первом разделе диска, выберите весь диск:

root #grub-ofpathname /dev/sda

Иначе явно укажите загрузочный раздел BIOS:

root #grub-ofpathname /dev/sda2

Sun partition table

If the disk is partitioned using a Sun partition table instead, GRUB must be installed using blocklists. In this mode, instead of providing the physical disk as an argument, provide the path to the partition on which /boot/grub is mounted.

root #grub-install --target=sparc64-ieee1275 --recheck --force --skip-fs-probe /dev/sda1

Настройка

Next, generate the GRUB2 configuration based on the user configuration specified in the /etc/default/grub file and /etc/grub.d scripts. In most cases, no configuration is needed by users as GRUB2 will automatically detect which kernel to boot (the highest one available in /boot/) and what the root file system is. It is also possible to append kernel parameters in /etc/default/grub using the GRUB_CMDLINE_LINUX variable.

To generate the final GRUB2 configuration, run the grub-mkconfig command:

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-6.6.21-gentoo
Found initrd image: /boot/initramfs-genkernel-sparc-6.6.21-gentoo
done

The output of the command must mention that at least one Linux image is found, as those are needed to boot the system. If an initramfs is used or genkernel was used to build the kernel, the correct initrd image should be detected as well. If this is not the case, go to /boot/ and check the contents using the ls command. If the files are indeed missing, go back to the kernel configuration and installation instructions.

SILO, начальный загрузчик для SPARC

Если был выбран 32-битный профиль во время установки, то единственными поддерживаемым загрузчиком является только SILO (Sparc Improved boot LOader).

root #emerge --ask sys-boot/silo

Далее создайте /etc/silo.conf:

root #nano -w /etc/silo.conf

Ниже приведен пример файла silo.conf. В нем используется схема разбиения, которую мы применяем во всей книге, а также файл kernel-6.6.21-gentoo в качестве образа ядра и initramfs-genkernel-sparc64-6.6.21-gentoo в качестве initramfs.

ФАЙЛ /etc/silo.confПример файла настройки
partition = 1         # Загрузочный раздел (= корневой раздел)
root = /dev/sda1      # Корневой раздел
timeout = 150         # Ждать 15 секунд до начала загрузки раздела по умолчанию
  
image = /boot/kernel-6.6.21-gentoo
  label = linux
  append = "initrd=/boot/initramfs-genkernel-sparc64-6.6.21-gentoo root=/dev/sda1"

Если используете файлом-примером silo.conf, установленным Portage, обязательно закомментируйте все строки, которые не нужны.

Если файл /etc/silo.conf не находится на том же физическом диске, на который вы собираетесь установить SILO (в качестве загрузчика), необходимо скопировать файл /etc/silo.conf на раздел того диска, на который устанавливается загрузчик. Например, если /boot/ является отдельным разделом на этом диске, скопируйте настроечный файл в /boot/ и запустите /sbin/silo:

root #cp /etc/silo.conf /boot
root #/sbin/silo -C /boot/silo.conf
/boot/silo.conf appears to be valid

В противном случае, просто запустите /sbin/silo:

root #/sbin/silo
/etc/silo.conf appears to be valid
Заметка
Запускайте silo (с параметрами) каждый раз, когда обновляете или переустанавливаете пакет sys-boot/silo.


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

Выйдите из изолированной среды и размонтируйте все смонтированные разделы. Затем введите ту самую волшебную команду, которая запускает последний, настоящий тест: reboot.

(chroot) livecd #exit
livecd~#cd
livecd~#umount -l /mnt/gentoo/dev{/shm,/pts,}
livecd~#umount -R /mnt/gentoo
livecd~#reboot

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

Перезагрузившись в новое окружение Gentoo, переходите к завершению установки Gentoo.





Управление учётными записями

Добавление учётной записи для повседневной работы

Работа под учётной записью root (суперпользователя) в системе Unix/Linux опасна, и этого следует всячески избегать. Поэтому для повседневной работы настоятельно рекомендуется добавить учётную запись обычного пользователя.

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

Группа Описание
audio Возможность доступа к аудиоустройствам.
cdrom Возможность прямого доступа к оптическим накопителям.
floppy Возможность прямого доступа к гибким дискам.
games Возможность играть в игры.
portage Возможность получать доступ к ограниченным ресурсам Portage.
usb Возможность доступа к устройствам USB.
video Возможность доступа к средствам видеозахвата и аппаратному ускорению видео.
wheel Возможность использования команды su.

Например, для создания учетной записи пользователя по имени larry, входящего в группы wheel, users и audio, сначала войдите в систему как root (только root может создавать учетные записи пользователей), а затем запустите useradd:

Login:root
Password: (Enter the root password)

When setting passwords for standard user accounts, it is good security practice to avoid using the same or a similar password as set for the root user.

Handbook authors recommended to use a password at least 16 characters in length, with a value fully unique from every other user on the system.

root #useradd -m -G users,wheel,audio -s /bin/bash larry
root #passwd larry
Password: (Enter the password for larry)
Re-enter password: (Re-enter the password to verify)

Temporarily elevating privileges

Если пользователю потребуется выполнить задачу от имени root, для временного получения привилегий root можно использовать su -. Другой способ - пользоваться пакетом sudo (app-admin/sudo) или doas (app-admin/doas), которые, при правильной настройке, очень безопасны.

Отключение учетной записи root

To prevent possible threat actors from logging in as root, deleting the root password and/or disabling root login can help improve security.

To disable root login:

root #passwd -l root

To delete the root password and disable login:

root #passwd -dl root

Очистка диска

Удаление архивов

Теперь, когда установка Gentoo закончена и система была благополучно перезагружена, можно удалить скачанный архив stage3 с жёсткого диска. Помните, что он был скачан в каталог /.

The files are located in the / directory and can be removed with the following command:

root #rm /stage3-*.tar.*

Что делать дальше

Не уверены что делать дальше? Есть множество путей для исследований… Gentoo даёт своим пользователям богатый выбор, а следовательно, и множество документированных (или не очень) возможностей для изысканий здесь, на вики, а также других ресурсах Gentoo (см. раздел Gentoo в сети).

Дополнительная документация

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

Обязательно прочтите следующую часть руководства, Работа с Gentoo, в которой рассказывается, как поддерживать программное обеспечение в актуальном состоянии, как устанавливать дополнительные пакеты программ, даётся дополнительная информация о USE-флагах, системе инициализации OpenRC и многом другом, связанном с администрированием Gentoo после установки.

Кроме Руководства, можно также исследовать другие уголки вики, в которой есть дополнительная документация, созданная сообществом. Команда вики Gentoo предлагает обзор документации по темам, который содержит список статей, отсортированных по категории. Например, там есть руководство по локализации, с помощью которого можно сделать систему более «домашней» (особенно полезно пользователям, для которых английский язык не родной).

Большинство пользователей, использующих настольные компьютеры, устанавливают графические среды, в которых работают изначально. Существует множество поддерживаемых сообществом 'мета' статей для поддерживаемых сред рабочего стола (DE) и оконных менеджеров (WM). Читатели должны знать, что для каждого DE потребуются разные шаги для настройки, что удлинит процесс загрузки.

Существует множество других мета-статей, чтобы предоставить нашим читателям обзоры доступного программного обеспечения в Gentoo.

Gentoo в сети

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

За исключением IRC, находящегося на серверах Libera.Chat, и почтовых рассылок, на большинстве сайтов Gentoo требуется собственная учетная запись для того, чтобы задавать вопросы, открывать обсуждения или оформлять запросы.

Форумы и IRC

Мы приветствуем каждого пользователя на наших форумах Gentoo или в одном из наших IRC-каналов. На форумах есть удобный поиск, позволяющий искать похожие решённые проблемы, связанные с установкой Gentoo. Ошибки новичков, возникающие при установке системы, удивительно похожи. Перед тем, как попросить помощи на каналах поддержки Gentoo, рекомендуется выполнить поиск похожих проблем на форумах и вики.

Списки рассылок

Существует несколько списков почтовых рассылок, доступных для членов сообщества, предпочитающих вести обсуждения через электронную почту, а не на форумах или IRC. Для подписки на определённый список необходимо следовать указанным на сайте инструкциям.

Отчёты об ошибках

Иногда, даже после посещения страниц вики, поиска на форумах или обсуждения в IRC и почтовой рассылке, не находится подходящего решения для возникшей проблемы. Обычно это является свидетельством того, что необходимо составить отчёт об ошибке на сайте Gentoo Bugzilla.

Руководство по разработке

Те пользователи, которые хотят узнать больше о разработке Gentoo, могут почитать Руководство разработки. Это руководство описывает порядок написания ebuild, работу eclass, предоставляет определение многим понятиям, лежащим в основе разработки Gentoo.

Напутственные слова

Gentoo является надёжным, гибким и отлично сопровождаемым дистрибутивом. Сообщество разработчиков всегда будет радо выслушать обратную связь от пользователей, чтобы сделать Gentoo ещё лучшим дистрибутивом.

В качестве напоминания, запросы, связанные с данным Руководством, должны следовать инструкциями, приведённым в разделе «Как я могу улучшить Руководство?».

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




Warning: Display title "Gentoo Linux sparc Handbook: Установка Gentoo" overrides earlier display title "Handbook:SPARC/Full/Installation".