From 8a1ee691af6ad3a2e42e19c863b8a289e0ebdd38 Mon Sep 17 00:00:00 2001
From: Poltern <2363951+Poltern@users.noreply.github.com>
Date: Mon, 26 Jun 2023 23:32:36 +0500
Subject: [PATCH] Translated chapter04
---
chapter04/aboutsbus.xml | 37 +++++++++++++-----------
chapter04/abouttestsuites.xml | 8 +++---
chapter04/addinguser.xml | 33 +++++++++++-----------
chapter04/creatingminlayout.xml | 21 +++++++++++---
chapter04/introduction.xml | 12 ++++----
chapter04/settingenviron.xml | 50 +++++++++++++++++----------------
6 files changed, 89 insertions(+), 72 deletions(-)
diff --git a/chapter04/aboutsbus.xml b/chapter04/aboutsbus.xml
index 3834782..6f5ff60 100644
--- a/chapter04/aboutsbus.xml
+++ b/chapter04/aboutsbus.xml
@@ -12,22 +12,21 @@
Многие люди хотели бы знать заранее, сколько примерно времени потребуется
для компиляции и установки каждого пакета. Поскольку Linux From Scratch может
- быть построен на различных системах, невозможно дать точную оценку времени.
- Сборка одного из самых больших пакетов (Glibc) займет около 20 минут на быстрых системах,
- но может занять до трех дней на более медленных компьютерах! Вместо фактического
- времени в книге используется показатель Стандартная единица времени сборки (SBU).
+ быть собран на различных системах, невозможно дать точную оценку времени.
+ Сборка самого большого пакета (gcc) займет около 5 минут на быстрых системах,
+ но может занять несколько дней на более медленных компьютерах! Вместо фактического
+ времени в книге используется показатель "стандартная единица времени сборки" (SBU).
- Показатель СБУ рассчитывается следующим образом. Первым пакетом, который
- будет скомпилирован из этой книги, является binutils в
- . Время, необходимое для компиляции этого
- пакета, будет называться Стандартная единица времени сборки или SBU. Время компиляции
- остальных пакетов будет выражено относительно этого времени.
+ Показатель SBU рассчитывается следующим образом. Первым пакетом, который нужно скомпилировать,
+ является binutils в . Время, необходимое для компиляции
+ этого пакета с использованием одного ядра, будет называться стандартной единицей времени сборки
+ или SBU. Время компиляции остальных пакетов будет рассчитано относительно этого времени.
Например, рассмотрим пакет, время компиляции которого составляет 4,5 SBU.
- Это означает, что если системе потребовалось 10 минут для компиляции и сборки
+ Это означает, что если вашей системе потребовалось 10 минут для компиляции и сборки
первого прохода binutils, то для сборки этого пакета потребуется
примерно 45 минут. К счастью, в большинстве случаев время
- сборки короче, чем у binutils.
+ сборки меньше, чем у binutils.
В целом, величина SBU не совсем точна, поскольку она зависит от многих
факторов, включая версию GCC хост-системы. Она приведены здесь, чтобы дать
@@ -38,21 +37,25 @@
Для многих современных систем с несколькими процессорами (или ядрами)
время компиляции пакета можно сократить, выполнив параллельную сборку
,
либо установив переменную среды, либо сообщив программе make,
- сколько процессоров доступно. Например, процессор Intel i5-6500 может
- поддерживать четыре одновременных процесса:
+ сколько ядер задействовать для сборки. Например, процессор Intel i5-6500 может
+ поддерживать четыре одновременных потока:
export MAKEFLAGS='-j4'
- или просто собирать с:
+ или просто собирать с флагом:
make -j4
- Когда используется несколько процессоров, единицы SBU в книге будут
+ Когда используется несколько ядер, единицы измерения SBU будут
различаться еще больше, чем обычно. В некоторых случаях make просто
завершится ошибкой. Анализ выходных данных процесса сборки также будет более
- сложным, поскольку строки различных процессов будут чередоваться. Если вы
- столкнулись с проблемой на этапе сборки, вернитесь к однопроцессорной сборке,
+ сложным, поскольку строки разных потоков будут чередоваться. Если вы
+ столкнулись с проблемой на этапе сборки, вернитесь к сборке на одном ядре,
чтобы проанализировать сообщения об ошибках.
+
+ Представленные здесь значения времени основаны на замерах при использовании
+ четырех ядер (-j4). Время, указанное в главе 8, также включает время выполнения
+ регрессионных тестов для пакета, если не указано иное.
diff --git a/chapter04/abouttestsuites.xml b/chapter04/abouttestsuites.xml
index 82ef290..07f8248 100644
--- a/chapter04/abouttestsuites.xml
+++ b/chapter04/abouttestsuites.xml
@@ -25,9 +25,9 @@
Запуск наборов тестов, описанных в
- и , невозможен, поскольку программы
- компилируются с помощью кросс-компилятора, и предполагается, что они не могут
- запускаться на хосте сборки.
+ и , не имеет смысла, поскольку
+ программы компилируются с помощью кросс-компилятора, они, вероятно, не могут
+ работать на хосте сборки.
Распространенной проблемой при запуске наборов тестов для binutils и GCC
@@ -40,6 +40,6 @@
Иногда наборы тестов не работают, по причинам, о которых знают разработчики
и которые они считают некритичными. Просмотрите журналы, расположенные по адресу
, чтобы проверить, ожидаются ли сбои. Этот сайт
- актуален для всех тестов в книге.
+ актуален для всех наборов тестов, описанных в книге.
diff --git a/chapter04/addinguser.xml b/chapter04/addinguser.xml
index 169f615..7f83717 100644
--- a/chapter04/addinguser.xml
+++ b/chapter04/addinguser.xml
@@ -10,15 +10,14 @@
Создание пользователя LFS
- При входе в систему под пользователем
+ При входе в систему под учетной записью
root допущение одной ошибки может
привести к повреждению или разрушению системы. Поэтому пакеты в следующих
двух главах собираются из-под учетной записи непривилегированного пользователя.
Вы можете использовать свое собственное имя пользователя, но чтобы упростить
настройку рабочей среды, создайте нового пользователя с именем lfs в качестве члена новой группы (также
- называемой lfs) и используйте этого
- пользователя в течение всего процесса сборки пакетов временного набора инструментов.
+ class="username">lfs, который является членом одноименной группы
+ и выполняйте команды из-под этой учетной записи в процессе установки.
От имени пользователя root выполните
следующие команды, чтобы добавить нового пользователя:
@@ -58,30 +57,30 @@ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Этот параметр предотвращает возможное копирование файлов из
предустановленного набора каталогов (по умолчанию
/etc/skel) путем изменения
- местоположения ввода на специальное null-устройство
+ местоположения ввода на специальное null-устройство.
lfs
- Это фактическое имя созданного пользователя.
+ Это имя нового пользователя.
- Чтобы войти в систему как пользователь lfs
- (в отличие от переключения на пользователя lfs
- при входе в систему как root, для которого не
- требуется, чтобы пользователь lfs имел пароль),
- задайте пароль пользователя lfs :
+ Если вы хотите войти в систему как &lfs-user; или переключиться на &lfs-user;
+ из учетной записи непривилегированного пользователя (в отличие от переключения на
+ пользователя &lfs-user; при входе в систему как &root;, для которого не требуется
+ пароль пользователя &lfs-user;), вам необходимо установить пароль для &lfs-user;.
+ Выполните следующую команду от имени пользователя &root;, чтобы установить пароль:
passwd lfs
Предоставьте пользователю lfs полный
- доступ ко всем каталогам в папке $LFS, сделав
- lfs владельцем каталога:
+ доступ ко всем каталогам в папке $LFS, назначив
+ lfs владельцем:
chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
case $(uname -m) in
@@ -93,15 +92,15 @@ esac
подсказка "lfs:~$" не появляется сразу, ввод команды fg
устранит проблему.
- Затем войдите в систему как пользователь lfs.
- Это можно сделать через виртуальную консоль, через графическую оболочку или с помощью
- следующей команды замены/переключения пользователя:
+ Затем запустите оболочку, работающую от имени пользователя &lfs-user;.
+ Это можно сделать, войдя в систему как &lfs-user; на виртуальной консоли или
+ с помощью следующей команды замены/переключения пользователя:
su - lfs
Аргумент -
передает значение команде
su для запуска оболочки входа в систему, а не обычной оболочки.
- Разнличия между этими двумя типами оболочек можно найти в bash(1)
+ Разница между этими двумя типами оболочек подробно описана в bash(1)
и info bash.
diff --git a/chapter04/creatingminlayout.xml b/chapter04/creatingminlayout.xml
index c718611..3c46c8f 100644
--- a/chapter04/creatingminlayout.xml
+++ b/chapter04/creatingminlayout.xml
@@ -10,12 +10,13 @@
Создание ограниченной иерархии папок в файловой системе LFS
- Первая задача, выполняемая на разделе LFS, — это создание ограниченной
+ В этом разделе мы начинаем заполнять файловую систему LFS элементами, которые
+ будут основой конечной системы Linux. Первым шагом является создание ограниченной
иерархии каталогов, чтобы программы, скомпилированные в (а также glibc и libstdc++ в ), могли быть установлены в их конечном расположении.
- Это необходимо для того, чтобы временные программы были перезаписаны при их пересборке
- в .
+ Это необходимо для того, чтобы эти временные программы были перезаписаны при сборке
+ окончательных версий в .
Создайте необходимую иерархию каталогов, выполнив следующую команду от имени
root:
@@ -34,8 +35,20 @@ esac
с помощью кросс-компилятора (более подробная информация приведена в разделе ). Чтобы отделить кросс-компилятор от других
программ, он будет установлен в специальный каталог. Создайте этот каталог с
- помощью команды:
+ помощью следующей команды:
mkdir -pv $LFS/tools
+
+
+ Редакторы LFS намеренно решили не использовать каталог
+ /usr/lib64. В процессе сборки предпринимается
+ ряд шагов, чтобы убедиться, что набор инструментов не будет его использовать. Если
+ по какой-либо причине этот каталог появится (это может произойти, если вы допустили
+ ошибку, следуя инструкциям, или потому что вы установили бинарный пакет, создавший
+ его после сборки LFS), это может привести к поломке вашей системы. Вы должны быть
+ уверены, что этого каталога не существует.
+
+
+
diff --git a/chapter04/introduction.xml b/chapter04/introduction.xml
index b7acfc4..9ee2788 100644
--- a/chapter04/introduction.xml
+++ b/chapter04/introduction.xml
@@ -12,11 +12,11 @@
В этой главе мы выполним несколько задач, чтобы подготовиться к
сборке временной системы. Мы создадим несколько каталогов в
- $LFS для установки временных
- инструментов, добавим непривилегированного пользователя для снижения риска
- и настроим окружение для этого пользователя. Кроме этого, будут даны
- пояснения по стандартной единице времени сборки, или SBU
,
- которую мы используем для измерения того, сколько времени требуется для
- сборки пакетов LFS, и предоставим некоторую информацию о наборах тестов.
+ $LFS (в котором установим временные
+ инструменты), добавим непривилегированного пользователя и настроим окружение
+ для этого пользователя. Кроме этого, будут даны пояснения по стандартной
+ единице времени сборки, или SBU
, которую мы используем для
+ измерения времени необходимого для сборки пакетов LFS, и предоставим некоторую
+ информацию о наборах тестов.
diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml
index 54d82af..5036def 100644
--- a/chapter04/settingenviron.xml
+++ b/chapter04/settingenviron.xml
@@ -20,16 +20,18 @@
EOF
При входе в систему под учетной записью пользователя
- lfs начальная оболочка представляет
- собой оболочку входа в систему, которая читает данные из
- /etc/profile хоста (который, возможно, содержит некоторые
+ lfs или при переключении на
+ &lfs-user;, используя команду su с опцией
+ -
, начальная оболочка представляет собой
+ оболочку login, которая читает данные из
+ /etc/profile хоста (который, вероятно, содержит некоторые
настройки и переменные среды), а затем .bash_profile.
Команда exec env -i.../bin/bash в файле
.bash_profile заменяет запущенную оболочку новой, не
содержащей переменные среды, за исключением переменных HOME,
TERM, и PS1. Это гарантирует, что никакие
нежелательные и потенциально опасные переменные среды из хост-системы не попадут
- в среду сборки. Используемая здесь техника позволяет получить чистое окружение.
+ в среду сборки.
Новый экземпляр оболочки представляет собой non-login
оболочку, которая не считывает и не выполняет содержимое файлов
@@ -61,9 +63,9 @@ EOF
—bash использует хеш-таблицу для запоминания полного
пути к исполняемому файлу, чтобы избежать многократного поиска одного и того же
исполняемого файла в переменной окружения PATH. Однако новые
- инструменты требуется использовать сразу же после их установки. Отключив
- хэш-функцию, оболочка всегда будет искать переменную окружения PATH,
- когда программу необходимо запустить. Таким образом, оболочка найдет вновь
+ инструменты требуется использовать сразу же после их установки. Отключение
+ хэш-функции, заставляет оболочку искать переменную окружения PATH,
+ всякий раз, когда программу необходимо запустить. Таким образом, оболочка найдет вновь
скомпилированные инструменты в $LFS/tools/bin,
как только они станут доступны, не запоминая предыдущую версию той же программы,
предоставленную хост-дистрибутивом, в /usr/bin или
@@ -85,7 +87,7 @@ EOF
LFS=/mnt/lfs
- Переменная окружения LFS должны указывать на выбранную точку монтирования.
+ Переменная окружения LFS должна указывать на выбранную точку монтирования.
@@ -95,7 +97,8 @@ EOF
Переменная LC_ALL управляет локализацией определенных
программ, и формирует сообщения в соответствии с локализаций указанной страны.
Установка в LC_ALL значения POSIX
или C
- (они эквивалентны) гарантирует, что в среде chroot все будет работать должным образом.
+ (они эквивалентны) гарантирует, что все будет работать должным образом в среде
+ кросс-компиляции.
@@ -105,7 +108,7 @@ EOF
Переменная LFS_TGT устанавливает нестандартное, но
совместимое описание компьютера для использования при создании кросс-компилятора
и компоновщика, а также при кросс-компиляции временного набора инструментов.
- Дополнительная информация об этом содержится в .
+ Дополнительная информация об этом представлена в .
@@ -114,10 +117,10 @@ EOF
Многие современные дистрибутивы Linux объединили /bin и /usr/bin. В этом случае для стандартной переменной PATH
- необходимо просто установить значение /usr/bin/ для среды . Когда это не так, следующая строка добавляет
+ class="directory">/usr/bin. В этом случае стандартной переменной PATH
+ необходимо установить значение /usr/bin/ для окружения из . Когда это не так, следующая строка добавит
/bin к пути.
@@ -126,7 +129,7 @@ EOF
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
Если /bin не является символической
- ссылкой, то ее необходимо добавить в переменную PATH.
+ ссылкой, то его необходимо добавить в переменную PATH.
@@ -137,7 +140,7 @@ EOF
стандартным PATH, кросс-компилятор, установленный в начале
, будет обнаружен оболочкой сразу после
его установки. Это, в сочетании с отключением хеширования, ограничивает риск
- использования компилятора с хоста вместо кросс-компилятора.
+ использования компилятора хоста вместо кросс-компилятора.
@@ -164,8 +167,8 @@ EOF
- Некоторые дистрибутивы добавляют недокументированный экземпляр
- /etc/bash.bashrc к инициализации bash.
+ Некоторые коммерческие дистрибутивы добавляют недокументированный экземпляр
+ /etc/bash.bashrc для инициализации bash.
Этот файл потенциально может изменить среду пользователя
lfs таким образом, что это может
повлиять на сборку важных пакетов LFS. Чтобы убедиться, что пользовательская
@@ -175,10 +178,9 @@ EOF
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
- После завершения работ под учетной записью пользователя
- lfs в начале вы можете восстановить
- /etc/bash.bashrc (при желании).
+ Когда пользователь lfs больше не
+ нужен (в начале ) вы можете безопасно
+ восстановить /etc/bash.bashrc (по желанию).
Обратите внимание, что пакет LFS Bash, который мы создадим в
, не настроен на загрузку или выполнение
@@ -186,8 +188,8 @@ EOF
готовой системе LFS.
- Наконец, чтобы полностью подготовить среду для сборки временных инструментов,
- используйте только что созданный профиль пользователя
+ Наконец, чтобы убедиться, что среда полностью подготовлена для сборки временных
+ инструментов, перечитайте только что созданный профиль пользователя:
source ~/.bash_profile