Handbook:X86/Installation/Base
Переход в изолированную среду
Копирование информации о 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 или другого установочного носителя) в систему установки (где находятся размеченные разделы).
Переход в изолированное окружение делается в три шага:
- Изменение корневого каталога с / (который находится на установочном носителе) в /mnt/gentoo/ (на разделах диска) с помощью команды chroot или arch-chroot если доступно.
- Загрузка в память некоторых параметров из /etc/profile с помощью команды source
- Изменение приглашения командной строки, чтобы не забыть, что эта сессия находится в изолированном окружении.
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, /dev/sda1 was formatted with the FAT32 filesystem and will be used as the EFI System Partition (ESP). Create a new /efi directory (if not yet created), and then mount ESP there:
root #
mkdir /efi
root #
mount /dev/sda1 /efi
DOS/Legacy BIOS systems
For DOS/Legacy BIOS systems, the bootloader will be installed into the /boot directory, therefore mount as follows:
root #
mount /dev/sda1 /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/x86/23.0 * [2] default/linux/x86/23.0/desktop [3] default/linux/x86/23.0/desktop/gnome [4] default/linux/x86/23.0/desktop/kde
Вывод команды является только примером и может меняться время от времени.
Для использования systemd выберите профиль, в котором содержится слово «systemd» (или его отсутствие в обратном случае).
Для некоторых архитектур есть субпрофиль для настольных систем.
Не стоит халатно относиться к обновлениям профиля. Выбирая изначальный профиль, используйте тот, что соответствует той же версии, которая была использована в stage3 (к примеру, 23.0). Каждая новая версия профиля объявляется через элемент новостей с инструкциями по миграции. Следуйте им, прежде чем перейти на новый профиль.
После просмотра доступных профилей для архитектуры x86, пользователи могут выбрать другой системный профиль:
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:
- The architecture and profile targets within the
sync-uri
value do matter and should align to the respective computer architecture (x86 in this case) and system profile selected in the Choosing the right profile section. - 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.
[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:
- 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. - 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:
# 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
USE="-gtk -gnome qt5 kde dvd alsa cdr"
Если USE-флаг определён в /etc/portage/make.conf, он будет добавлен (или удалён, если перед USE-флагом написан знак -) в список по умолчанию. USE флаги могут быть удалены добавлением знака - перед флагом. Например, чтобы выключить поддержку для графических окружений X, нужно задать -X
:
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.
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:
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 |
- ↑ https://www.gnu.org/licenses/license-list.html
- ↑ https://www.opensource.org/licenses
- ↑ https://www.gnu.org/philosophy/free-sw.html
- ↑ https://freedomdefined.org/
- ↑ https://www.gnu.org/licenses/license-list.html
- ↑ https://www.opensource.org/licenses
- ↑ https://www.gnu.org/philosophy/free-sw.html
- ↑ https://freedomdefined.org/
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.
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.
app-arch/unrar unRAR
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
sys-firmware/intel-microcode intel-ucode
Переменная LICENSE в ebuild-файле является только ориентиром для разработчиков и пользователей Gentoo. Она не является юридически значимым заявлением и не гарантирует, что условия использования соответствуют действительности. Не стоит доверять ей безоговорочно и при необходимости следует проводить полный аудит всех файлов, которые были установлены на системе.
Необязательно: Обновление набора @world
Это действие необходимо, чтобы система могла применить какие-либо обновления с момента сборки stage3 и обновления профиля:
- A profile target different from the stage file has been selected.
- 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).
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):
LANG="ru_RU.UTF-8"
LC_COLLATE="C.UTF-8"
Установка локали предотвратит появление предупреждений и ошибок в процессе компиляции ядра и программ.
Заново перезагрузите окружение:
root #
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
Для получения дополнительных рекомендаций по выбору локали см. также руководство по локализации и статью UTF-8.
References