This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Установка базовой системы Gentoo
Chrooting
Необязательно: Выбор зеркала
Распределенные файлы
Для быстрой загрузки исходного кода рекомендуется выбрать быстрое зеркало. Portage будет искать в файле make.conf переменную GENTOO_MIRRORS и использовать перечисленные в ней зеркала. Можно просмотреть список зеркал Gentoo и найти зеркало (или зеркала), наиболее близко расположенное к месту физического расположения (они чаще всего и есть самые быстрые). Тем не менее, мы предоставляем хороший инструмент под названием mirrorselect, который предлагает удобный интерфейс для выбора подходящего зеркала. Просто перейдите на нужное зеркало и нажмите пробел для выбора одного или нескольких.
root #
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
Gentoo репозиторий ebuild-файлов
Вторым важным шагом в выборе зеркала является настройка Gentoo репозитория ebuild-файлов в файле /etc/portage/repos.conf/gentoo.conf. Этот файл содержит информацию, необходимую для обновления пакетного репозитория (коллекции ebuild и связанных с ними файлов, содержащих всю информацию, необходимую Portage для загрузки и установки пакетов программного обеспечения).
Настройку репозитория можно сделать весьма просто. Сперва, создайте repos.conf каталог, если он не существует:
root #
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
Далее, скопируйте файл конфигурации Gentoo репозитория, предоставляемый Portage, в (только что созданный) каталог repos.conf:
root #
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
Просмотрите его с помощью текстового редактора или используя команду cat. Содержание должно быть в формате .ini и выглядеть следующим образом:
[DEFAULT] main-repo = gentoo [gentoo] location = /usr/portage sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage auto-sync = yes sync-rsync-verify-jobs = 1 sync-rsync-verify-metamanifest = yes sync-rsync-verify-max-age = 24 sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc sync-openpgp-key-refresh-retry-count = 40 sync-openpgp-key-refresh-retry-overall-timeout = 1200 sync-openpgp-key-refresh-retry-delay-exp-base = 2 sync-openpgp-key-refresh-retry-delay-max = 60 sync-openpgp-key-refresh-retry-delay-mult = 4 # for daily squashfs snapshots #sync-type = squashdelta #sync-uri = mirror://gentoo/../snapshots/squashfs
По умолчанию значение переменной sync-uri из примера выше будет определять местоположение зеркала на основе ротации. Это позволяет ослабить сетевую нагрузку на инфраструктуру Gentoo и повышает отказоустойчивость в случаях когда конкретное зеркало не в сети. Рекомендуется придерживаться URI по умолчанию, если не используется локальное зеркало Portage.
Заинтересованным, официальные спецификации для Portage's plug-in sync API можно найти в статье Sync Portage проекта.
Копирование информации о DNS
Единственное, что еще осталось сделать перед входом в новое окружение, это скопировать информацию о DNS из файла /etc/resolv.conf. Это нужно сделать, чтобы гарантировать, что сеть все еще будет работать даже после входа в новое окружение. Файл /etc/resolv.conf содержит сервера имен (DNS).
Чтобы скопировать эту информацию, рекомендуется ввести ключ --dereference
для команды cp. Это гарантирует, что если /etc/resolv.conf является символьной ссылкой, то будет скопирован целевой файл по ссылке, а не сама символьная ссылка. В противном случае в новом окружении символическая ссылка будет ссылаться на несуществующий файл (так как цель ссылки, скорее всего, будет недоступна внутри нового окружения).
root #
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
Подключение необходимых файловых систем
Скоро Linux root будет перемещен в новое место. Чтобы новое окружение работало должным образом, для него должны быть доступны некоторые файловые системы.
Файловые системы, которые должны быть доступны:
- /proc/ - это псевдо-файловая система (она выглядит как обычные файлы, но на самом деле генерируется на лету) из которой ядро Linux предоставляет информацию для окружения
- /sys/ - это псевдо-файловая система, как и /proc/, которую она однажды заменит, также она более структурирована, чем /proc/
- /dev/ - это обычная файловая система, частично управляемая менеджером устройств Linux (обычно udev), которая содержит все файлы устройств
Каталог /proc/ монтируется в /mnt/gentoo/proc/, а остальные два каталога через bind-mounted. Дальнейшее означает, что, например, /mnt/gentoo/sys/ на самом деле будет /sys/ (это просто вторая точка входа в ту же файловую систему), тогда как /mnt/gentoo/proc/ является новой точкой монтирования (так сказать, экземпляром) файловой системы.
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
Операция
--make-rslave
необходима для дальнейшей поддержки systemd в ходе установки.When using non-Gentoo installation media, this might not be sufficient. Some distributions make /dev/shm a symbolic link to /run/shm/ which, after the chroot, becomes invalid. Making /dev/shm/ a proper tmpfs mount up front can fix this:
root #
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
Also ensure that mode 1777 is set:
root #
chmod 1777 /dev/shm
Переход в новое окружение
Теперь, когда все разделы инициализированы и базовое окружение установлено, настало время войти в новое установочное окружение, перенеся корневой каталог в него. Это означает, что сессия изменит свой корень (наивысший каталог, который может быть доступен) из текущей установочного окружения (CD или другого установочного носителя) в систему установки (т.е размеченных разделов). Отсюда и название, сменить корень (change root - chroot).
Chroot делается в три шага:
- Изменение корневой директории с / (который находится на установочном носителе) в /mnt/gentoo/ (на разделах диска) используя chroot
- С помощью команды source, некоторые параметры (перечисленные в /etc/profile) загружаются в память
- Изменение приглашения командной строки, чтобы запомнить, что эта сессия находится в chroot окружении.
root #
chroot /mnt/gentoo /bin/bash
root #
source /etc/profile
root #
export PS1="(chroot) ${PS1}"
С этого момента все действия выполняются непосредственно в новом (chroot) окружении Gentoo Linux. Конечно, до финала еще далеко, поэтому установка продлится еще несколько разделов!
If the Gentoo installation is interrupted anywhere after this point, it should be possible to 'resume' the installation at this step. There is no need to repartition the disks again! Simply mount the root partition and run the steps above starting with copying the DNS info to re-enter the working environment. This is also useful for fixing bootloader issues. More information can be found in the chroot article.
Монтирование раздела boot
После входа в новое окружение необходимо создать и смонтировать раздел /boot. Он необходим в процессе компиляции ядра и установки загрузчика:
root #
mkdir /boot
root #
mount /dev/sda2 /boot
Настройка Portage
Установка снимка репозитория ebuild-файлов
Следующим шагом будет установка снимка основного репозитория ebuild-файлов. Этот снимок содержит коллекцию файлов, которая сообщает Portage о доступных программах (для установки), какой профиль может выбрать системный администратор, о новостях о конкретных пакетах или профилях и так далее.
emerge-webrsync рекомендуется использовать тем, кто находится за фаерволом (для загрузки снимка используется только протоколы HTTP/HTTPS), а также снижает нагрузку на канал сети. У кого нет ограничений с сетью или шириной канала, могут с радостью перейти к следующему разделу.
Команда ниже загрузит последний снимок (которые выпускаются каждый день), с одного из зеркал Gentoo, и распакует его в системе:
root #
emerge-webrsync
Во время этой операции, emerge-webrsync может жаловаться на отсутствующую /usr/portage/. В этом нет ничего страшного - инструмент сам создаст эту директорию.
Начиная с этого места Portage может попросить установить некоторые рекомендуемые обновления. Это потому, что системные пакеты, установленные из архива stage, возможно, имеют новые доступные версии; Portage теперь известно о новых пакетах благодаря снимку репозитория. Обновление пакетов можно проигнорировать; обновления могут быть отложены до завершения установки Gentoo.
Необязательно: Обновление Gentoo репозитория ebuild-файлов
Также можно обновить Gentoo репозиторий ebuild-файлов до текущего состояния. Предыдущая команда emerge-webrsync устанавливает относительно недавний снимок (обычно не старше 24ч), поэтому этот шаг, безусловно, делать необязательно.
Если имеется необходимость установки свежих обновлений (выпущенных не более 1 часа назад), то используйте emerge --sync. Эта команда использует rsync протокол для обновления Gentoo репозитория ebuild-файлов (которое было получено ранее с помощью emerge-webrsync) до самой свежей версии.
root #
emerge --sync
На медленных терминалах с некоторыми фреймбуферами или при использовании последовательного терминала, рекомендуется использовать опцию --quiet
для ускорения процесса:
root #
emerge --sync --quiet
Чтение новостей
После обновления Gentoo репозитория ebuild-файлов, Portage может предупредить пользователя следующим сообщением:
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.
Новостные сообщения были созданы, чтобы обеспечить связь, оповещать пользователей о критически важных изменениях с помощью дерева rsync. Чтобы управлять новостными сообщениями используйте команду eselect news. Приложение eselect - это приложение Gentoo, которое позволяет обеспечить общий интерфейс управления системными настройками и производить различные операции. В данном примере eselect просит использовать ее вместе с модулем news
.
Для модуля news
есть три наиболее распространенных операций:
list
отображает общий список новостей.read
можно прочитать какую-либо новость.purge
удалит прочитанные новости, поэтому перечитать новость снова уже будет нельзя.
root #
eselect news list
root #
eselect news read
Более подробную информацию о чтение новостей можно найти на странице man:
root #
man news.eselect
Выбор подходящего профиля
Do not select any of the the 17.1 profiles until reading the corresponding 17.1 news item. This profile is experimental and requires special migration instructions.
Профиль - это важная часть любой системы Gentoo. Он не только определяет переменные USE, CFLAGS, и другие важные переменные, а также заставляет систему использовать только определенные версии пакетов. Все эти нюансы поддерживаются разработчиками Portage в Gentoo.
Вы можете увидеть какой профиль в настоящее время используется в системе с помощь команды eselect, только теперь с модулем profile
:
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde
Вывод команды является только примером и может меняться при некоторых ситуациях
Как можно увидеть, есть субпрофиль для настольных систем в некоторых архитектурах.
Profile upgrades are not to be taken lightly. When selecting the initial profile, make sure to use profile corresponding to the same version as the one initially used by stage3 (e.g. 13.0). Each new profile version is announced through a news item containing migration instructions. Make sure to read it and follow them before switching to a newer profile.
После просмотра доступных профилей для amd64 архитектуры, пользователи могут выбрать другой системный профиль:
root #
eselect profile set 2
No-multilib
Если необходимо чистое 64-битное окружение, без 32-битных приложений или библиотек, то нужно использовать профиль no-multilib:
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde [5] default/linux/amd64/13.0/no-multilib
Далее выберите профиль no-multilib:
root #
eselect profile set 5
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde [5] default/linux/amd64/13.0/no-multilib *
systemd
Кто желает использовать systemd в качестве системы инициализации должны выбрать профиль со словом systemd
где-то в названии профиля:
root #
eselect profile set default/linux/amd64/13.0/systemd
root #
eselect profile list
Available profile symlink targets: [10] default/linux/amd64/13.0/developer [11] default/linux/amd64/13.0/no-multilib [12] default/linux/amd64/13.0/systemd * [13] default/linux/amd64/13.0/x32 [14] hardened/linux/amd64
Как показано выше, можно использовать полное имя профиля вместо числового значения.
Подпрофиль
developer
сделан специально для разработки Gentoo Linux и не предназначен для использования обычными пользователями.Обновление @world
На данный момент разумно будет обновить @world чтобы базовая часть системы изменилась.
This following step is necessary so the system can apply any updates or USE flag changes which have appeared since the stage3 was built and from any profile selection:
root #
emerge --ask --verbose --update --deep --newuse @world
Если до этого был выбран desktop профиль для полномасштабной среды рабочего стола, то этот процесс может занять значительное время, которое необходимо для процесса установки. Все можно свести к такому 'правилу': чем короче имя профиля и более "пустой" @world; чем меньше пакетов в @world, тем меньше пакетов системе потребуется. Другими словами:
- при выборе
default/linux/amd64/13.0
очень мало пакетов будут обновлены, в то время как - при выборе
default/linux/amd64/13.0/desktop/gnome/systemd
много пакетов будут установлены, так как система инициализации поменяется с OpenRC на Systemd, и будут установлен фреймворк рабочего стола GNOME.
Настройка USE переменной
USE - это одна из самых мощных переменных Gentoo доступная пользователям. Разные программы могут быть скомпилированы с или без поддержки некоторых опций. Например, некоторые программы могут быть скомпилированы с поддержкой GTK+ или поддержкой Qt. Другие могут быть скомпилированы с или без поддержки SSL. Некоторые программы можно даже скомпилировать с поддержкой фреймбуфера (svgalib) вместо поддержки X11 (X-сервера).
Большинство дистрибутивов компилируют свои пакеты с поддержкой всего, что возможно, увеличивая размер и время запуска программ, не говоря уже о чрезмерных зависимостях. Благодаря Gentoo пользователь может определить с какими опциями пакет должен быть скомпилирован. И здесь переменная USE вступает в игру.
В переменной USE пользователи определяют ключевые слова (keywords), которые отображаются на параметры компиляции. Например, ssl
будет компилировать SSL-поддержку в программах, которые ее поддерживают. -X
уберет поддержку X-сервера (обратите внимание на знак минус перед X). gnome gtk -kde -qt4 -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 флагов можно найти в файле /usr/portage/profiles/use.desc.
root #
less /usr/portage/profiles/use.desc
Когда используется команда less, можно осуществлять скроллинг с помощью клавиш ↑ и ↓, или выйти нажав клавишу q.
В качестве примера мы покажем настройки USE для системы ориентированной для использования KDE с поддержкой DVD, ALSA и записи CD:
root #
nano -w /etc/portage/make.conf
USE="-gtk -gnome qt4 qt5 kde dvd alsa cdr"
Если USE флаг используется в /etc/portage/make.conf это добавляет (или удаляет, если перед USE флагом написан знак -) из списка по умолчанию. Пользователи, которые хотят игнорировать любые настройки USE по умолчанию и полностью настраивать USE сами, должны начать USE в make.conf с -*
:
USE="-* X acl alsa"
Although possible, setting
-*
(as seen in the example above) is discouraged as carefully chosen USE flag defaults may be configured in some ebuilds to prevent conflicts and other errors.
Часовой пояс
Определите какой часовой пояс нужен для системы. Посмотреть доступные часовые пояса можно в /usr/share/zoneinfo/, затем запишите его в файл /etc/timezone.
root #
ls /usr/share/zoneinfo
Предположим, что выбранным часовым поясом является Europe/Brussels:
root #
echo "Europe/Brussels" > /etc/timezone
Пожалуйста, избегайте /usr/share/zoneinfo/Etc/GMT* часовых поясов, так как их названия не соответствуют часовым поясам. Например, GMT-8 на самом деле GMT+8.
Далее, перенастроим пакет sys-libs/timezone-data, что обновит /etc/localtime файл, основываясь на записи в /etc/timezone. Файл /etc/localtime используется системной библиотекой C, чтобы узнать в каком часовом поясе находится система.
root #
emerge --config sys-libs/timezone-data
Настройка локалей
Большинству пользователей достаточно иметь одну или две локали на своих системах.
Локаль, на самом деле, указывает не только язык, который использует пользователь при взаимодействии с системой, но и правила для сортировки строк, формат вывода даты и времени, и так далее.
Локали, которые должна поддерживать система, должны быть перечислены в /etc/locale.gen.
root #
nano -w /etc/locale.gen
Следующие локали являются примером для получения английской (США) и немецкой (Germany) локалей с поддержкой формата символов (например, UTF-8).
en_US ISO-8859-1 en_US.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE.UTF-8 UTF-8
Мы настоятельно рекомендуем использовать хотя бы одну локаль UTF-8, потому что некоторым приложениям она нужна.
Далее, запустим locale-gen. Это сгенерирует локали, которые были перечислены в файле /etc/locale.gen.
root #
locale-gen
Чтобы убедится, что выбранные локали теперь доступны запустите команду locale -a.
После этого настало время, настроить локаль для всей системы. И снова мы используем eselect для этого, только теперь с модулем locale
.
Команда eselect locale list выводит список доступных локалей:
root #
eselect locale list
Available targets for the LANG variable: [1] C [2] POSIX [3] en_US [4] en_US.iso88591 [5] en_US.utf8 [6] de_DE [7] de_DE.iso88591 [8] de_DE.iso885915 [9] de_DE.utf8 [ ] (free form)
Команда eselect locale set VALUE может установить нужную локаль:
root #
eselect locale set 9
Также, это можно сделать с помощью файла /etc/env.d/02locale:
LANG="de_DE.UTF-8" LC_COLLATE="C"
Убедитесь в том, что локаль настроена, так как система в противном случае может отображать предупреждения и ошибки во время сборки ядра или других случаях развертывания программного обеспечения, позднее в процессе установки.
Заново перезагрузите окружение:
root #
env-update && source /etc/profile && export PS1="(chroot) $PS1"
Мы сделали статью по полном локализации, чтобы помочь пользователю в этом процессе. Другая интересная статья UTF-8 с очень подробной информацией как включить поддержку UTF-8 в системе.