Les éditeurs de LFS recommandent d'avoir un CPU avec au moins 4 cœurs et un système avec au moins 8 Go de mémoire. Les systèmes plus vieux qui n'atteignent pas ces prérequis fonctionneront quand même mais le temps de construction des paquets sera bien plus long que ce qui est documenté.
Votre système hôte doit contenir les logiciels suivants dans la
version minimum indiquée. Cela ne devrait pas être un problème pour
la plupart des distributions modernes de Linux. Notez également que
certaines distributions placeront les en-têtes des logiciels dans
des paquets distincts, ayant souvent la forme suivante :
ou <nom-du-paquet>
-devel
.
Assurez-vous de les installer si votre distribution les fournit.
<nom-du-paquet>
-dev
Il se peut que les versions antérieures des paquets logiciels listés fonctionnent, mais elles n'ont pas été testées.
Bash-3.2 (/bin/sh doit être un lien symbolique ou matériel vers bash)
Binutils-2.13.1 (les versions ultérieures à 2.42 ne sont pas recommandées car elles n'ont pas été testées)
Bison-2.7 (/usr/bin/yacc doit être un lien vers bison ou un petit script qui exécute bison)
Coreutils-8.1
Diffutils-2.8.1
Findutils-4.2.31
Gawk-4.0.1 (/usr/bin/awk doit être un lien vers gawk)
GCC-5.2, y compris le compilateur C++, g++ (les versions ultérieures à 13.2.0 ne sont pas recommandées, car elles n'ont pas été testées). Les bibliothèques standards C et C++ (avec les headers) doivent également être présentes pour que le compilateur C++ puisse construire les programmes hébergés
Grep-2.5.1a
Gzip-1.3.12
Noyau Linux-4.19
La raison pour laquelle cette version du noyau est requise est que nous spécifions cette version lors de la construction de glibc dans Chapitre 5 et Chapitre 8, pour que les contournements pour les anciens noyaux ne soient pas activés et que la glibc compilée soit un peu plus rapide et plus petite. En février 2024, 4.19 est la plus vieille version du noyau prise en charge par les développeurs du noyau. Certaines versions du noyau plus vieilles que 4.19 peuvent toujours être prises en charge par des équipes tierces, mais elles ne sont pas considérées comme des versions officielles en amont. Consultez https://kernel.org/category/releases.html pour plus de détails.
Si le noyau hôte est plus ancien que le 4.19, vous devez le remplacer avec une version plus récente. Il existe deux méthodes de remplacement. Dans un premier temps, vérifiez si votre distribution Linux fournit un paquet pour le noyau 4.19 ou pour un noyau plus récent. Si c'est le cas, vous pouvez l'installer. Si votre distribution ne propose pas de paquet correspondant pour le noyau, ou si vous préférez ne pas l'installer, vous pouvez compiler le noyau vous-même. Les instructions pour la compilation du noyau et la configuration du chargeur d’amorçage (en supposant que le système hôte utilise GRUB) sont disponibles au Chapitre 10.
Nous avons besoin que le noyau hôte prenne en charge les
pseudo-terminaux UNIX 98 (PTY). Cela devrait être activé sur
toutes les distributions de bureau et de serveur qui
utilisent Linux 4.19 ou supérieur. Si vous construisez sur un
noyau hôte personnalisé, assurez-vous que l'option
CONFIG_UNIX98_PTYS
est indiquée à
y
dans la configuration du
noyau.
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-5.0
Xz-5.0.0
Remarque : les liens symboliques mentionnés ci-dessus sont nécessaires pour construire un système LFS en utilisant les instructions contenues dans ce livre. Les liens symboliques qui renvoient vers d'autres logiciels (comme dash, mawk, etc.) peuvent fonctionner, mais ils n'ont pas été testés, ou bien ne sont pas pris en charge par l'équipe de développement LFS. Il est possible que ces liens nécessitent soit de vous écarter des instructions du livre, soit d’apporter des correctifs supplémentaires à certains paquets.
Pour vérifier que votre système hôte possède toutes les versions nécessaires et peut compiler des programmes, exécutez la commande suivante :
cat > version-check.sh << "EOF"
#!/bin/bash
# Un script qui liste les numéro de version des outils de développement critiques
# Si vous avez des outils installés dans d'autres répertoires, ajustez PATH ici ET
# dans ~lfs/.bashrc (section 4.4) également.
LC_ALL=C
PATH=/usr/bin:/bin
bail() { echo "FATAL : $1"; exit 1; }
grep --version > /dev/null 2> /dev/null || bail "grep ne fonctionne pas"
sed '' /dev/null || bail "sed ne fonctionne pas"
sort /dev/null || bail "sort ne fonctionne pas"
ver_check()
{
if ! type -p $2 &>/dev/null
then
echo "ERREUR : $2 ($1) introuvable"; 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 "ERREUR : %-9s est TROP VIEUX (version $3 ou supérieure requise)\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 : noyau Linux $kver >= $1\n"; return 0;
else
printf "ERREUR : noyau Linux ($kver) est TROP VIEUX (version $1 ou supérieure requise)\n" "$kver";
return 1;
fi
}
# Coreutils en premier car --version-sort a besoin de Coreutils >= 7.0
ver_check Coreutils sort 8.1 || bail "Coreutils trop vieux, arrêt"
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.2
ver_check "GCC (C++)" g++ 5.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 5.0
ver_check Xz xz 5.0.0
ver_kernel 4.19
if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
then echo "OK : le noyau Linux prend en charge les PTY UNIX 98";
else echo "ERREUR : le noyau Linux ne prend PAS en charge les PTY UNIX 98"; fi
alias_check() {
if $1 --version 2>&1 | grep -qi $2
then printf "OK : %-4s est $2\n" "$1";
else printf "ERREUR : %-4s n'est PAS $2\n" "$1"; fi
}
echo "Alias :"
alias_check awk GNU
alias_check yacc Bison
alias_check sh Bash
echo "Vérification du compilateur :"
if printf "int main(){}" | g++ -x c++ -
then echo "OK : g++ fonctionne";
else echo "ERREUR : g++ ne fonctionne PAS"; fi
rm -f a.out
if [ "$(nproc)" = "" ]; then
echo "ERREUR : nproc n'est pas disponible ou a produit une sortie vide"
else
echo "OK : nproc rapporte $(nproc) cœurs logiques disponibles"
fi
EOF
bash version-check.sh