Installation Windows via PXE

De Wiki doc


Historiquement, l'installation de Windows ne s'effectue que par DVD. Ce type de support étant devenu obsolète, il a fallu trouver des alternatives pour les rares fois où l'on a encore besoin de ce système d'exploitation...

Une méthode attrayante fut l'amorçage par le réseau. Ayant déjà une infrastructure adapté à ce type d'usage, un simple démarrage PXE permet désormais d'installer n'importe quelle version de Windows.

Pré requis:

Je part du principe que vous avez déjà une infrastructure comportant ces pré-requis. Seulement les modifications concernant notre sujet seront abordées.

Serveur PXE

Création de l’arborescence

En plus des répertoires nécessaires au fonctionnement du PXE, j'en crée trois qui vont contenir respectivement l'image WinPE, l'image iPXE ainsi que le script de démarrage pour ce dernier.

mkdir -p /srv/tftp/{iso,noyaux/ipxe,scripts/ipxe}

Provisionnement de l'arborescence

Nous allons mettre nos fichiers dans les répertoires précédemment créés.

Transférer l'ISO winPE

Utiliser la méthode de votre choix pour mettre cette image dans /srv/tftp/iso/winpe.iso.

Transférer l'image iPXE

De même pour la ROM iPXE qui doit se trouver dans /srv/tftp/noyaux/ipxe/ipxe.lkrn.

Création du script de démarrage

vim /srv/tftp/scripts/ipxe/win-install.ipxe
#!ipxe
dhcp
set boot-url http://192.168.180.180
initrd ${boot-url}/iso/winpe.iso
kernel ${boot-url}/memdisk iso raw
boot

Note: j'utilise le protocole HTTP pour le chargement de winpe.iso afin que cela soit beaucoup plus performant que par TFTP. Si vous préférez ce dernier, il suffit de remplacer http:// par tftp:// dans set boot-url.

Ajout d'une entrée dans le menu PXE

vim /srv/tftp/pxelinux.cfg/default
LABEL Installation de Windows
MENU LABEL Installation de Windows
KERNEL /noyaux/ipxe/ipxe.lkrn
INITRD /scripts/ipxe/win-install.ipxe

Partage Samba

Le partage Samba a pour rôle d'héberger les fichiers contenus dans les DVD d'installation des différents Windows à installer. Pour le coup vous vous organisez comme vous voulez mais je préfère avoir un partage dédié que je puisse mettre en lecture seule ou n'autoriser l'accès qu'à certain utilisateurs par exemple.

Création d'un partage dédié

vim /etc/samba/smb.conf
[Windows]
path = /home/toto/Windows
public = yes
read only = yes
writeable = no
browseable = yes
valid users = toto, nobody
comment = Installation de Windows

Provisionnement du partage

Création de l'arborescence

mkdir -p /home/toto/Windows/OS/{7,8.1,10}

Copie des fichiers d'installation

Pour copier ces fichiers, vous devez monter les ISO d'installation et copier l'intégralité de leur contenu dans les répertoires correspondant au système voulu (on les a créés juste avant). Vous trouverez votre bonheur dans mon dépôt logiciel.

Démarrage du système

Démarrez votre machine via PXE, sélectionnez votre entrée d'installation et lancer Windows PE.

Vous arrivez dans un Windows minimaliste ne comportant qu'une fenêtre cmd, à ce stade, il y a deux possibilités:

  • Soit votre carte réseau n'est pas géré
  • Soit elle l'est (passez directement à l'étape du montage du partage Samba)

Ajouter un pilote réseau

Dans le premier cas, il va falloir ajouter le pilote de votre carte réseau pour pouvoir monter le partage Samba et charger les fichiers d'installation. Pour ce faire, télécharger les pilotes réseaux et extraire le ou les fichiers .inf ainsi que ceux qui se trouve dans le même dossier que lui. Munissez-vous d'une clé USB et les y placer. La brancher sur WinPE et identifier la lettre de votre clé avec la procédure suivante:

diskpart
list volume
exit

Une fois votre lettre de lecteur identifiée, placez-vous dedans (F: dans l'exemple) et allez chercher vos pilotes. Voici un exemple pour un Shuttle DS57U.

f:
cd "LAN_Intel_i211+i218LM\PRO1000\Winx64\NDIS62"
drvload e1d62x64.inf
drvload e1r62x64.inf
drvload e1s62x64.inf
drvload e1q62x64.inf

On remarque qu'une adresse IP a été attribuée par notre DHCP avec la commande

ipconfig

Les pilotes sont bien installés.

Note: on constate qu'il faut plusieurs fichiers ".inf", ce n'est pas toujours le cas, par exemple, avec ma Gigabyte GA-X58A-UD5, un seul suffit.

Monter un partage Samba

Je vais par exemple monter le partage pour pouvoir installer un Windows 8.1

net use z: \\192.168.170.178\windows\os\8.1

INFORMATION

Depuis WinPE 10, il est obligatoire de renseigner un couple d'identifiant/mot de passe (même pour la session anonyme), sous peine de se taper une erreur 58 (toujours aussi explicite les erreurs chez M$...). Il faut donc utiliser la syntaxe suivante: net use z: \\192.168.170.178\windows\os\8.1 /user:domaine\anonymous anonymous.

Se placer dedans

z:

Lancer le programme d'installation

setup.exe

La suite est identique à une installation par DVD.

Sources