Sun Sep 10 20:42:47 2017 UTC

Construction de la NuTyX (pass 2)

C'est le moment de construire votre NuTyX. Une seule condition: Avoir terminé avec succès la Construction de la CHROOT ( pass 1 ).

[Important]L'auteur n'est pas responsable pour les pertes de données ou autre que pourrait engendrer une mauvaise manipulation. Cet article s'adresse à un public averti.

Toutes les opérations vont devoir se faire en compte root. Il est donc INDISPENSABLE d'être très vigilent sinon vous pouvez "casser" votre distribution actuelle.

La variable LFS pointe dans notre exemple sur /mnt/lfs. A vous d'ajuster si vous avez choisi un autre emplacement.

[Important]Veuillez noter que la passe 2 peut s'avérer beaucoup plus "aventureuse" dans le sens où il est tout à fait possible qu'un paquet ne se compile pas du premier coup. Il est important de le signaler sur le forum ou sur le canal irc

Pour éviter tout risque de dispersion et pour faciliter la lecture, l'article sera divisé en deux parties. La première reprend chaque action numérotée une à une et la deuxième donne une explication de chaque action.

Il y a 22 actions. Donc encore une fois:

[Important]Toutes les opértations se font dans le compte root

Les actions

  1. On sort du compte 'lfs'
  2. exit
  3. On vérifie la variable LFS
  4. echo $LFS
    qui DOIT retourner
    /mnt/lfs
    ou la valeur que vous avez définie au début de la pass 1
    [Important][Important][Important]AVANT D'ALLER PLUS LOIN ASSUREZ-VOUS QUE LA VARIABLE LFS SOIT CORRECTEMENT DEFINIE. SI CELLE-CI EST INCORRECTE, VOUS ALLEZ CASSER VOTRE DISTRIBUTION
    Si le résultat est correct:
    chown -R root:root $LFS
  5. On crée les dossiers et liens pour y placer les recettes.
  6. install -dv -m0750  $LFS/root
    ln -sv development/scripts $LFS/root/bin
  7. On déplace les recettes et l'on se place dans le dossier adéquat
  8. mv /home/lfs/development $LFS/root/
    cd $LFS/root/development/base/nutyx
  9. On compile le premier paquet de NuTyX
  10. /tools/bin/pkgmk -cf ../../../bin/pkgmk.conf.passes
  11. On installe les paquets nutyx dans la NuTyX
  12. /tools/bin/pkgadd -r $LFS nutyx1*
    /tools/bin/pkgadd -r $LFS nutyx.man1*
  13. On vérifie sa présence
  14. /tools/bin/pkginfo -r $LFS -i
    retourne
    (base) nutyx 8.2-1...
    (base) nutyx.man 8.2-1...
  15. On installe les fichiers de configuration dans notre nouvelle NuTyX
  16. VERSION="development" install-nutyx -ic
  17. On monte les différents dossiers
  18. mount -v --bind /dev $LFS/dev
    mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
    mount -vt proc proc $LFS/proc
    mount -vt sysfs sysfs $LFS/sys
    mount -vt tmpfs tmpfs $LFS/run
    if [ -h /dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm);fi
    chmod 1777 /dev/shm
  19. On copie resolv.conf depuis la distribution host
  20. cp -v /etc/resolv.conf $LFS/etc
  21. On vérifie que tous les dossiers soient correctement montés, la commande:
  22. mount|grep $LFS
    doit retourner quelque chose comme:
    /dev/sda2 on /mnt/lfs type ext4 (rw)
    /devtmpfs on /mnt/lfs/dev type devtmpfs (rw,nosuid,relatime,size=16300988k,nr_inodes=4075247,mode=755)
    devpts on /mnt/lfs/dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
    proc on /mnt/lfs/proc type proc (rw,relatime)
    sysfs on /mnt/lfs/sys type sysfs (rw,relatime)
    tmpfs on /mnt/lfs/run type tmpfs (rw,relatime)
  23. On entre maintenant dans la NuTyX
  24. chroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    /bin/bash --login +h
    Le résultat affichera toutes sortes de messages que l'on peut ignorer:
    bash: id: command not found
    bash: id: command not found
    bash: date: command not found
    bash: uname: command not found
    bash: uname: command not found
    bash: whoami: command not found
    bash: uname: command not found
    bash: tput: command not found
    ...
  25. On redéfinie la variable PATH
  26. export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/root/bin
  27. On lance la compilation des paquets
  28. cd /root/development/base
    pass
    retourne
    tar -p -o -C /tmp/work/src -xf /sources/linux-3.19.3.tar.xz
    ...
  29. On attend le message suivant:
  30. =======> Building '/root/development/base/bash/bash...' succeeded.
    need to install bash manually
  31. En français cela signifie qu'il faut installer le paquet bash à la main. Il faut donc le faire en dehors de la NuTyX. Il faut donc sortir:
  32. exit
  33. Nous allons maintenant dans le bon dossier et installons le paquet bash:
  34. cd $LFS/root/development/base/bash
    for PACK in *.xz; do /tools/bin/pkgadd -r $LFS $PACK;done
  35. On vérifie qu'il est bien ajouté:
  36. /tools/bin/pkginfo -r $LFS -i|grep bash
    retourne
    (base) bash 4.4-1
    (base) bash.da 4.4-1
    (base) bash.de 4.4-1
    (base) bash.devel 4.4-1
    (base) bash.doc 4.4-1
    ...
  37. Nous entrons à nouveau dans la NuTyX et finissons le travail:
  38. chroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    /bin/bash --login +h
    Quelques erreurs vont s'afficher:
    bash: id: command not found
    bash: id: command not found
    bash: date: command not found
    bash: uname: command not found
    bash: uname: command not found
    bash: whoami: command not found
    bash: uname: command not found
    bash: wc: command not found
    /
  39. Nous définissons la variable PATH une dernière fois:
  40. export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/root/bin
  41. Nous relançons la compilation des paquets restants:
  42. cd /root/development/base
    pass
    tar -p -o -C /tmp/work/src -xf /sources/bc-1.06.95.tar.bz2
    ....
  43. La compilation se termine par le paquet ca-certificates:
  44. ADD: ca-certificates-20150725, 1282 files: 100%
    =======> Installing 'ca-certificates1418739487x86_64.cards.tar' succeeded.
    =======> compress ca-certificates1418739487x86_64.cards.tar

Explications relative à chaque action

  1. [Important]Il est indispensable d'effectuer toutes les opérations via le compte root.
  2. La variable LFS est utilisé tout au long de l'article, il est indispensable qu'elle soit correctement définie et surtout qu'elle soit identique tout au long des 2 passes. Une solution radicale consiste à la définir une fois pour toute dans le fichier .bash_profile du compte root et de la sourcer:
  3. echo "export LFS=/mnt/lfs" >> /root/.bash_profile
    source  ~/.bash_profile
  4. Vérification de la variable LFS. Si tout est ok, on change le propriétaire et le groupe du contenu du dossier $LFS
  5. On crée le dossier pour y placer les recettes ainsi que le dossier logs qui recevra les résultats de la compilation de chaque recette. On crée également un lien pour que le script pass soit trouvé.
  6. On va maintenant compiler le premier paquet qui est nutyx. Pour cela on se rend dans le dossier
  7. On compile le premier paquet qui d'ailleurs ne contient aucun code, ce paquet consiste à créer tous les dossiers de la NuTyX.
  8. On installe le premier paquet nutyx dans la NuTyX et
  9. On vérifie bien sa présence dans la base de données de celle-ci.
  10. On ajoute tous les fichiers de configuration par défaut, ceux-ci se trouvent dans le script d'installation de la NuTyX development
  11. Il s'agit maintenant de monter les quelques dossiers indispensables pour le bon déroulement des opérations de compilation.
  12. Pour que le cas échéant, une recette nécessite de télécharger les sources, on copie le fichier resolv.conf qui définie le routage et la résolution de noms de domaine.
  13. Une dernière vérification sur la présence de tous les dossiers concernés.
  14. On peut maintenant entrer dans la CHROOT cad la future NuTyX. Comme il n'y a encore aucun programme au bon endroit, on obtient une erreur lors de la commande chroot et la variable PATH est à redéfinir pour que toutes les commandes binaires soient présentées dans le bon ordre.
  15. La variable PATH est réajustée en effet, lorsque l'on entre dans la chroot ,elle n'est pas configurée correctement
  16. On se met dans le dossier des recettes NuTyX version courante. Et on lance la compilation des paquets dans le bon ordre.
  17. L'interprêteur bash doit être installé en dehors de la chroot, on attend donc le message.
  18. On va donc devoir ressortir de la chroot
  19. On lance une boucle pour installer tous les paquets bash.
  20. On vérifie que les paquets bash se soient correctements installés
  21. On peut retourner dans la CHROOT cad la future NuTyX. Cette fois aucune erreur ne doit s'afficher
  22. La variable PATH est réajustée ,en effet lorsque l'on entre dans la chroot elle n'est pas configurée correctement
  23. On se met dans le dossier des recettes NuTyX version courante. Et on relance la compilation des paquets restants dans le bon ordre.
  24. Une fois le paquet ca-certificates compilé et installé, votre NuTyX de base est complète

Ce qu'il faut savoir:

  1. [Note]Si vous avez une erreur lors de la compilation d'une recette, ce n'est pas grave, lorsque vous relancez la commande pass, le script reprend le travail là où il s'est arrêté. Afin de faire profiter un maximum de lecteurs, merci de nous informer du problème soit sur le canal irc ou sur le forum.
  2. [Note]Vous pouvez effectuer la passe 2 en plusieurs étapes. Si vous êtes sorti de la chroot, vous DEVEZ alors vous assurez de retaper les commandes 12 et 13. Si vous avez arrêté la machine, assurez-vous de tapez la commande 9 en plus des commandes 12 et 13.