diff options
Diffstat (limited to 'lfs-12.0-sysv/chapter02/hostreqs.html')
-rw-r--r-- | lfs-12.0-sysv/chapter02/hostreqs.html | 379 |
1 files changed, 379 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter02/hostreqs.html b/lfs-12.0-sysv/chapter02/hostreqs.html new file mode 100644 index 0000000..a99a5e5 --- /dev/null +++ b/lfs-12.0-sysv/chapter02/hostreqs.html @@ -0,0 +1,379 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <title> + 2.2. Требования к хост-системе + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /> + <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= + "text/css" media="print" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + </head> + <body class="lfs" id="lfs-12.0"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.0 + </h4> + <h3> + Глава 2. Подготовка хост-системы + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="introduction.html" title= + "Введение">Пред.</a> + <p> + Введение + </p> + </li> + <li class="next"> + <a accesskey="n" href="stages.html" title= + "Этапы сборки системы LFS">След.</a> + <p> + Этапы сборки системы LFS + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter02.html" title= + "Глава 2. Подготовка хост-системы">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.0">Начало</a> + </li> + </ul> + </div> + <div class="sect1" lang="en" xml:lang="en"> + <h1 class="sect1"> + <a id="ch-partitioning-hostreqs" name= + "ch-partitioning-hostreqs"></a>2.2. Требования к хост-системе + </h1> + <div class="sect2" lang="en" xml:lang="en"> + <h2 class="sect2"> + 2.2.1. Аппаратное обеспечение + </h2> + <p> + Редакторы LFS рекомендуют, чтобы процессор имел не менее четырех + ядер и не менее 8 ГБ памяти. Старые системы, не отвечающие этим + требованиям, будут по-прежнему работать, но время сборки пакетов + будет значительно больше, чем указано в документации. + </p> + </div> + <div class="sect2" lang="en" xml:lang="en"> + <h2 class="sect2"> + 2.2.2. Программное обеспечение + </h2> + <p> + Ваша хост-система должна иметь следующее программное обеспечение с + указанными минимальными версиями. Это не должно быть проблемой для + большинства современных дистрибутивов Linux. Также обратите + внимание на то, что многие дистрибутивы помещают заголовочные файлы + в отдельные пакеты, как правило в формате <span class= + "quote">«<span class= + "quote"><package-name>-devel</span>»</span> или <span class= + "quote">«<span class= + "quote"><package-name>-dev</span>»</span>. Обязательно + установите эти пакеты, если ваш дистрибутив их предоставляет. + </p> + <p> + Более ранние версии перечисленных ниже пакетов могут работать, но + это не проверялось. + </p> + <div class="itemizedlist"> + <ul class="compact"> + <li class="listitem"> + <p> + <span class="strong"><strong>Bash-3.2</strong></span> + (/bin/sh должен быть символической или жесткой ссылкой на + bash) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Binutils-2.13.1</strong></span> + (Версия выше 2.41 не рекомендуется, так как она не + тестировалась) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Bison-2.7</strong></span> + (/usr/bin/yacc должен быть ссылкой на bison или небольшой + скрипт, запускающий bison) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Coreutils-7.0</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Diffutils-2.8.1</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Findutils-4.2.31</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Gawk-4.0.1</strong></span> + (/usr/bin/awk должен быть ссылкой на gawk) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>GCC-5.1</strong></span>, включая + компилятор C++, <span class= + "command"><strong>g++</strong></span> (версии выше 11.2.0 не + рекомендуются, поскольку они не тестировались). Также должны + присутствовать стандартные библиотеки C и C++ (с + заголовочными файлами), чтобы компилятор C++ мог осуществлять + сборку программ. + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Grep-2.5.1a</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Gzip-1.3.12</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Linux + Kernel-4.14</strong></span> + </p> + <p> + Причиной, по которой указаны минимальные требования к версии + ядра, является то, что мы указываем эту версию при сборке + <span class="application">glibc</span> в <a class="xref" + href="../chapter05/chapter05.html" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> и <a class= + "xref" href="../chapter08/chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. Так как более старые ядра не + поддерживаются, скомпилированный пакет <span class= + "application">glibc</span> немного меньше и быстрее. По + состоянию на июнь 2023 г. 4.14 является самой старой версией + ядра, поддерживаемой разработчиками ядра. + </p> + <p> + Если версия ядра хоста более ранняя, чем 4.14, вам необходимо + обновить ядро на более современную версию. Есть два способа + сделать это. Во-первых, посмотрите, предоставляет ли ваш + дистрибутив Linux пакет ядра 4.14 или более позднюю версию. + Если это так, установите его. Если ваш дистрибутив не + предлагает приемлемый пакет ядра или вы предпочитаете не + устанавливать его, вы можете скомпилировать ядро + самостоятельно. Инструкции по компиляции ядра и настройке + загрузчика (при условии, что хост использует GRUB) находятся + в <a class="xref" href="../chapter10/chapter10.html" title= + "Глава 10. Делаем систему LFS загрузочной">Глава 10</a>. + </p> + <p> + Для сборки LFS необходимо, чтобы ядро хоста поддерживало + псевдотерминал UNIX 98 (PTY). Обычно он включен на всех + настольных или серверных дистрибутивах, поставляющих Linux + 4.14 или более новое ядро. Если вы собираете собственное + хоста, убедитесь, что для параметра <code class= + "option">CONFIG_UNIX98_PTYS</code> установлено значение + <code class="literal">y</code> в конфигурационном файле ядра. + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>M4-1.4.10</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Make-4.0</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Patch-2.5.4</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Perl-5.8.8</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Python-3.4</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Sed-4.1.5</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Tar-1.22</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Texinfo-5.0</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Xz-5.0.0</strong></span> + </p> + </li> + </ul> + </div> + <div class="admon important"> + <img alt="[Важно]" src="../images/important.png" /> + <h3> + Важно + </h3> + <p> + Обратите внимание, что упомянутые выше символические ссылки + необходимы для создания системы LFS с использованием инструкций, + содержащихся в этой книге. Симлинки, указывающие на другое + программное обеспечение (например, dash, mawk и т. д.), могут + работать, но не тестируются и не поддерживаются командой + разработчиков LFS, и могут потребовать либо отклонения от + инструкций, либо дополнительных исправлений для некоторых + пакетов. + </p> + </div> + <h2> + <a id="version-check" name="version-check"></a> + </h2> + <p> + Чтобы узнать, есть ли в вашей хост-системе все необходимые пакеты и + возможность компилировать программы, выполните следующий скрипт: + </p> + <pre class="userinput"><kbd class= + "command">cat > version-check.sh << "EOF" +<code class="literal">#!/bin/bash +# A script to list version numbers of critical development tools + +# If you have tools installed in other directories, adjust PATH here AND +# in ~lfs/.bashrc (section 4.4) as well. + +LC_ALL=C +PATH=/usr/bin:/bin + +bail() { echo "FATAL: $1"; exit 1; } +grep --version > /dev/null 2> /dev/null || bail "grep does not work" +sed '' /dev/null || bail "sed does not work" +sort /dev/null || bail "sort does not work" + +ver_check() +{ + if ! type -p $2 &>/dev/null + then + echo "ERROR: Cannot find $2 ($1)"; return 1; + fi + v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1) + if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null + then + printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0; + else + printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; + return 1; + fi +} + +ver_kernel() +{ + kver=$(uname -r | grep -E -o '^[0-9\.]+') + if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null + then + printf "OK: Linux Kernel $kver >= $1\n"; return 0; + else + printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; + return 1; + fi +} + +# Coreutils first because-sort needs Coreutils >= 7.0 +ver_check Coreutils sort 7.0 || bail "--version-sort unsupported" +ver_check Bash bash 3.2 +ver_check Binutils ld 2.13.1 +ver_check Bison bison 2.7 +ver_check Diffutils diff 2.8.1 +ver_check Findutils find 4.2.31 +ver_check Gawk gawk 4.0.1 +ver_check GCC gcc 5.1 +ver_check "GCC (C++)" g++ 5.1 +ver_check Grep grep 2.5.1a +ver_check Gzip gzip 1.3.12 +ver_check M4 m4 1.4.10 +ver_check Make make 4.0 +ver_check Patch patch 2.5.4 +ver_check Perl perl 5.8.8 +ver_check Python python3 3.4 +ver_check Sed sed 4.1.5 +ver_check Tar tar 1.22 +ver_check Texinfo texi2any 5.0 +ver_check Xz xz 5.0.0 +ver_kernel 4.14 + +if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ] +then echo "OK: Linux Kernel supports UNIX 98 PTY"; +else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi + +alias_check() { + if $1 --version 2>&1 | grep -qi $2 + then printf "OK: %-4s is $2\n" "$1"; + else printf "ERROR: %-4s is NOT $2\n" "$1"; fi +} +echo "Aliases:" +alias_check awk GNU +alias_check yacc Bison +alias_check sh Bash + +echo "Compiler check:" +if printf "int main(){}" | g++ -x c++ - +then echo "OK: g++ works"; +else echo "ERROR: g++ does NOT work"; fi +rm -f a.out</code> +EOF + +bash version-check.sh</kbd></pre> + </div> + </div> + <div class="navfooter"> + <ul> + <li class="prev"> + <a accesskey="p" href="introduction.html" title= + "Введение">Пред.</a> + <p> + Введение + </p> + </li> + <li class="next"> + <a accesskey="n" href="stages.html" title= + "Этапы сборки системы LFS">След.</a> + <p> + Этапы сборки системы LFS + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter02.html" title= + "Глава 2. Подготовка хост-системы">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.0">Начало</a> + </li> + </ul> + </div> + </body> +</html> |