Déploiement avec FOG sous VirtualBox

Il existe une page décrivant l'utilisation de FOG avec Virt-Manager (méthode recommandée) ici : Déploiement avec FOG sous Virt-Manager.

Principe de fonctionnement et intérêts de FOG

Si l'on veut déployer Primtux sur plusieurs ordinateurs de même modèle (cas typique dans une école possédant généralement plusieurs exemplaires d'une même série), il peut être intéressant de le faire à l'aide d'un serveur FOG. On a tout intérêt à installer ce serveur sur un ordinateur portable afin de pouvoir le déplacer facilement sur site.

La solution FOG permet via un réseau Intranet à la fois de récupérer une image d'une machine "modèle" et ensuite de la déployer sur plusieurs machines en même temps, ce qui représente un gros gain de temps par rapport à une installation via clé USB avec CloneZilla.


Matériel



Préparation du serveur FOG

Il n'est pas nécessaire de réserver un ordinateur à cette seule tâche, ce qui serait quand même dommage car on ne déploie pas tous les jours non plus ;-). Ceci est rendu possible grâce à la virtualisation. Pour la virtualisation, on utilise ici Virtualbox mais on pourrait tout aussi bien utiliser Virt-Manager (VMM) qui fonctionne mieux sous GNU/Linux (tutoriel à envisager).
Pour une utilisation confortable, il vaudra mieux disposer d'un ordinateur assez récent avec 4 Go de Ram au minimum.

Sur cette page, nous décrirons l'installation d'un serveur FOG sur un ordinateur tournant déjà sous une distribution GNU/Linux, ici en l’occurrence une Linux Mint 21.3 (qui repose elle-même sur Ubuntu 22.04).

Remarque : On peut reprendre les indications ci-dessous pour installer FOG directement sur une Debian 12 sans avoir à virtualiser..

A- Installation de Virtualbox

Une fois Linux Mint installé, installation de VirtualBox qui servira à virtualiser FOG avec les commandes suivantes :
sudo apt update && sudo apt install virtualbox Remarque : Il est nécessaire de redémarrer pour que VirtualBox apparaisse dans la liste des applications.

B- Virtualisation de Debian 12

On récupère l'image iso du système d'exploitation Debian 12.4 (netinstall) sur le site https://www.debian.org/index.fr.html. Puis on crée une machine virtuelle dans VirtualBox en installant Debian à partir de l'image récupérée précédemment. Lors de l'installation, garder les cases cochées par défaut (ne pas changer de bureau sinon le CD guest ne pourra pas se lancer !) et cocher les cases pour installer un Web serveur (Apache) et éventuellement l'accès SSH si utile. Une fois Debian installé, finir en intégrant l'iso "Guest additions" (image CD des Additions invité) pour pouvoir bénéficier de fonctionnalités supplémentaires (meilleur affichage plein écran, presse-papier bidirectionnel, ...).

C- Installation de FOG dans Debian

Remarque : pendant toute la préparation de la machine virtuelle, dans VirtualBox, il faudra paramétrer le réseau en NAT afin d'avoir accès à Internet pour télécharger les programmes notamment. Par contre, il faudra modifier plusieurs fois dans la machine Debian, les paramètres réseaux.

Nous utiliserons FOG sans l'intégrer dans un réseau existant, en utilisation isolée pour faire les installations de Primtux. Pour cela, on peut aller voir cette page (non mise à jour) : https://wiki.fogproject.org/wiki/index.php/FOG_on_an_Isolated_Network.

Pour faciliter l'installation et permettre l'installation de FOG qui a besoin d'avoir accès à Internet pour récupérer des fichiers, il faut paramétrer 2 connexions Ethernet dans Debian. La première est celle déjà existante et qui permet d’accéder à Internet (on ne la modifie pas), c'est la "Connexion filaire1". Par contre, on va se créer une 2e connexion spécifique pour l'utilisation de FOG que j'ai baptisée "Connexion FOG".
Adresse IP de "Connexion FOG" : On va aller dans les réglages du réseau avancé de Debian et se créer une nouvelle connexion Ethernet en fixant les réglages suivantes dans l'onglet IPv4 en configuration manuelle avec une IP fixe :
adresse IP : 192.168.1.100 (ou une autre)
masque de sous-réseau : 255.255.255.0
passerelle : aucune
Remarque : il serait aussi possible de modifier l'adresse IP du serveur a posteriori, en suivant les indications ici : https://docs.fogproject.org/en/latest/kb/how-tos/change-fog-server-ip-address/

Dans notre machine virtuelle Debian, avec la connexion pour accéder à Internet, on va récupérer l'archive FOG dans Git comme cela est recommandé dans la documentation (https://docs.fogproject.org/en/latest/installation/server/install-fog-server/). Pour cela, on installe git avec les commandes suivantes :
su sudo -i apt-get -y install git

Puis on récupère FOG avec les commandes (toujours en étant root via la commande "sudo -i") :
sudo -i cd /root
git clone https://github.com/FOGProject/fogproject.git

Ensuite on revient dans le terminal et on lance l'installeur avec :
sudo -i
cd /root/fogproject/bin

On change de connexion réseau en "Connexion FOG" et on revient dans le terminal pour taper la commande : ./installfog.sh

Voici les différentes options choisies lors de l'installation (les choix par défaut sont indiqués entre crochets [ ] et avec une majuscule) :

REMARQUE : Si on se trompe dans une étape et que l'on veut reprendre de zéro l'installation de FOG, le mieux est de le désinstaller complètement (sans supprimer le dossier git) et de relancer la commande ./installfog.sh. Plus d'info ici : https://wiki.fogproject.org/wiki/index.php/Uninstall_FOG



Utilisation de FOG

Attention pour la partie qui suit, il faudra avoir réglé auparavant le réseau VirtualBox différemment ! Il faut choisir comme "Mode d'accès réseau :", "Accès par pont" et dans les paramètres avancés, dans l'option "Mode Promiscuité :", choisir "Allow All" :

FOG_reseau_1.png

A- Test de FOG

On peut d'ores et déjà tester le serveur FOG en branchant en filaire sur le même réseau un ordinateur de test et le faire démarrer sur le réseau en PXE. Si on voit le menu FOG qui apparaît sur le client, cela signifie que le serveur est fonctionnel !

B- Récupération de l'image Primtux à déployer

FOG marche dans les 2 sens, c'est-à-dire qu'il peut déployer une image mais aussi "l'aspirer" (comme CloneZilla). On peut donc préparer un ordinateur sous Primtux avec une seule partition (de cette façon, il sera possible de déployer l'image sur un disque de capacité plus petite à condition que les données ne dépassent pas sa capacité) et ensuite récupérer son image qui servira de modèle (master). J'en profite pour y installer DWService, Clipman, BlocksCAD, ... (voir cette page : https://lofurol.fr/joomla/logiciels-libres/338-primtux-installation-de-primtux7).

Source : https://docs.fogproject.org/en/latest/kb/how-tos/capture-an-image/

REMARQUE : il est possible de déployer une image universelle indépendante du matériel sur lequel on veut l'installer. On appelle ce type d'image, une golden image. Piste à creuser : https://forums.fogproject.org/topic/7391/deploying-a-single-golden-image-to-different-hardware-with-fog

C- Déploiement de l'image Primtux

Source : https://docs.fogproject.org/en/latest/kb/how-tos/deploy-an-image/

Tout se fait uniquement à partir de l'ordinateur client (pas besoin d'agir sur le serveur FOG), ce qui est très rapide.
Sur les ordinateurs à installer :


Scripts de post-installation

Il est possible de lancer des scripts de post-installation pour par exemple renommer les machines à partir de leur nom enregistré dans Fog, redimensionner une partition, ...
Ces scripts doivent être placés dans le répertoire du serveur FOG  /images/postdownloadscripts et se lanceront une fois que l'image aura été déployée.

A- Script pour renommer la machine sous Primtux :

Source :  https://memo-linux.com/fog-1-2-script-post-installation-pour-modifier-le-nom-dune-machine-linux-clonee/

Pour cela, il faut modifier les fichiers /etc/hostname et /etc/hosts. On va pouvoir le faire en créant un script dans le dossier /images/postdownloadscripts. Voici les commandes à saisir dans le terminal du serveur FOG :
cd /images/postdownloadscripts

Ensuite on crée et on édite un fichier "renommage.sh" avec la commande :
nano renommage.sh

Et on colle les lignes de code suivantes :

#!/bin/bash
## Script de post-installation "renommage.sh" pour FOG
## Permettant de renommer une machine après l'installation de Primtux
## créé par Thierry Munoz le 30/01/2024

##création d'un répertoire temporaire /partprimtux
mkdir /partprimtux
##montage temporaire de la partition système du Linux
## ATTENTION : il faut indiquer la partition sur laquelle est installé Printux !!!
## ici il s'agit de la partition sda5 (sinon ça ne marchera pas)
mount /dev/sda5 /partprimtux

##changement du nom host de la machine définie dans l'interface web
echo $hostname > /partprimtux/etc/hostname
##changement du nom "primtux" dans /etc/hosts qui se trouve sur la 2e ligne
sed -i "s/primtux/$hostname/" /partprimtux/etc/hosts

##Démontage de la partition système
umount /partprimtux
##Suppression du répertoire temporaire
rmdir /partprimtux

On sauvegarde (CTRL + O) et on ferme le fichier (CTRL + X) puis on le rend exécutable avec la commande suivante :
chmod +x renommage.sh

Ensuite, on édite et modifie le fichier fog.postdownload qui indique à FOG quel(s) script(s) lancer après la copie de l'image Primtux sur le client :
nano fog.postdownload

Et on colle cette ligne en veillant bien à laisser un espace derrière le point en début de ligne :

. ${postdownpath}renommage.sh

On sauvegarde (CTRL + O) et on ferme (CTRL+X) l'éditeur Nano.

Maintenant le script modifiera automatiquement les fichiers /etc/hostname et /etc/hosts avec le nom de la machine.

B- Script pour redimensionner la partition Primtux :

Le redimensionnement automatique de la partition finale ne fonctionne que pour Windows (en fait FOG a été développé initialement pour Windows) et du coup après avoir copié l'image Primtux, la totalité de la partition du disque dur n'est pas utilisée. On peut la modifier avec GParted mais l'idéal serait de l'agrandir automatiquement avec un script de post-installation.

Autre piste : dans le dossier /images/nom_image, il y a pour les images "resizables", des fichiers d1.minimum.partitions, d1.fixed_size_partitions et d1.partitions.

Voici un script à tester (pour des disques HDD, disques SSD "non sda" ?) :

#!/bin/bash#

#############################################################
# Script de redimensionnement de partition PrimTux pour FOG #
# philippe.dpt35@yahoo.fr                                   #
# La parition de PrimTux doit être la dernière partition    #
# du disque ; elle peut être dans une partition étendue     #
# La variable periphdisk est à modifier si le disque        #
# cible n'est pas sur /dev/sda                              #
#############################################################


periphdisk="sda"

# Récupère le N° de la partition étendue du disque s'il y en une
extendpart=$(LC_ALL=C fdisk -l | awk -v disk="/dev/$periphdisk" '$0 ~ disk && /Extended/ {sub("/dev/sd[a-z]","");sub("\n"," ");print $1}')

# Récupère le N° de la dernière partition du disque
lastpart=$(lsblk -o "name" -n | awk -v disk=$periphdisk '/└─/ && $0 ~ disk {sub("└─sd[a-z]","");print $1}')

if [ -n "$extendpart" ]; then
  parted "/dev/$periphdisk" -- resizepart $extendpart 100%
fi
if [ -n "$lastpart" ]; then
  parted "/dev/$periphdisk" -- resizepart $lastpart 100%
  devpart=$(echo "/dev/$periphdisk$lastpart")
  sleep 1
  resize2fs "$devpart"
fi
exit 0


parted /dev/sda resizepart 2 100%

resize2fs /dev/sda5


Ressources utiles pour les scripts


Ressources


Revision #4
Created 17 February 2026 07:09:30 by Admin
Updated 17 February 2026 08:17:32 by Thierry