Linux From Scratch (partie 3)

Mon script d’installation personnalisé

Source de l’image illustrant l’article

ATTENTION! Tout comme la procédure officielle, cette procédure personnalisée présente un risque pour le système hôte installé sur votre ordinateur. Il est vivement recommandé d’utiliser une machine de test.

Je me suis permis de prendre quelques libertés avec la procédure officielle d’installation du système Linux From Scratch. En fait, je souhaite rassembler la totalité des instructions dans un seul script (start.sh) et avec un système de balises déplaçables, donner la possibilité à l’utilisateur de n’exécuter que des parties bien précises du code. Je ne sais pas encore si mon projet est réaliste mais les premiers tests sont prometteurs. Voici comment j’ai procédé:

Avant de lancer le script, j’ai créé un nouvel utilisateur nommé lfs. Je l’ai immédiatement ajouté au groupe sudo et j’ai redémarré mon ordinateur pour prendre en compte les changements:

sudo groupadd lfs
sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs
sudo usermod -aG sudo lfs
reboot

Je me suis reconnecté en tant qu’utilisateur lfs. Puis, j’ai copié les scripts suivants dans le répertoire /home/lfs:

  • start.sh (fichier lanceur)
  • wget-list (liste des paquets à télécharger sous forme d’archives)
  • md5sums (sommes de contrôle)

J’ai rendu l’utilisateur lfs récursivement propriétaire de son répertoire avec la commande suivante:

sudo chown -R lfs:lfs /home/lfs

J’ai donné le droit d’exécution au script start.sh.

chmod +x /home/lfs/start.sh

J’ai lancé ce script en tant que superutilisateur lfs (sudo). Le code s’est exécuté de la balise n° 1 à la balise n° 2. Il s’est interrompu automatiquement à la commande source /home/lfs/.bash_profile.

J’ai relancé le script après avoir DECOMMENTÉ la balise ouvrante n° 1 et la balise fermante n° 2. Cela a eu pour effet de créer un commentaire multilignes qui a neutralisé l’exécution de cette partie du code. Le code s’est exécuté seulement à partir de la balise n° 2.

Ne JAMAIS neutraliser les instructions suivantes:

export MAKEFLAGS=-j`nproc --all`
cd /mnt/lfs/sources

Si vous utilisez la même procédure que moi, à partir de la balise n° 2 (décompression des archives et installation des paquets), vous pouvez très bien exécuter le script en renvoyant les erreurs de compilation dans un fichier errors.txt. Cela facilite grandement le débogage.

/home/lfs/start.sh 2> /home/lfs/errors.txt

Vous pouvez également déplacer les balises END_COMMENT comme bon vous semble et exécuter le script en plusieurs fois ou bien exécuter seulement une partie du script.

Compilation croisée des outils temporaires

Dans le chapitre précédent, nous avons construit une chaîne de compilation croisée. Nous avons en quelque sorte fabriqué un outil qui va nous servir à compiler et installer des paquets nécessaires à l’élaboration de notre système Linux From Scratch. Ces paquets seront réinstallés définitivement à l’intérieur de l’environnement chroot.

m4-1.4.19

Nous allons commencer par le paquet m4-1.4.19. Il s’agit d’un macroprocesseur qui remplace du texte dans les applications de programmation, en utilisant des macros définis par l’utilisateur. Voici un petit exemple :

define(WEBSITE,`Miamondo<https://miamondo.org>')    

WEBSITE
Miamondo<https://miamondo.org>

ncurses-6.2

ncurses-6.2 est une bibliothèque qui offre à l’utilisateur plusieurs fonctionnalités telles qu’une interface couleur, des menus déroulants, la possibilité d’utiliser sa souris dans un mode semi-graphique, etc… Voici un exemple d’interface utilisateur générée par ncurses :

Bash-5.1.8

Le Bourne-Again shell est un interpréteur de commandes qui selon la définition de Wikipédia, permet d’accéder aux fonctionnalités internes du système d’exploitation. Toujours selon Wikipédia, Bash exécute quatre opérations fondamentales:

  1. Il fournit une liste de commandes permettant d’opérer sur l’ordinateur (lancement de programmes, copie de fichiers, etc.) ;
  2. Il permet de regrouper ces commandes dans un fichier unique appelé script ;
  3. Il vérifie la ligne de commande lors de son exécution ou lors d’une éventuelle procédure de vérification et renvoie un message d’erreur en cas d’erreur de syntaxe ;
  4. En cas de validation, chaque ligne de commande est interprétée, c’est-à-dire traduite dans un langage compréhensible par le système d’exploitation, qui l’exécute alors.

Bash s’utilise notamment dans un émulateur de terminal tel que lxterminal ou xterm. Voici un exemple de la mise à jour d’une distribution Linux Mint avec la commande Bash apt update.

Coreutils-8.32

Coreutils-8.32 est un paquet très important puisqu’il fournit de nombreuses fonctionnalités basiques telles que rm, chmod, chown, mkdir, ls, etc… Ces commandes sont nécessaires à la bonne marche d’un système d’exploitation de type Unix. Cliquez sur le lien en début de paragraphe pour accéder au contenu de ce paquet.

DiFFUTILS-3.8

Le paquet Diffutils-3.8 contient les programmes montrant les différences entre fichiers ou répertoires. Voici les détails.

File-5.40

Le paquet file-5.40 contient un outil pour déterminer le type d’un fichier ou des fichiers donnés.

Voici le reste des outils temporaires qui vont eux aussi être compilés :

Findutils-4.8.0

Gawk-5.1.0

Grep-3.7

Gzip-1.10

Make-4.3

Patch-2.7.6

Sed-4.8

Tar-1.34

Xz-5.2.5

Binutils-2.37 — Passe 2

GCC-11.2.0 — Passe 2

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s