source: chapter02/hostreqs.xml@ 2860e34

xry111/loongarch-12.2
Last change on this file since 2860e34 was 33a9421, checked in by Xi Ruoyao <xry111@…>, 8 months ago

Merge remote-tracking branch 'origin/trunk' into xry111/loongarch

  • Property mode set to 100644
File size: 9.5 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-partitioning-hostreqs" xreflabel="Host System Requirements">
9 <?dbhtml filename="hostreqs.html"?>
10
11 <title>Host System Requirements</title>
12
13 <sect2>
14 <title>Hardware</title>
15
16 <para>The LFS editors recommend that the system CPU have at least
17 four cores and that the system have at least 8 GB of memory.
18 Older systems that do not meet these requirements will still work,
19 but the time to build packages will be significantly longer
20 than documented.
21 </para>
22
23 </sect2>
24
25 <sect2>
26 <title>Software</title>
27
28 <para>Your host system should have the following software with the
29 minimum versions indicated. This should not be an issue for most
30 modern Linux distributions. Also note that many distributions will
31 place software headers into separate packages, often in the form of
32 <literal><replaceable>&lt;package-name&gt;</replaceable>-devel</literal>
33 or
34 <literal><replaceable>&lt;package-name&gt;</replaceable>-dev</literal>.
35 Be sure to install those if your distribution provides them.</para>
36
37 <para>Earlier versions of the listed software packages may work, but have
38 not been tested.</para>
39
40 <itemizedlist spacing="compact">
41
42 <listitem>
43 <para><emphasis role="strong">Bash-3.2</emphasis> (/bin/sh
44 should be a symbolic or hard link to bash)</para>
45 </listitem>
46
47 <listitem>
48 <para><emphasis role="strong">Binutils-2.38</emphasis> (Versions
49 greater than &binutils-version; are not recommended as they have
50 not been tested)</para>
51 </listitem>
52
53 <listitem>
54 <para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
55 should be a link to bison or a small script that executes bison)</para>
56 </listitem>
57
58 <!-- In Coreutils-8.1 the nproc program is added. -->
59 <listitem>
60 <para><emphasis role="strong">Coreutils-8.1</emphasis></para>
61 </listitem>
62
63 <listitem>
64 <para><emphasis role="strong">Diffutils-2.8.1</emphasis></para>
65 </listitem>
66
67 <listitem>
68 <para><emphasis role="strong">Findutils-4.2.31</emphasis></para>
69 </listitem>
70
71 <listitem>
72 <para><emphasis role="strong">Gawk-4.0.1</emphasis> (/usr/bin/awk
73 should be a link to gawk)</para>
74 </listitem>
75
76 <listitem>
77 <para><emphasis role="strong">GCC-12.2</emphasis> including the C++
78 compiler, <command>g++</command> (Versions greater than &gcc-version; are
79 not recommended as they have not been tested). C and C++ standard
80 libraries (with headers) must also be present so the C++ compiler can
81 build hosted programs</para>
82 </listitem>
83
84 <listitem>
85 <para><emphasis role="strong">Grep-2.5.1a</emphasis></para>
86 </listitem>
87
88 <listitem>
89 <para><emphasis role="strong">Gzip-1.3.12</emphasis></para>
90 </listitem>
91
92 <listitem>
93 <para><emphasis role="strong">Linux Kernel-&min-kernel;</emphasis></para>
94
95 <para>The reason for the kernel version requirement is that we specify
96 that version when building <application>glibc</application> in
97 <xref linkend="chapter-cross-tools"/> and
98 <xref linkend="chapter-building-system"/>, and
99 &min-kernel; is the oldest kernel release supported by Glibc for
100 LoongArch.</para>
101
102 <important>
103 <para>
104 If a Linux distribution on LoongArch provides a kernel older than
105 &min-kernel;, it indicates the distribution is using a preliminary
106 version of the kernel ABI. The preliminary draft was rejected by
107 the kernel maintainers and it's fundamentally incompatible with
108 the packages we will built for LFS. Such <quote>old-world</quote>
109 distributions (for example, Loongnix) cannot be used as a host
110 distro for building LFS.
111 </para>
112
113 <para>
114 Do not attempt to update the kernel to &min-kernel; or later on
115 a old-world distro because doing so will cause a boot failure.
116 Use a <quote>new-world</quote> distribution providing Linux Kernel
117 &min-kernel; or newer instead. You may need to contact the vendor
118 of your hardware to get a firmware update for booting a new-world
119 distribution because the boot protocol of LoongArch is stabilized
120 after the launch of the early LoongArch hardwares.
121 </para>
122 </important>
123
124 <para>We require the host kernel to support UNIX 98 pseudo terminal
125 (PTY). It should be enabled on all desktop or server distros shipping
126 Linux &min-kernel; or a newer kernel. If you are building a custom
127 host kernel, ensure <option>CONFIG_UNIX98_PTYS</option> is set to
128 <literal>y</literal> in the kernel configuration.</para>
129
130 </listitem>
131
132 <listitem>
133 <para><emphasis role="strong">M4-1.4.10</emphasis></para>
134 </listitem>
135
136 <listitem>
137 <para><emphasis role="strong">Make-4.0</emphasis></para>
138 </listitem>
139
140 <listitem>
141 <para><emphasis role="strong">Patch-2.5.4</emphasis></para>
142 </listitem>
143
144 <listitem>
145 <para><emphasis role="strong">Perl-5.8.8</emphasis></para>
146 </listitem>
147
148 <listitem>
149 <para><emphasis role="strong">Python-3.4</emphasis></para>
150 </listitem>
151
152 <listitem>
153 <para><emphasis role="strong">Sed-4.1.5</emphasis></para>
154 </listitem>
155
156 <listitem>
157 <para><emphasis role="strong">Tar-1.22</emphasis></para>
158 </listitem>
159
160 <listitem>
161 <para><emphasis role="strong">Texinfo-5.0</emphasis></para>
162 </listitem>
163
164 <listitem>
165 <para><emphasis role="strong">Xz-5.0.0</emphasis></para>
166 </listitem>
167
168 </itemizedlist>
169
170 <important>
171 <para>Note that the symlinks mentioned above are required to build an LFS
172 system using the instructions contained within this book. Symlinks that
173 point to other software (such as dash, mawk, etc.) may work, but are not
174 tested or supported by the LFS development team, and may require either
175 deviation from the instructions or additional patches to some
176 packages.</para>
177 </important>
178
179 <!-- Use an empty sect2 element to prevent a pdf warning. -->
180 <bridgehead renderas="sect2"
181 id="version-check"
182 xreflabel="Host System Requirements">
183 </bridgehead>
184 <!--<title> </title>-->
185
186 <para >To see whether your host system has all the appropriate versions, and
187 the ability to compile programs, run the following commands:</para>
188
189<screen role="nodump"><?dbfo keep-together="auto"?><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
190<literal>#!/bin/bash
191# A script to list version numbers of critical development tools
192
193# If you have tools installed in other directories, adjust PATH here AND
194# in ~lfs/.bashrc (section 4.4) as well.
195
196LC_ALL=C
197PATH=/usr/bin:/bin
198
199bail() { echo "FATAL: $1"; exit 1; }
200grep --version > /dev/null 2> /dev/null || bail "grep does not work"
201sed '' /dev/null || bail "sed does not work"
202sort /dev/null || bail "sort does not work"
203
204ver_check()
205{
206 if ! type -p $2 &amp;>/dev/null
207 then
208 echo "ERROR: Cannot find $2 ($1)"; return 1;
209 fi
210 v=$($2 --version 2>&amp;1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
211 if printf '%s\n' $3 $v | sort --version-sort --check &amp;>/dev/null
212 then
213 printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0;
214 else
215 printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1";
216 return 1;
217 fi
218}
219
220ver_kernel()
221{
222 kver=$(uname -r | grep -E -o '^[0-9\.]+')
223 if printf '%s\n' $1 $kver | sort --version-sort --check &amp;>/dev/null
224 then
225 printf "OK: Linux Kernel $kver >= $1\n"; return 0;
226 else
227 printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver";
228 return 1;
229 fi
230}
231
232# Coreutils first because --version-sort needs Coreutils >= 7.0
233ver_check Coreutils sort 8.1 || bail "Coreutils too old, stop"
234ver_check Bash bash 3.2
235ver_check Binutils ld 2.38
236ver_check Bison bison 2.7
237ver_check Diffutils diff 2.8.1
238ver_check Findutils find 4.2.31
239ver_check Gawk gawk 4.0.1
240ver_check GCC gcc 12.2
241ver_check "GCC (C++)" g++ 12.2
242ver_check Grep grep 2.5.1a
243ver_check Gzip gzip 1.3.12
244ver_check M4 m4 1.4.10
245ver_check Make make 4.0
246ver_check Patch patch 2.5.4
247ver_check Perl perl 5.8.8
248ver_check Python python3 3.4
249ver_check Sed sed 4.1.5
250ver_check Tar tar 1.22
251ver_check Texinfo texi2any 5.0
252ver_check Xz xz 5.0.0
253ver_kernel &min-kernel;
254
255if mount | grep -q 'devpts on /dev/pts' &amp;&amp; [ -e /dev/ptmx ]
256then echo "OK: Linux Kernel supports UNIX 98 PTY";
257else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
258
259alias_check() {
260 if $1 --version 2>&amp;1 | grep -qi $2
261 then printf "OK: %-4s is $2\n" "$1";
262 else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
263}
264echo "Aliases:"
265alias_check awk GNU
266alias_check yacc Bison
267alias_check sh Bash
268
269echo "Compiler check:"
270if printf "int main(){}" | g++ -x c++ -
271then echo "OK: g++ works";
272else echo "ERROR: g++ does NOT work"; fi
273rm -f a.out
274
275if [ "$(nproc)" = "" ]; then
276 echo "ERROR: nproc is not available or it produces empty output"
277else
278 echo "OK: nproc reports $(nproc) logical cores are available"
279fi</literal>
280EOF
281
282bash version-check.sh</userinput></screen>
283
284 </sect2>
285</sect1>
Note: See TracBrowser for help on using the repository browser.