Créer son image ISO personnalisée de Calculate Linux




Introduction



Dans cet article, nous allons voir comment personnaliser une ISO de Calculate Linux avec les logiciels de son choix.

Tous les logiciels que nous utiliserons s'appellent cl-builder-XXX et exécuteront en root.

Code TEXT :
cl-builder-break    cl-builder-prepare  cl-builder-restore  
cl-builder-image    cl-builder-profile  cl-builder-update   



Préparer le Build



La première étape est de récupérer une image ISO de Calculate Linux, qui nous servira de base. Il faut prendre une ISO de la même architecture que votre PC : 64bits = x86_64, 32bits = i686). Il est préférable de récupérer pour le premier build une ISO dite nightly qui a été générée récemment, pour éviter une grande quantité de mises à jour.
Si vous mettez à jour une ISO que vous avez déjà personnalisé, il suffit de la reprendre.

Dans cet article, l'ISO prise est cldm-20170407-x86_64.iso :

Pour extraire l'ISO, on utilise cl-builder-prepare :

Code TEXT :
usage: cl-builder-prepare [--source SOURCE] [-d DEST] [--layers [ON/OFF]] [--id ID] [-T TEMPLATES]
                          [-v [ON/OFF]] [--usenew-conf | --skip-conf | --dispatch-conf] [-f]
Prepare the New Build:
  --source SOURCE       source image
  -d DEST, --disk DEST  partition or directory intended for build ('list' pour afficher les valeurs
                        possibles)
  --layers [ON/OFF]     use layers for build (enabled by default)
  --id ID               build ID
  -T TEMPLATES, --templates TEMPLATES
                        choisir la localisation des modèles calculate,distros,local,remote,clt
                        ('list' for displaying possible values, 'none' is never one)
  -v [ON/OFF], --verbose [ON/OFF]
                        sortie verbeuse
  --usenew-conf         utiliser les nouveaux fichiers de configuration (par défaut)
  --skip-conf           sauter la mise à jour des fichiers de configuration
  --dispatch-conf       faire une mise à jour manuelle des fichiers de configuration
Paramètres généraux:
  -f, --force           rester silencieux tant que le processus est en cours


Donc on va utiliser la commande suivante :

Code BASH :
cl-builder-prepare --source /home/adrien/Téléchargements/cldm-20170407-x86_64.iso 


Dans notre exemple voici le résumé avant validation :

Code TEXT :
Prepare the New Build
 * Source image : Calculate Linux Desktop MATE 17 x86_64 20170407
 * System profile : distros:CLDM/amd64
 * Build files : /var/calculate/builder/distros_CLDM_amd64
 * Build ID : distros:CLDM/amd64
 * Use layers for build : oui
 * Free disk space : 17.4G
Lancer le processus ? (Yes/No):


On répond yes et l'opération se déroule :

Code TEXT :
 * Unpacking the system image to the target ...              [ ok ]
 * Mounting resources ...              [ ok ]
 * Configuring build ...              [ ok ]
 * Build prepared successfully in "/run/calculate/mount/distros_CLDM_amd64"


Une fois terminé, on constate que les différents chemins ont bien été montés grâce à la commande df -h :

Code BASH :
df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
devtmpfs            10M       0   10M   0% /dev
shm                3.9G    281M  3.6G   8% /dev/shm
tmpfs              3.9G    1.3M  3.9G   1% /run
/dev/sda6           29G     15G   13G  54% /
cgroup_root         10M       0   10M   0% /sys/fs/cgroup
/dev/sda8           93G     78G   14G  86% /home
/dev/sda5           29G    9.8G   18G  36% /var/calculate
/dev/sdb1          917G    759G  149G  84% /media/DATA
/dev/sda2           48G     45G  2.6G  95% /media/SSD
none               3.9G     48K  3.9G   1% /run/user/1000
none               3.9G       0  3.9G   0% /run/user/0
/dev/loop0         1.7G    1.7G     0 100% /run/calculate/mount/iso
/dev/loop1         1.7G    1.7G     0 100% /run/calculate/mount/squash
none                29G    9.8G   18G  36% /run/calculate/mount/distros_CLDM_amd64


La partie de préparation est terminée.

La personnalisation



Maintenant, on va personnaliser ses logiciels en installant ceux de son choix. Pour cela, on va effectuer un chroot pour se positionner dans le futur système à empaqueter :

Code BASH :
chroot /run/calculate/mount/distros_CLDM_amd64 /bin/bash


À partir de là, on est dans notre système, on peut donc installer/désinstaller ce qu'on veut. Voici un exemple :

Code BASH :
emerge -C pidgin-libnotify pidgin claws-mail-theme-calculate claws-mail


Vous pouvez, avant d'installer des logiciels, mettre la distribution et les logiciels contenus dedans à jour :

Code BASH :
cl-update


Cas intéressant : Pidgin.
Vous le désinstallez mais, quand vous mettez à jour le système, il vous le propose à l'installation :
Code BASH :
Mise à jour des paquets
 * Calcul des dépendances ...
 * Liste des paquets à installer  
 * GTK Instant Messenger client (N) net-im/pidgin-2.12.0 (5076 KiB)
 * 1 paquets à installer, 5076 KiB à télécharger

La commande qui vous aidera à diagnostiquer les dépendances réclamant le logiciel est equery d :

Code BASH :
equery d net-im/pidgin
 * These packages depend on net-im/pidgin:
mate-extra/caja-extensions-1.16.0-r1 (pidgin ? net-im/pidgin)
x11-plugins/pidgin-hotkeys-0.2.4 (net-im/pidgin[gtk])
x11-plugins/purple-plugin_pack-2.7.0-r1 (net-im/pidgin[gtk?,ncurses?])


Il suffit alors de désinstaller ceux qui dépendent directement de pidgin :

Code BASH :
 emerge -C purple-plugin_pack pidgin-hotkeys


On peut donc installer des logiciels :

Code BASH :
emerge chromium thunderbird audacity kdenlive kde-l10n steam-launcher virtualbox{,-additions,-extpack-oracle,-modules} 


Pour les logiciels masqués, il suffit de faire comme sur un système classique, éditer le fichier qui va bien :

Code BASH :
vi /etc/portage/package.keywords/custom 


Et après on peut installer des logiciels masqués, comme discord ou la dernière version de youtube-dl :

Code BASH :
emerge youtube-dl discord-bin 


On peut de la même façon personnaliser les USE avec le fichier package.use :

On peut aussi installer des overlay (dépôts additionnels) :

Code BASH :
layman -S 
layman -a overlay-personnalisé


Puis on actualise la base eix

Code BASH :
eix-sync


Et on peut installer des logiciels depuis ces overlay :

Code BASH :
emerge vivaldi{,-ffmpeg-codecs}


Code TEXT :
>>> Installing (1 of 2) www-client/vivaldi-1.8.770.50_p1-r1::adrien-overlay
Installing (2 of 2) www-plugins/vivaldi-ffmpeg-codecs-56.0.2924.87::adrien-overlay


Une fois qu'on a terminé, on quitte le chroot :

Code BASH :
exit



Création de l'ISO



Maintenant que le futur système est personnalisé, il suffit de créer son ISO avec cl-builder-image :

Code TEXT :
usage: cl-builder-image [--id ID] [--iso IMAGE] [-V [ON/OFF]] [--keep-tree [ON/OFF]]
                        [--isohybrid [ON/OFF]] [--prelink [ON/OFF]] [-c COMPRESS]
                        [--stable [ON/OFF]] [-U [ON/OFF]] [-T TEMPLATES] [-v [ON/OFF]]
                        [--usenew-conf | --skip-conf | --dispatch-conf] [-f]
Create the Image:
  --id ID               build ID ('list' pour afficher les valeurs possibles)
  --iso IMAGE           set image path
  -V [ON/OFF], --video [ON/OFF]
                        include proprietary video drivers
  --keep-tree [ON/OFF]  keep portage tree in image (enabled by default)
  --isohybrid [ON/OFF]  create the ISO image with isohybrid (enabled by default)
  --prelink [ON/OFF]    perform prelink
  -c COMPRESS, --compress COMPRESS
                        set the compressor ('list' pour afficher les valeurs possibles)
  --stable [ON/OFF]     use only stable updates (enabled by default)
  -U [ON/OFF], --update-themes [ON/OFF]
                        update themes
  -T TEMPLATES, --templates TEMPLATES
                        choisir la localisation des modèles calculate,distros,local,remote,clt
                        ('list' for displaying possible values, 'none' is never one)
  -v [ON/OFF], --verbose [ON/OFF]
                        sortie verbeuse
  --usenew-conf         utiliser les nouveaux fichiers de configuration (par défaut)
  --skip-conf           sauter la mise à jour des fichiers de configuration
  --dispatch-conf       faire une mise à jour manuelle des fichiers de configuration
Paramètres généraux:
  -f, --force           rester silencieux tant que le processus est en cours


On peut personnaliser plein d'options, notamment le compresseur (par défaut XZ) et l'inclusion des pilotes propriétaires dans l'ISO.
La compression XZ est plus importante mais demande d'avantage de ressources sur la machine.

Voici un exemple de création d'image :

Code BASH :
cl-builder-image --id distros:CLDM/amd64 -V ON --image /home/adrien/Téléchargements/cldm-adrien-20170410-x86_64.iso 


Dans notre exemple, voici le résumé avant création :

Code TEXT :
Create the Image
 * Build ID : distros:CLDM/amd64
 * System : Calculate Linux Desktop 17 MATE x86_64 20170410
 * Building short name : CLDM
 * Subname : MATE
 * System type : desktop
 * Building system version : 17
 * Build version : 20170410
 * Image path : /home/adrien/Téléchargements/cldm-adrien-20170410-x86_64.iso
 * Include proprietary video drivers : oui
 * Compressor : xz
 * ISO hybrid feature : oui
 * Keep portage tree : oui
 * Perform prelink : non
 * Update themes : non
 * Free disk space for ISO building : 14.8G
 * Free disk space for ISO image : 12.9G
 * Use only stable updates : oui
 * Méthode de mise à jour des fichiers de configuration : Valider les nouveaux fichiers de configuration
Lancer le processus ? (Yes/No):


On répond yes et l'opération se déroule :

Code TEXT :
 * Configuring build ...              [ ok ]
Fetching video drivers
 * Calculating dependencies for x11-drivers/nvidia-drivers ...
 * Depends dev-libs/jansson-2.9, app-eselect/eselect-opencl-1.1.0-r1  
 * Fetching binary packages and sources tarballs ...              [ ok ]
 * Calculating dependencies for <x11-drivers/nvidia-drivers-341.0.0 ...
 * Depends dev-libs/jansson-2.9, app-eselect/eselect-opencl-1.1.0-r1  
 * Fetching binary packages and sources tarballs ...              [ ok ]
 * Cleaning and copying driver files ...              [ ok ]
 * Creating install video driver data ...              [ ok ]
 * Cleaning the history of the Distros repository ...              [ ok ]
 * Cleaning the history of the Calculate repository ...              [ ok ]
 * Cleaning the history of the Gentoo repository ...              [ ok ]
Creating live image
 * Umount build system resources ...              [ ok ]
 * Configuring squash filesystem image ...              [ ok ]
 * Pack squash filesystem image ...              [ ok ]
 * Prepare ISO data ...              [ ok ]
 * Pack ISO image ...              [ ok ]
 * Appling isohybrid feature for image ...              [ ok ]
 * Creating package list ...              [ ok ]
 * Restore build system resources ...              [ ok ]
 * Image created successfully


Une fois terminé, on constate que l'ISO et sa liste de logiciels a bien été créé :

Code BASH :
ls -lh /home/adrien/Téléchargements/cldm-*
-rw-r--r-- 1 adrien adrien 1.7G 10 avril 10:11 /home/adrien/Téléchargements/cldm-20170407-x86_64.iso
-rw-r--r-- 1 root   root   2.3G 10 avril 10:54 /home/adrien/Téléchargements/cldm-adrien-20170410-x86_64.iso
-rw-r--r-- 1 root   root    31K 10 avril 10:54 /home/adrien/Téléchargements/cldm-adrien-20170410-x86_64.list



Nettoyer le travail



Une fois que tout est OK, on peut nettoyer le travail, les fichiers restés sur le système hôte via cl-builder-break :

Code BASH :
cl-builder-break --id distros:CLDM/amd64


Dans notre exemple, voici le résumé avant nettoyage :

Code TEXT :
Break the Build
 * System : Calculate Linux Desktop 17 MATE x86_64 20170410
 * Build ID : distros:CLDM/amd64
 * Clear after unmount : oui
 * Clear binary packages after unmount : non
Lancer le processus ? (Yes/No):


On répond yes et l'opération se déroule :

Code TEXT :
Lancer le processus ? (Yes/No): yes
 * Breaking distros:CLDM/amd64 build ...              [ ok ]
 * Build broken successfully


Une fois terminé, et bien c'est terminé :magic:
Cette page a été vue 3036 fois