Table des matières
Le système de post-installation fonctionne pour les systèmes de fichiers FAT16/32, NTFS, et Ext2. En particulier, les OS Windows NT4, XP et 2000 ont été testés avec succès.
Il existe quatre types de post-installation :
La post-installation associée à une image. Pour chaque image vous pouvez choisir, dans Webmin, un script de post-installation qui sera exécuté après la restauration de cette image. Cette post-installation est plutôt utilisée pour particulariser un déploiement massif de machines.
La post-installation associée à une machine. Pour chaque machine vous pouvez choisir, dans Webmin, un script de post-installation qui sera exécuté si l'entrée 'Post-Install' du menu de boot est choisie. Cette post-installation est plutôt utilisée pour déployer des applications au cas par cas.
La post-installation d'un groupe de machines. L'image partagée 'Post-installation (groupe)' permet d'assigner le même script de post-installation pour tous les clients ayant cette image dans leur menu de boot.
La post-installation globale, qui est exécutée dans ces deux cas et pour toutes les machines. Cette option n'est pas disponible dans l'interface Webmin, mais uniquement en ligne de commande.
Les scripts fournis proposent des fonctionnalités couvrant les situations les plus courantes de déploiement :
Pas de postinstall: aucun script ne sera exécuté.
date1: écrit la date courante dans le fichier "date.txt" qui sera situé à la racine de la première partition du premier disque dur. Utilisé pour effectuer un test simple.
ich5raid1: synchronisation du 1er et du 2nd disque dur sur les "fausses cartes raid" basées sur le chipset ICH5.
lscssh: installe SSH pour Windows ainsi que la clé publique pour le module 'Linbox Secure Control'.
lscsshvnc: installe SSH pour Windows ainsi que la clé publique pour le module 'Linbox Secure Control', et un serveur VNC sécurisé.
ntfsresize1: maximise l'unique partition NTFS du disque dur.
ntfsresize2: maximise la deuxième et dernière partition NTFS.
resize1: maximise l'unique partition FAT, EXT2/3 ou ReiserFS3.
run1: installe les fichiers contenus dans /tftpboot/revoboot/images/data/ sur la première partition dans \tmp, et lance un programme, C:\tmp\myprogram.bat, au premier démarrage d'un système Microsoft Windows restauré.
run2: idem précédemment, sur la deuxième partition.
shell: shell de débug.
shutdown1:extinction du client après restauration.
sid1: réinitialise le SID d'un système post-Windows 2k et le nom NetBios d'un système Windows.
sysprep1: copie le fichier /tftpboot/revoboot/images/data/sysprep.inf sur la première partition du premier disque, et change le nom NetBios présent dans le fichier par celui déclaré dans le LRS.
vnc1: installe le logiciel TightVNC (partie cliente du module de prise de contrôle à distance).
Ces scripts ne sont que des exemples de base. Pour explorer les possibilités infinies du système de post-installation, il sera nécessaire de modifier un script existant - voire d'en créer un nouveau - ce que vous pouvez faire en cliquant sur le bouton "Éditer", comme expliqué ci-dessous.
En cliquant sur le bouton "Éditer" à droite de la liste des scripts, le LRS affichera le formulaire suivant:
![]() |
|---|
| Formulaire principal de gestion des script de post-installation |
Ce formulaire permet de réaliser quatre actions différentes sur les scripts de post-installation: création , duplication , suppression et modification .
création:

Formulaire de création d'un script de post-installation Les deux champs à remplir sont:
l'emplacement du fichier de post-installation (uniquement dans images/templates pour l'instant, c'est à dire à l'emplacement commun à toutes les images)
le nom du script
![[Avertissement]](/ucome.rvt/any/fr/Produits/LRS/details/doc/img/warning.png)
les scripts créés sont vides: vous devrez les éditer par la suite
duplication:

Formulaire de duplication d'un script de post-installation Les deux champs à remplir sont:
l'emplacement du fichier de post-installation (uniquement dans images/templates pour l'instant, c'est à dire à l'emplacement commun à toutes les images)
le nom du script
suppression:

Formulaire de suppression d'un script de post-installation édition:

Formulaire d'édition d'un script de post-installation Ce formulaire comporte trois parties:
le champ Description vous permet de décrire brièvement la fonction du script (c'est celle qui est affichée dans la liste déroulante de la page de détails)
le champ Commentaire vous permet de compléter cette description
les champs suivants représentent les lignes du script de post-installation, un champ par ligne (voir plus bas pour la description complète des différentes commandes disponibles),
ainsi qu'un bouton "supprimer" sur la droite de chaque ligne permettant d'effacer la ligne correspondante.
Il y a trois boutons à la suite de ce formulaire, permettant respectivement d'ajouter une nouvelle ligne, de réinitialiser les valeurs et d'enregistrer les changements effectués.
Vous pourrez trouver des informations plus techniques sur le rôle des différentes commandes disponibles dans ce formulaire dans les sections suivantes.
Les scripts de post-installation ne sont que des scripts Shell. Sur le LRS, ils se situent dans le répertoire /tftpboot/revoboot/images/templates
Les scripts de post-installation respectent une syntaxe stricte afin de permettre leur édition indifféremment depuis la ligne de commande ou l'interface Webmin.
Voici un exemple de script:
# Ceci est la description # # This is a shell fragment # Auto-generated from the webmin interface on Thu Aug 19 12:27:11 CEST 2004 # Please don't modify it unless you know what you are doing ! # Please don't remove « END HEADER » and « END COMMENT » #-- END HEADER --# # Ceci est un commentaire. # Les commentaires peuvent # tenir sur plusieurs lignes. #-- END COMMENTS --# Mount 1 date > /mnt/date.txt cp /opt/winutils/inventory-setup.exe /mnt/tmp/setup.exe RegistryAddRunOnce c:\tmp\setup.exe ChangeSIDAndName
qui correspond au formulaire suivant:
![]() |
|---|
| Édition d'un script de post-installation |
L'édition de ces scripts pouvant avoir lieu indifféremment sous Webmin ou via un simple éditeur de texte, certaines précautions doivent être prises dans ce dernier cas:
la première ligne est celle qui est systématiquement utilisée comme description du rôle du script. Elle correspond au champ "Description" du formulaire.
les lignes entre les lignes "-- END HEADER --" et "-- END COMMENTS --" correspondent au champ "commentaire" de l'interface.
les lignes entre la première et "-- END HEADER --" sont générée par webmin à chaque sauvegarde du script en passant par l'interface.
les lignes "-- END HEADER --" et "-- END COMMENTS --" ne doivent pas être supprimées, sous aucun prétexte: elles servent de repère à Webmin.
les lignes après la ligne "-- END COMMENTS --" correspondent chacune à une commande.
| Répertoire sur le client | Répertoire équivalent sur le serveur | Contenu |
|---|---|---|
| /mnt | n.a. | point de montage du système de fichiers cible |
| /revoinfo | /tftpboot/revoboot/images | répertoire /tftpboot/revoboot/images sur le serveur (montage NFS) |
| /revoinfo/data | /tftpboot/revoboot/images/data | données utilisateur. Avec un LRS pré-installé, ce répertoire est accessible depuis des clients Windows sous le nom de partage 'data'. |
| /revosave | variable | données de l'image, uniquement si la post-installation est liée à une image particulière |
| /opt | /tftpboot/revoboot/lib/util | divers outils et utilitaires pour la post-installation. |
/revoinfo/initinst
/revosave/initinst (si /revosave existe, voir ci-dessus)
(éventuelle installation ou sauvegarde)
/revoinfo/preinst
/revoinfo/$MAC/postinst
/revosave/postinst (si /revosave existe, voir ci-dessus)
/revoinfo/postinst
Les scripts 'postinst' et 'preinst' sont pris en compte quel que soit le type de restauration choisi (tftp, nfs ou multicast). Par contre, les scripts 'initinst' ne sont exécutés que lors de restaurations nfs ou multicast.
De plus, l'interface Web est limitée à l'édition des scripts '/revoinfo/$MAC/postinst' et '/revosave/postinst'.
Un certain nombre de variables d'environnement sont disponibles pour être utilisées dans les scripts:
| Variable | Rôle |
|---|---|
| $IPSERVER | L'adresse IP du serveur LRS |
| $MAC | L'adresse MAC de la machine courante sous forme compacte (001122334455) |
| $HOSTNAME | Le nom de la machine courante d'après ce qui est déclaré dans le LRS |
| Commande | Description | |||
|---|---|---|---|---|
| Mount <DEVICE> | Monte la partition Windows <DEVICE> à l'emplacement /mnt. <DEVICE> peut être soit
Exemple:
| |||
| NtfsResize <PART> <SIZE> | Redimensionne la partition primaire <PART> du
premier disque dur à la taille <SIZE> qui peut être
exprimée en MB, GB, ou en pourcentage de la taille totale du
disque. Fonctionne pour du NTFS et lorsqu'il s'agit de la
dernière partition du disque. Exemples:
| |||
| NtfsResizeMax <PART> | Raccourci pourNtfsResize <PART> 100% | |||
| RegistryAddKey <PATH> <KEY> ... <KEY> | Ajoute la ou les sous-clés <KEY> dans la branche <PATH> de la base de registre de l'installation Windows montée sur /mnt. Exemple: RegistryAddKey "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\" System Scripts
| |||
| RegistryAddString <PATH> <NAME> <VALUE> | Ajoute la valeur <NAME> avec le contenu <VALUE> dans la branche <PATH> de la base de registre de l'installation Windows montée sur /mnt.
Exemple: RegistryAddString "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" SETUP setup.exe
| |||
| RegistryAddRunOnce <VALUE> | Raccourci pour RegistryAddString "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce" LRS <VALUE> | |||
| RegistryAddRun <VALUE> | Raccourci pour RegistryAddString "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" LRS <VALUE> | |||
| Resize <PART> <SIZE> | Redimensionne la partition <PART> du premier
disque dur à la taille <SIZE> qui peut être exprimée en
MB, GB, ou en pourcentage de la taille totale du disque.
Fonctionne pour FAT16/32, EXT2/3 et Reiserfs 3.
Exemples:
| |||
| ResizeMax <PART> | Raccourci pourResize <PART> 100% | |||
| CopySysprepInf <FICHIER> | Copie le fichier <FILE> vers \sysprep\Sysprep.inf sur /mnt et remplace l'entrée ComputerName par le nom de la machine tel que déclaré dans le LRS. Exemples:
| |||
| ChangeSID | Change le SID de la machine, en utilisant l'outil newsid.exe . | |||
| ChangeSIDAndName | Change le SID et le nom Netbios de la machine. Le nom utilisé est celui déclaré dans le LRS. | |||
| revosetdefault <VALUE> | Change l'entrée du menu par défaut (0=1ere entrée) |
De plus, Busybox est disponible pour la post-installation, ce qui signifie que les commandes suivantes sont disponibles:
[, ash, basename, busybox, cat, chgrp, chmod, chown, chvt, clear, cp, cut, date, dd, df, dirname, dmesg, dos2unix, du, echo, env, false, find, free, grep, gunzip, halt, head, id, ifconfig, init, insmod, kill, killall, klogd, linuxrc, ln, logger, ls, lsmod, mkdir, modprobe, more, mount, mv, pidof, ping, poweroff, ps, pwd, reboot, reset, rm, rmdir, route, sed, sh, sleep, sort, stty, sync, syslogd, tail, telnet, test, touch, tr, true, tty, umount, uname, uniq, unix2dos, wc, which, whoami, xargs, yes, zcat.
Ce script de type 'initinst' vérifie qu'un fichier est présent (\reinstalle.moi) sur la première partition Windows avant d'installer une nouvelle image. Si le fichier n'est pas présent, l'entrée de boot par défaut est remise à zéro (normalement, boot sur le disque dur) et reboote. Ce script doit être copié dans le répertoire correspondant à l'image (/tftpboot/revoboot/imgbase/Base-NN par exemple).
Mount 1
if [ ! -r /mnt/reinstalle.moi ]
then
umount /mnt
revosetdefault 0
reboot
fiAvant de faire une image à déployer,
Installez les outils Microsoft Sysprep sur C:\sysprep (voir par exemple http://support.microsoft.com/default.aspx?scid=kb;en-us;298491 pour les bases sur Sysprep). Ils se trouvent dans le répertoire Support\Tools\Deploy du CD d'installation.
Lancez via un shell sous Windows, 'cd c:\sysprep' puis 'sysprep.exe /quiet /reboot'.
Créez le fichier 'sysprep.inf' suivant dans le partage 'data' du LRS (exemple valable pour un Windows 2000 et Sysprep 1.x) :
[Unattended]
OemSkipEula=Yes
InstallFilesPath=C:\sysprep
TargetPath=\WINNT
[GuiUnattended]
AdminPassword=root
OEMSkipRegional=1
TimeZone=85
OemSkipWelcome=1
[UserData]
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
FullName=Name
OrgName=Org
ComputerName=NETBIOS_NAME
[Display]
BitsPerPel=16
Xresolution=1024
YResolution=768
Vrefresh=70
[SetupMgr]
DistFolder=C:\sysprep\i386
DistShare=win2000dist
[Identification]
JoinDomain=DOMAIN
DomainAdmin=domainadmin
DomainAdminPassword=password
[Networking]
InstallDefaultComponents=YesAvec ce fichier d'exemple, de nombreux paramètres vont être modifiés, tels que, le mot de passe administrateur (AdminPassword=), la résolution de l'écran, et rejoindre le domaine 'DOMAIN' (JoinDomain=) en demandant la création d'un compte pour la machine en utilisant les identifiants de l'administrateur réseau (DomainAdmin= et DomainAdminPassword=). De nombreux autres paramètres sont accessibles et sont largement documentés sur http://support.microsoft.com.
Lancez ensuite la création de l'image partagée, puis attachez le script de post-installation 'sysprep1' à la nouvelle image.
Après le déploiement de l'image, le fichier Sysprep.inf global sera recopié sur C:\Sysprep, le nom netbios (ComputerName=) sera remplacé par celui déclaré dans le LRS, et finalement, Windows et Sysprep seront lancés.
![]() | |
Le lancement de Sysprep modifie le SID de la machine. Certaines applications peuvent ne plus fonctionner correctement comme le module de contrôle sécurisé (LSC). Il faut alors lancer un script durant le sysprep pour mettre à jour le SID du serveur SSH du LSC en suivant les instructions suivantes: Dans 'C:\Sysprep\$oem$', créez un fichier 'Cmdlines.txt' qui contient: [Commands]
"C:\Progra~1\OpenSSH\bin\mkpasswd.bat"
Puis executez, sysprep.exe comme indiqué précédément. Le script mettant à jour les SID pour le serveur SSH sera lancé à la fin du sysprep. |
Normalement les scripts de post-installation, sont uniquement lancés lors d'un restauration, la première étape est donc d'activer l'exécution de ces scripts pour les sauvegardes: éditez les fichiers /tftpboot/revoboot/imgbase/Backup-B et Backup-L, et ajoutez ' revopost' à la fin de la 3eme ligne.
Maintenant, vous pouvez créer un script qui sera prise en compte globalement, dans /tftpboot/revoboot/images/postinst.
Le script ci-dessous, vérifie qu'il est moins de 7 heures, que l'on n'est pas en mode restauration, et éteint le client.
if [ `date +%H` -lt 7 ]
then
if ! grep revorestore /etc/cmdline
then
halt
fi
fi
Les scripts de post-installation peuvent être testés sur n'importe quelle machine Linux ou sous Windows avec Cygwin vu que ces scripts sont écrits en 'shell'.
Mais le plus intéressant est certainement de les mettre au point directement sur le client, en créant un script de post-installation qui va lancer un shell interactif sur le client :
Créez un script de post-installation qui contient uniquement la ligne 'sh </dev/console >/dev/console'.
Assignez ce script au client.
Ajoutez l'entrée de boot 'Post-installation', et choisissez la.
Vous allez alors obtenir un shell
Dans ce shell, vous devez d'abord charger la bibliothèque de post-installation en tapant ' . /opt/lib/libpostinst.sh'. Les commandes du type 'Mount 1', 'RegistryAddString' sont alors disponibles. Ce shell possède un éditeur simple, 'ae', qui vous permettra d'éditer le script du client en lançant 'ae /revoinfo/ADR_MAC/postinst' ou 'ae /revoinfo/templates/script'. Le script peut alors être testé avec ' . /revoinfo/ADR_MAC/postinst' ou ' . /revoinfo/templates/script' . Vous pouvez également lancer un serveur telnet en tapant 'inetd' pour mettre au point des scripts depuis un autre poste de travail.
Si vous voulez ajouter des fonctions à la bibliothèque, nous vous conseillons de créer un fichier du type 'mylibpostinst.sh' dans /tftpboot/revoboot/lib/util/lib/ et de le charger au début du script de post-installation avec un '. /opt/lib/mylibpostinst.sh' car le fichier 'libpostinst.sh' sera écrasé à chaque mise à jour du LRS.
Des logs de post-installation pour chaque client sont disponibles dans le fichier '/tftpboot/revoboot/images/ADR_MAC/postinst.log'.


