Fri Apr 7 10:31:48 2017 UTC

Post-construction et (en option) génération de l'iso installable

Introduction

Si vous avez terminé la passe 2 avec succès, vous avez tous les paquets d'un système de base.

On peut maintenant finaliser notre NuTyX et l'adapter à nos besoins. Et enfin, produire une ISO installable.

Il s'agit maintenant de décider ce qu'il vous faut, en effet actuellement votre NuTyX:

  1. Ne contient pas de kernel
  2. Ne peut pas être amorcée
  3. Ne permet pas de formater votre disque dur dans un autre système de fichiers que ext3 ou ext4
  4. Ne permet pas la gestion de partitions logiques
  5. Ne permet pas de se connecter à un serveur dhcp et donc d'obtenir une adresse IP de façon dynamique
  6. Ne contient aucun editeur de texte

D'autre part votre NuTyX contient certains services dont vous n'avez peut-être pas l'utilitée

Marche à suivre

Vous l'avez peut-être déjà compris, cette post-construction n'est plus un simple copié-collé.

C'est maintenant à vous de savoir ce que vous souhaitez utiliser comme moyen d'amorçage, kernel, système de fichiers, volumes logiques et adresse IP statique ou dynamique

Pour mener à bien notre petite expédition, il faudra configurer un minimum le gestionnaire de paquets 'cards' et rapatrier tous les ports contenant les recette de fabrication des paquets NuTyX disponibles.

  1. On commence par sortir de la NuTyX
  2. exit

    On revérifie la variable LFS

    echo $LFS

    Elle doit retourner quelque chose:

    /mnt/lfs 
  3. On peut maintenant réentrer dans la nouvelle NuTyX pour finaliser les travaux
  4. chroot $LFS /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u: \w\$' \
    /bin/bash --login
    Aucune erreur ne doit apparaître:
    root [ / ]# 
  5. On commence par adapter le fichier cards.conf. Adaptez si necessaire la langue.
  6. cat > /etc/cards.conf << "EOF"
    dir /usr/ports/gui-extra
    dir /usr/ports/gui
    dir /usr/ports/cli-extra
    dir /usr/ports/cli
    dir /usr/ports/base
    locale fr
    base /usr/ports/base
    EOF
  7. On peut maintenant rapatrier tous les ports disponibles sous NuTyX et compiler les ports de notre choix (pour autant qu'ils soient configurés dans le fichier 'cards.conf' ci-dessus
  8. ports -u
    ...

    Nous sommes maintenant prêt pour la finalisation de notre NuTyX.

Compilation du kernel et des ports optionnels.

  1. Mise en place d'un kernel de votre choix

  2. Le seul paquet devant être impérativement installé pour avoir une NuTyX fonctionnelle est donc le kernel. Vous avez le choix entre plusieurs possibilitées:

    1. Compilation d'un des kernels disponible en ports

    2. Ce choix sera indispensable si vous décidez de produire une ISO installable, c'est également le choix le plus simple:

      cd /usr/ports/base/kernel-lts
      pkgmk -d -i
    3. Compilation de son propre kernel

    4. Ce choix implique que la génération d'une ISO installable sera impossible

      Vous pouvez soit vous inspirez de l'article qui explique comment compiler son propre kernel ou vous trouverez de nombreaux tutos sur la compilation d'un kernel sur le net

  3. Suppression des services indésirables (recommandé)

  4. Lors de la construction de votre NuTyX, les services ssh et rsync ont automatiquement été installés. Si vous n'envisagez pas de mettre en place un service rsync ni un accès à distance de votre machine. Il est vivement recommandé d'arrêter les services rsyncd et sshd. Même si vous ne savez pas ce que c'est, faites:

    cards remove openssh.service
    cards remove rsync.service
  5. Mise en place de grub, l'outil d'amorçage (en option)

  6. Le paquet grub est uniquement necessaire si vous dédicez de produire une ISO installable ou que vous n'avez pas encore de technique d'amorçage sur votre machine actuelle (peu probable):

    cards depcreate grub

    Une fois terminée, vous allez pouvoir utiliser grub en ligne de commande ou via l'ISO générée

  7. Ajout des outils de formatage (en option)

  8. Les possibilitées de formatage sont:

    cards depcreate btrfs-progs
    cards depcreate xfsprogs
    cards depcreate reiserfsprogs
    cards depcreate jfsutils

    Choisissez le système de fichiers qui vous convient

  9. Ajout des outils de gestion de partitions logiques (en option)

  10. Si vous souhaitez des partition logiques et disques en raid:

    cards depcreate mdadm
  11. Ajout du client dhcp pour pouvoir obtenir une adresse IP dynamiquement (en option)

  12. Si vous ne souhaitez pas utiliser une adresse IP fixe, vous devez donc un client dhcp pour obtenir une adresse IP de façon dynamique

    cards depcreate dhcpcd
  13. Ajout d'un éditeur de texte (en option)

  14. L'installateur utilise la commande 'vi', vous avez donc le choix entre:

    cards depcreate e3

    et

    cards depcreate vim
  15. Ajout du support NFS (en option)

  16. Si vous n'utilisez pas ou ne connaissez pas NFS, vous pouvez ignorer cette option:

    cards depcreate nfs-utils

    Comme pour les services sshd et rsyncd, si vous n'avez pas l'intention de mettre en place un service nfs en place, faites:

    cards remove nfs-utils.service

Option1: Produire une ISO installable.

  1. On ajoute les fichiers necessaires au fonctionnement de l'iso
  2. cp -av /root/development/iso /ISO
    '/root/development/iso' -> '/ISO'
    '/root/development/iso/isolinux' -> '/ISO/isolinux'
    '/root/development/iso/isolinux/boot.cat' -> '/ISO/isolinux/boot.cat'
    '/root/development/iso/isolinux/boot.msg' -> '/ISO/isolinux/boot.msg'
    '/root/development/iso/isolinux/isolinux.bin' -> '/ISO/isolinux/isolinux.bin'
    '/root/development/iso/isolinux/isolinux.cfg' -> '/ISO/isolinux/isolinux.cfg'
    cp -v /boot/kernel-* /ISO/isolinux/kernel
    '/boot/kernel-3.19.0' -> '/ISO/isolinux/kernel'
    cp -v /boot/initrd-* /ISO/isolinux/initrd
    '/boot/initrd-3.19.0' -> '/ISO/isolinux/initrd'
    [Note]Consultez les options en bas de la page avant d'aller plus loin si vous souhaiter ajouter des paquets et donc personnaliser votre ISO ou si vous souhaitez réduire la taille de celle-ci en supprimant les archives des binaires ainsi que les logs de construction.
  3. On produit maintenant les fichiers squashfs qui seront utilisés par l'iso et effacer les fichiers squash existant si necessaire puisque la commande mksquashfs ne peut pas les écraser.
  4. mkdir -p /ISO/isolinux/boot/
    cd /
    for dir in opt bin etc lib root run sbin usr var home
    do
      [ -f ISO/isolinux/boot/$dir.squashfs ] && rm ISO/isolinux/boot/$dir.squashfs
      mksquashfs $dir ISO/isolinux/boot/$dir.squashfs
    done
  5. On peut maintenant sortir de la NuTyX pour produire l'iso.
  6. exit
  7. On peut enfin générer notre ISO dont la version est à la date du jour.
  8. [Important][Important][Important]Avant de lancer la prochaine commande, assurez-vous que vous avez bien la variable LFS configurée et que les commandes mkisofs et isohybrid sont à disposition sur votre linux principale. Elles sont respectivement dans les paquets cdrkit et syslinux.
    sh $LFS/root/development/scripts/mkiso
    Warning: creating filesystem that does not conform to ISO-9660.
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Size of boot image is 4 sectors -> No emulation
      3.82% done, estimate finish Fri Jan  9 21:46:48 2015
      7.63% done, estimate finish Fri Jan  9 21:46:48 2015
     11.44% done, estimate finish Fri Jan  9 21:46:48 2015
     15.25% done, estimate finish Fri Jan  9 21:46:48 2015
     19.06% done, estimate finish Fri Jan  9 21:46:48 2015
     22.88% done, estimate finish Fri Jan  9 21:46:48 2015
     26.68% done, estimate finish Fri Jan  9 21:46:48 2015
     30.50% done, estimate finish Fri Jan  9 21:46:48 2015
     34.31% done, estimate finish Fri Jan  9 21:46:48 2015
     38.12% done, estimate finish Fri Jan  9 21:46:48 2015
     41.94% done, estimate finish Fri Jan  9 21:46:48 2015
     45.74% done, estimate finish Fri Jan  9 21:46:48 2015
     49.56% done, estimate finish Fri Jan  9 21:46:48 2015
     53.37% done, estimate finish Fri Jan  9 21:46:48 2015
     57.19% done, estimate finish Fri Jan  9 21:46:48 2015
     60.99% done, estimate finish Fri Jan  9 21:46:48 2015
     64.81% done, estimate finish Fri Jan  9 21:46:48 2015
     68.62% done, estimate finish Fri Jan  9 21:46:48 2015
     72.43% done, estimate finish Fri Jan  9 21:46:48 2015
     76.24% done, estimate finish Fri Jan  9 21:46:48 2015
     80.06% done, estimate finish Fri Jan  9 21:46:48 2015
     83.86% done, estimate finish Fri Jan  9 21:46:48 2015
     87.68% done, estimate finish Fri Jan  9 21:46:48 2015
     91.49% done, estimate finish Fri Jan  9 21:46:48 2015
     95.31% done, estimate finish Fri Jan  9 21:46:48 2015
     99.11% done, estimate finish Fri Jan  9 21:46:48 2015
    Total translation table size: 2048
    Total rockridge attributes bytes: 1751
    Total directory bytes: 4096
    Path table size(bytes): 38
    Max brk space used 28000
    165140 extents written (322 MB)

    Vous avez désormais une ISO qui se trouve dans le dossier $LFS

    ls $LFS/
    base   bin   etc   lib    NuTyX_x86_64-20161001.iso   root  sources  usr
    boot  home  lib64  NuTyX_x86_64-20161001.md5sum  run   srv      tmp     var
    dev   ISO   mnt    proc                                   sbin  sys      tools
  9. Il ne vous reste plus qu'à la transférer sur une clé usb et la tester
  10. dd if=$LFS/NuTyX_x86_64-20161001.iso of=/dev/sdb
    526336+0 enregistrements lus
    526336+0 enregistrements écrits
    269484032 octets (269 MB) copiés, 67.3208 s, 4.0 MB/s

Félicitations, vous avez maintenant entre les mains une ISO NuTyX de base prête à être installée sur toutes vos machines.

Option2: Réduire la taille finale de l'ISO.

  1. Si vous souhaitez réduire la taille finale de l'ISO, vous pouvez supprimer les binaires du git et les logs produits, ils ne serviront plus. Si vous souhaitez conserver les binaires, lancez la commande ci-dessus.
  2. rsync -a /root/development/base/ /base/

    Aucune erreur ne doit apparaître

    On peut maintenant effacer les binaires du git

    find /root/ -name "*.cards.*" -exec rm -v {} \;

    Aucune erreur ne doit apparaître

    On efface les logs.

    mv /root/logs /logs

    Si besoin est, les binaires et les logs se trouvent donc à la racine de la NuTyX

  3. Le kernel compilé est très gros en taille. Si vous souhaitez réduire la taille de votre iso, vous pouvez supprimez la doc et les sources du kernel:
  4. pkgrm kernel.doc
    pkgrm kernel.devel