%general-entities; ]> Host System Requirements Hardware The LFS editors recommend that the system CPU have at least four cores and that the system have at least 8 GB of memory. Older systems that do not meet these requirements will still work, but the time to build packages will be significantly longer than documented. Software Your host system should have the following software with the minimum versions indicated. This should not be an issue for most modern Linux distributions. Also note that many distributions will place software headers into separate packages, often in the form of <package-name>-devel or <package-name>-dev. Be sure to install those if your distribution provides them. Earlier versions of the listed software packages may work, but have not been tested. Bash-3.2 (/bin/sh should be a symbolic or hard link to bash) Binutils-2.38 (Versions greater than &binutils-version; are not recommended as they have not been tested) Bison-2.7 (/usr/bin/yacc should be a link to bison or a small script that executes bison) Coreutils-7.0 Diffutils-2.8.1 Findutils-4.2.31 Gawk-4.0.1 (/usr/bin/awk should be a link to gawk) GCC-12.2 including the C++ compiler, g++ (Versions greater than &gcc-version; are not recommended as they have not been tested). C and C++ standard libraries (with headers) must also be present so the C++ compiler can build hosted programs Grep-2.5.1a Gzip-1.3.12 Linux Kernel-&min-kernel; The reason for the kernel version requirement is that we specify that version when building glibc in and , and &min-kernel; is the oldest kernel release supported by Glibc for LoongArch. If a Linux distribution on LoongArch provides a kernel older than &min-kernel;, it indicates the distribution is using a preliminary version of the kernel ABI. The preliminary draft was rejected by the kernel maintainers and it's fundamentally incompatible with the packages we will built for LFS. Such old-world distributions (for example, Loongnix) cannot be used as a host distro for building LFS. Do not attempt to update the kernel to &min-kernel; or later on a old-world distro because doing so will cause a boot failure. Use a new-world distribution providing Linux Kernel &min-kernel; or newer instead. You may need to contact the vendor of your hardware to get a firmware update for booting a new-world distribution because the boot protocol of LoongArch is stabilized after the launch of the early LoongArch hardwares. We require the host kernel to support UNIX 98 pseudo terminal (PTY). It should be enabled on all desktop or server distros shipping Linux &min-kernel; or a newer kernel. If you are building a custom host kernel, ensure is set to y in the kernel configuration. M4-1.4.10 Make-4.0 Patch-2.5.4 Perl-5.8.8 Python-3.4 Sed-4.1.5 Tar-1.22 Texinfo-4.7 Xz-5.0.0 Note that the symlinks mentioned above are required to build an LFS system using the instructions contained within this book. Symlinks that point to other software (such as dash, mawk, etc.) may work, but are not tested or supported by the LFS development team, and may require either deviation from the instructions or additional patches to some packages. To see whether your host system has all the appropriate versions, and the ability to compile programs, run the following commands: cat > version-check.sh << "EOF" #!/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.38 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 12.2 ver_check "GCC (C++)" g++ 12.2 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 4.7 ver_check Xz xz 5.0.0 ver_kernel &min-kernel; 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 EOF bash version-check.sh