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.
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.
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.
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.PQILe 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.
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 :
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 :
|
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.
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.
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 $SRVTimeIf @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
EndIfAT(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
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 /?)
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.
|
visites |