Déployer des images de machines

Sous Windows 98

de manière semi-automatique

 

Cette page explique comment déployer des images d'ordinateurs via un réseau TCP/IP.

 

I) - PRESENTATION

Le déploiement d'images de machines via un réseau TCP/IP est une problématique qui concerne bon nombre d'administrateurs réseau mais aussi responsables informatiques de petites structures et particuliers possèdants quelques machines.

 

II) - PRINCIPE

Les images des machines sont stockées sur un partage réseau. L'application de restauration se trouve elle aussi sur un partage réseau. Chaque machine est "marquée" afin de lui faire correspondre une image.
A l'aide d'une disquette bootable, connexion au réseau, authentification, reconnaîssance de l'image et installation.

 

III) - MISE EN OEUVRE

Le moteur principal de ce déploiement est l'outil PQDI (Power Quest Drive Image), permettant de créer/restaurer des images de machines (aide sur les paramètres, et page d'accès à toutes les infos de PQDI).
Un utilitaire fourni par ce même éditeur est "Nicdet.exe" permettant de détecter la carte réseau implantée dans un PC et d'installer les pilotes adéquats.

La disquette doit être bootable et si possible sous MS-DOS version 98 (créée avec Windows 98SE). Le couple de fichiers Config.sys/Autoexec.bat étant les acteurs essentiels puisqu'ils permettent le chargement et l'exécution du script de déploiement.

a) Préparation de l'image

Avant la création d'une image de machine, une règle essentielle est à respecter : le marquage de l'image.
Elle consiste à créer un fichier "ini" dans le dossier "c:\windows".

Nom du fichier : SETIMG.INI
Contenu : SET IMGFILE=NomIMG.PQI

Le nom de l'image doit être au format 8.3.

Une fois le PC "marqué", il ne reste plus qu'à créer l'image. Voyez l'article "Créer un CDde restauration de votre système" pour les détails.

b) Préparation du réseau

En effet, une machine du réseau doit être configurée en "serveur". Elle doit avoir un partage en lecture accessible à un compte d'installation où seront stockées les images.
Un autre partage en lecture/exécution pour ce même compte où sera placé l'application PQDI.exe.
Dans le script fournit, le partage est rendu "invisible" par l'ajout de la lettre "$" en fin de nom de partage. Cette astuce permet de protéger l'accès au partage aux utilisateur malveillants.

Pour une question de pratique que nous verrons plus loin, ces 2 partages auront les droits en accès total pour le compte administrateur.

c) Préparation de la machine devant recevoir l'image

Aucune préparation n'est nécessaire. La disquette s'occupe de tout.

 

IV) - FONCTIONNEMENT

La disquette ne doit pas être protégée en écriture, le script pouvant y écrire un fichier si besoin. Le script contenu sur la disquette effectue plusieurs grandes étapes :

 

V) - LES ASTUCES

Elles sont nombreuses !

Partages invisibles sur le serveur :
Il suffit de terminer le nom du partage par la lettre "$". Le partage devient donc invisible mais toujours accessible si on le nomme directement (par exemple, \\serveur\PQDI$).

La détection de l'installation du Ramdrive :
La lettre d'installation est incontrôlable, aussi il faut détecter la lettre de lecteur créée pour le Ramdrive. Si c'est "C", ce n'est pas bon. Il faut donc supprimer les éventuelles partitions puis en recréer une au moins.

Tout faire tenir sur une disquette :
L'utilisation d'un vieil utilitaire sous DOS : lha.exe. Il permet de créer une archive mais aussi d'en extraire les fichiers. Il est rapide et le taux de compression est correct. La taille de l'exécutable est faible par rapport à ses concurents.

Supprimer les partitions :
Après une recherche chez Microsoft, il s'avère qu'en passant un fichier texte à "debug.exe" il est possible de lui faire exécuter de manière automatique les instructions contenues dans ce fichier. Un tel fichier, donné par MS permet de supprimer toutes les partitions d'un disque.

Recréer une partition :
"fdisk.exe" accepte des paramètres pour automatiser la création de partitions.

FDISK /mbr :
Par expérience, si un système Linux était installé sur la machine, il faut reconstruire le Master Boot Record du disque dur. Je recrée donc ce MBR uniquement dans le cas d'une création de partition.

Détecter la carte réseau :
C'est la clef de voute du système.
L'utilitaire "Nicdet.exe" permet de détecter la carte réseau en place, ceci à la seule condition que le fichier associé "Nicdet.ini" soit correctement renseigné avec les cartes réseau à détecter.
En effet, chaque carte possède une signature codant le nom du fabricant, le type de carte,... Et c'est le fichier "Nicdet.ini" qui fait la traduction de ce code en un nom reconnu par les pilotes.
Ce fichier est généré par "PowerQuest Drive Image Pro" sous Windows mais en fonction des cartes réseau à prendre en charge, il peut être fortement utile de le corriger à la main avec un éditeur de texte tel que "Notepad.exe".

Le fichier de cet article prend en charge les cartes suivantes :

 
3COM Toutes versions de la serie 3C90x
CNET CNET PRO200WL PCI Fast Ethernet Adapter
CNET PRO200 PCI Fast Ethernet Adapter
INTEL INTEL(R) PRO/100+ PCI Adapter
DAVICOM DAVICOM 9102/A PCI Fast Ethernet Adapter
DAVICOM 1/10/100 PCI Fast Ethernet Adapter
DAVICOM LongRun/10/100 PCI Fast Ethernet Adapter
DAVICOM PCI HomeRun Adapter
DAVICOM PCI LongRun Adapter
DAVICOM PCI Fast Ethernet Based Adapter
DAVICOM 9102A Full Based Switching Adapter
DAVICOM 9102A Half Based Switching Adapter
DAVICOM 10 Base-T PCI Ethernet Adapter
D-LINK D-Link DE-530 PCI Ethernet Adapter
D-Link DE-530+ PCI Ethernet Adapter
D-Link DFE-500TX PCI Fast Ethernet Adapter (Rev B/C)
D-Link DFE-500TX PCI Fast Ethernet Adapter (Rev D)
D-Link DFE-500TX PCI Fast Ethernet Adapter (Rev E)
D-Link DFE-530TX PCI Fast Ethernet Adapter (Rev A)
D-Link DFE-530TX PCI Fast Ethernet Adapter (Rev B)
D-Link DFE-530TX PCI Fast Ethernet Adapter

KINGSTON Kingston EtheRx PCI 10/100 Fast Ethernet Adapter (KNE110TX)
Linksys LNE 100TX Fast Ethernet Adapter
LINKSYS Linksys LNE 100TX Fast Ethernet Adapter
REALTEK Realtek RTL8029 PCI Ethernet NIC
Realtek RTL8139/810X Family PCI Fast Ethernet NIC
SMC SMC EtherEZ (SMC8416 Series)
SMC EtherPower ii 10/100 Ethernet Adapter (SMC9432 Series)
SMC EZ Card 10/100 PCI (SMC1211 Series)
ZONET Realtek RTL8139C PCI Fast Ethernet Adapter

 

L'authentification :
Dans ce cas, elle s'effectue sur un domaine avec le compte "inst". La modification du fichier "Nicdet.ini" dans la section [NETWORK] permettra d'adapter les paramètres.

La détection de l'image :
Elle s'effectue par exécution du fichier "SETIMG.INI" renommé en "SETIMG.BAT" (j'ai donné l'extension "ini" pour que le fichier se confonde avec les fichiers systèmes, évitant un effacement volontaire) sur l'ancienne partition C: dans le dossier \Windows. Cela positionne une variable d'environnement qui est ensuite récupérée par le script.
Dans le cas où il y aurait eu formatage du disque, le fichier n'existe pas et il y aurait une erreur de lecture. Dans ce cas uniquement, lorsqu'il y a eu reboot, un fichier a été écrit sur la disquette et sert d'indicateur pour savoir s'il faut rechercher le fichier comporatnt le nom de l'image.

L'installation de l'image :
Le passage en paramètres du nom de l'image et d'un fichier texte de script à l'application PQDI permet une installation automatisée.

 

VI) - L'UTILISATION

Il y a 2 manières d'utiliser cette disquette : pour installer une image ou pour préparer une machine afin de générer une image.

En effet, pour installer une image :

Il suffit de répondre (C)ontinuer lorsque la question est posée (après l'authentification).

Pour préparer une machine afin de générer une image :

Il suffit de répondre (P)réparer une image. Cette partie consiste à supprimer tous les fichiers bak, swp et log, puis à installer la souris et enfin lancer l'application PQDI.exe.
Dans ce cas, il faut s'être authentifié avec un compte ayant les droits lecture/écriture sur le partage de stockage des images.

Une troisième possibilité : (Q)uitter, qui permet de retrouver le bon vieux DOS.

 

VII) - LE PREMIER REBOOT APRES RESTAURATION

Ce premier doit être contrôlé par la personne ayant installé l'image.
En effet, toutes les images restaurées génèrent des machines ayant le même nom. Il faut donc installer les images une par une en prenant soin de renommer chaque machine avant de restaurer la suivante.
Ce changement de nom peut s'effectuer de différentes manières : Via l'interface Windows ou via un script d'ouverture de session. Pour ma part, j'ai opté pour la seconde méthode car les machines à restaurer son exclusivement en Windows 98. J'utilise Kixtart V4.10 pour mes scripts d'ouverure de session et j'ai donc affecté à l'utilisateur d'installation un script spécifique qui demande le Nom de la machine, son Workgroup et le Commentaire.

Voici pour l'exemple le source du script :

; =============================
; Script d'ouverture de session
; =============================
;
; Créé le 18/04/2002
;
; Version spéciale utilisée uniquement par le compte Inst
; Cette version demande le nom de la machine et le n° de la machine
; et reboote automatiquement
;
;
; ----------------------------------------------------------
;
; A utiliser avec Kixtart 2001 ou supérieur
;
; Ce script doit être dans tous les répertoire NETLOGON de chaque contrôleur de domaine.
; (racine_système\WINNT\SYSVOL\domain\scripts)
; Il en est de même pour Kixtart.
;
; Machine CPD est le Contrôleur du domaine
;
; *************************
; ****** Début du script ******
; *************************
;On met la fenêtre "Command" en plein écran
$RC=SetConsole ("MAXIMIZE")

; Mise à l'heure de la machine
$SRVTime="\\CPD" ; Serveur de temps
SETTIME $SRVTime

If @INWIN<>2
   AT(5,1) "Cette machine n'est pas en Windows 9x"
   AT(6,1) "Vous ne pouvez pas utiliser ce login"
   AT(8,1) "Vous allez être déloggué"
   KbHit()
   $RC = LogOff(0)
   EXIT 1
EndIf

; --------------------------------------------------
; Initialisation du nom et n° de machine
; --------------------------------------------------
:INIT
cls
AT(1,1) " "
AT(1,1) "Nom de la machine et valider par <ENTER> : "
FLUSHKB
GETS $nom_pst
AT(3,1) "(C)onfirmer / (R)ecommencer"
GET $Confirm
If UCASE($Confirm)<>"C"
   GOTO INIT
EndIf

:GRP
AT(6,1) " "
AT(6,1) "Workgroup de la machine et valider par <ENTER> : "
FLUSHKB
GETS $grp_pst
AT(8,1) "(C)onfirmer / (R)ecommencer"
GET $Confirm
If UCASE($Confirm)<>"C"
   GOTO NUM
EndIf

:NUM
AT(11,1) " "
AT(11,1) "Commentaire concernant la machine et valider par <ENTER> : "
FLUSHKB
GETS $num_pst
AT(13,1) "(C)onfirmer / (R)ecommencer"
GET $Confirm
If UCASE($Confirm)<>"C"
   GOTO NUM
EndIf

AT(18,1) "(V)alider tous les paramètres / (R)ecommencer"
FLUSHKB
GET $Confirm
If UCASE($Confirm)<>"V"
   GOTO INIT
EndIf

$nom_pst=UCASE($nom_pst)
$grp_pst=UCASE($grp_pst)
$num_pst=UCASE($num_pst)

WriteValue("HKLM\System\CurrentControlSet\Control\ComputerName\ComputerName","ComputerName",$nom_pst,"REG_SZ")
WriteValue("HKLM\System\CurrentControlSet\Services\VxD\VNETSUP","ComputerName",$nom_pst,"REG_SZ")
WriteValue("HKLM\System\CurrentControlSet\Services\VxD\VNETSUP","Workgroup",$grp_pst,"REG_SZ")
WriteValue("HKLM\System\CurrentControlSet\Services\VxD\VNETSUP","Comment",$num_pst,"REG_SZ")

CLS
FLUSHKB
AT(10,1) "La machine va maintenant être redémarrée..."
for $i=1 to 5
   If KbHit()
      EXIT 1
   EndIf
   sleep 1
next
sleep 10
shell "rundll32.exe shell32.dll,SHExitWindowsEx 6"

EXIT 1

 

 

VIII) - AJOUT DE CARTES RESEAU

La partie la plus délicate consiste à ajouter de nouveaux pilotes pour la prise en charge de cartes réseaux supplémentaires. Cette opération s'effectue sur 2 plans : la modification du fichier "Nicdet.ini" à l'aide d'un éditeur de texte tel que "Notepad.exe" et la modification de l'archive "Ebd.lzh" à l'aide de l'utilitaire "lha.exe".

Pour la collecte des pilotes d'une nouvelle carte réseau, il faut télécharger la partie DOS ainsi que la partie Windows 98 (et surtout 98SE si elle existe).
Par analogie à l'existant dans le fichier "Nicdet.ini", il suffit d'jouter les lignes supplémentaires correspondantes...
Pour les pilotes, procéder aussi par analogie avec l'existant en récupérant les fichiers adéquats.

Pour ajouter les fichiers à l'archive, utiliser la commande : lha a Ebd.lzh NomFichier.ext
(Toutes les informations concernant l'utilitaire lha.exe par la commande lha /?)

 

 

IX) - LE CONTENU DE LA DISQUETTE

Le contenu de la disquette est téléchargeable dans un format auto-extractible. Il suffit de double-cliquer sur le fichier téléchargé en ayant pris soins au préalable de mettre une disquette vierge dans le lecteur A: (Télécharger diskboot.exe (1,1 MO)).
Noter que cette image de disquette a été réalisée avec FloppyImage V1.5.2 disponible en téléchargement sur ce site.

Pour des raisons de license, les fichiers concernant DOS ne sont pas inclus dans l'image. Pour recréer la disquette fonctionnelle, il suffit de placer la disquette créée précédemment dans une machine Windows 98 puis :

A titre indicatif, voici le listing du contenu de la disquette :

 

Cet article fournit une base de travail pour ceux qui voudraient approfondir l'installation automatisée d'images disques en utilisant des moyens à faible coût.

 

 

Début de page  |  Page d'accueil  |  Me contacter

(C) Laurent - autourdupc.com   -  

Création le 30 juin 2002.
Mise à jour le 4 mai 2004.