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