source: chapter02/hostreqs.xml@ ed431efc

xry111/loongarch xry111/loongarch-12.1
Last change on this file since ed431efc was ed431efc, checked in by Xi Ruoyao <xry111@…>, 9 months ago

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

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