diff --git a/chapter04/aboutsbus.xml b/chapter04/aboutsbus.xml index 7b22448..951a15f 100644 --- a/chapter04/aboutsbus.xml +++ b/chapter04/aboutsbus.xml @@ -34,18 +34,6 @@ некоторых случаях цифры могут отличаться на десятки минут. - Для многих современных систем с несколькими процессорами (или ядрами) - время компиляции пакета можно сократить, выполнив параллельную сборку, - либо установив переменную среды, либо сообщив программе make, - сколько ядер задействовать для сборки. Например, процессор Intel i5-6500 может - поддерживать четыре одновременных потока: - - export MAKEFLAGS='-j4' - - или просто собирать с флагом: - - make -j4 - Когда используется несколько ядер, единицы измерения SBU будут различаться еще больше, чем обычно. В некоторых случаях make просто завершится ошибкой. Анализ выходных данных процесса сборки также будет более diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml index d58a5f4..bf2a283 100644 --- a/chapter04/settingenviron.xml +++ b/chapter04/settingenviron.xml @@ -174,7 +174,7 @@ EOF повлиять на сборку важных пакетов LFS. Чтобы убедиться, что пользовательская среда lfs чиста, проверьте наличие файла /etc/bash.bashrc и, если он есть, переименуйте его. - От пользователя root, запустите: + От имени пользователя root, запустите: [ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE @@ -188,6 +188,54 @@ EOF готовой системе LFS. + + Для многих современных систем с несколькими процессорами (или ядрами) + время компиляции пакета можно сократить, выполнив параллельную сборку, + либо установив переменную среды, либо сообщив программе make, + сколько ядер задействовать для сборки. Например, процессор Intel Core i9-13900K + имеет 8 ядер P (производительность) и 16 ядер E (энергоэффективность), ядро P может + одновременно запускать два потока, поэтому каждое ядро P моделируется ядром Linux + как два логических ядра. В результате получается 32 логических ядра. Очевидный способ + задействовать все эти логические ядра - разрешить make создавать + до 32 заданий сборки. Это можно сделать, передав параметр -j32 + команде make: + + + make -j32 + + + Или установите переменную окружения MAKEFLAGS, и ее содержимое будет + автоматически использоваться make в качестве параметров командной + строки: + + + export MAKEFLAGS=-j32 + + + + Никогда не передавайте параметр -j без номера в + make и не устанавливайте такой параметр в MAKEFLAGS. + Иначе make будет создавать бесконечные задания сборки, + что вызовет проблемы со стабильностью системы. + + + + + Чтобы использовать все логические ядра, доступные для сборки пакетов в + и + , укажите параметр MAKEFLAGS + в .bashrc сейчас: + + +cat >> ~/.bashrc << "EOF" +export MAKEFLAGS=-j$(nproc) +EOF + + + Замените $(nproc) количеством логических ядер, которые + вы хотите использовать, если вы планируете использовать не все логические ядра. + + Наконец, чтобы убедиться, что среда полностью подготовлена для сборки временных инструментов, перечитайте только что созданный профиль пользователя: diff --git a/chapter07/chroot.xml b/chapter07/chroot.xml index b2b62bd..7bef4ad 100644 --- a/chapter07/chroot.xml +++ b/chapter07/chroot.xml @@ -22,8 +22,20 @@ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ + MAKEFLAGS="-j$(nproc)" \ + TESTSUITEFLAGS="-j$(nproc)" \ /bin/bash --login + + Если вы не хотите использовать все доступные логические ядра, замените параметр + $(nproc) количеством логических ядер, которые вы хотите + использовать для сборки пакетов в этой и последующих главах. На наборы тестов некоторых + пакетов (в частности Autoconf, Libtool и Tar) в &ch-final; не влияет установка переменной + MAKEFLAGS, вместо этого они используют переменную среды + TESTSUITEFLAGS. Мы также установили её здесь для запуска тестов с поддержкой + нескольких ядер. + + Параметр -i команды env, очистит все переменные в среде chroot. После этого переменные HOME, TERM, PS1 и @@ -44,9 +56,9 @@ указан в переменной окружения PATH. Это означает, что кросс-тулчейн больше не будет использоваться. - Обратите внимание, что в командной строке bash будет указано - I have no name!. Это нормально, поскольку файл - /etc/passwd еще не создан. + Также обратите внимание, что в командной строке bash будет + указано I have no name!. Это нормально, поскольку + файл /etc/passwd еще не создан. Важно, чтобы все команды в оставшейся части этой главы и следующих главах diff --git a/chapter08/automake.xml b/chapter08/automake.xml index 485813e..bc70745 100644 --- a/chapter08/automake.xml +++ b/chapter08/automake.xml @@ -52,11 +52,14 @@ make - Использование опции make -j4 ускоряет тесты даже в системах с одним - процессором из-за внутренних задержек в отдельных тестах. Чтобы протестировать - пакет, выполните: + Использование четырех параллельных заданий ускоряет тестирование даже на системах + с меньшим количеством логических ядер из-за внутренних задержек в отдельных тестах. Чтобы + протестировать пакет, выполните: -make -j4 check +make -j$(($(nproc)>4?$(nproc):4)) check + + Замените $((...)) количеством логических ядер, которые + вы хотите использовать, если вы не планируете использовать все. Известно, что тест t/subobj.sh не проходит. diff --git a/chapter08/openssl.xml b/chapter08/openssl.xml index 232e62a..3703fb1 100644 --- a/chapter08/openssl.xml +++ b/chapter08/openssl.xml @@ -62,7 +62,7 @@ Чтобы протестировать пакет, выполните: -make test +HARNESS_JOBS=$(nproc) make test Известно, что один тест, 30-test_afalg.t, завершится ошибкой, если в ядре хоста не включен параметр или diff --git a/chapter08/perl.xml b/chapter08/perl.xml index 3deab54..f6e6964 100644 --- a/chapter08/perl.xml +++ b/chapter08/perl.xml @@ -110,7 +110,7 @@ export BUILD_BZIP2=0 Чтобы протестировать пакет (примерно 11 SBU), выполните: -make test +TEST_JOBS=$(nproc) make test_harness Установка пакета и очистка: diff --git a/packages.ent b/packages.ent index 8eba873..9b8d2aa 100644 --- a/packages.ent +++ b/packages.ent @@ -47,10 +47,10 @@ - - + + - + @@ -148,10 +148,10 @@ - - + + - + @@ -208,10 +208,10 @@ - - + + - + @@ -317,10 +317,10 @@ - - + + - + @@ -341,10 +341,10 @@ - - + + - + @@ -430,13 +430,13 @@ - - + + - + - + - + - - + + @@ -762,10 +762,10 @@ - - + + - +