Opsi – Creation d’une image Windows 7

Nous souhaitons générer une image Windows 7 32 bits déployable via PXE sur nos clients en utilisant notre serveur Opsi comme serveur de boot.
Pour cela, il faut dans un premier temps générer un environnement de préinstallation autonome WinPE (pseudo système d’exploitation Live) pour une architecture 32 bits.
Dans ce but, nous utiliserons Windows AIK.

 
Monter l’ISO de WAIK, ici KB3AIK_FR.iso, dans un lecteur virtuel (avec Daemon Tools Lite ou MagicISO par exemple) et lancer son installation.

 

"%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd" <ARCH> "C:\winpe"

"%ProgramFiles%\Windows AIK\Tools\<ARCH>\imagex.exe" /mountrw "C:\winpe\winpe.wim" 1 "C:\winpe\mount"

echo C:\opsi\startnet.cmd > "C:\winpe\mount\Windows\System32\startnet.cmd"

"%ProgramFiles%\Windows AIK\Tools\<ARCH>\imagex.exe" /commit /unmount "C:\winpe\mount"

move "C:\winpe\winpe.wim" "C:\winpe\ISO\sources\boot.wim"

Ci-dessus, <ARCH> représente l’architecture du système d’exploitation qui sera installé par la suite, dans notre cas 32 bits :

  • x86 : pour les systèmes 32 bits
  • amd64 : pour les systèmes 64 bits

Exemple pour un système 32 bits :

>"%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd" x86 "C:\winpe"

===================================================
Creating Windows PE customization working directory

C:\winpe
===================================================

1 fichier(s) copié(s).
1 fichier(s) copié(s).
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\bcd
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\bootfix.bin
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\fonts\chs_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\fonts\cht_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\fonts\jpn_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\fonts\kor_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\boot\fonts\wgl4_boot.ttf
9 fichier(s) copié(s)
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\bcd
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\fonts\chs_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\fonts\cht_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\fonts\jpn_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\fonts\kor_boot.ttf
C:\Program Files\Windows AIK\Tools\PETools\x86\EFI\microsoft\boot\fonts\wgl4_boot.ttf
6 fichier(s) copié(s)
1 fichier(s) copié(s).

Success

Updating path to include peimg, cdimage, imagex

C:\Program Files\Windows AIK\Tools\PETools\
C:\Program Files\Windows AIK\Tools\PETools\..\x86

>"%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" /mountrw "C:\winpe\winpe.wim" 1 "C:\winpe\mount"

ImageX Tool for Windows
Copyright (C) Microsoft Corp. All rights reserved.
Version: 6.1.7600.16385

Mounting: [C:\winpe\winpe.wim, 1] -> [C:\winpe\mount]…

[ 100% ] Mounting progress

Successfully mounted image.

Total elapsed time: 8 sec

>echo C:\opsi\startnet.cmd > "C:\winpe\mount\Windows\System32\startnet.cmd"


>"%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" /commit /unmount "C:\winpe\mount"

ImageX Tool for Windows
Copyright (C) Microsoft Corp. All rights reserved.
Version: 6.1.7600.16385

Committing: [C:\winpe\mount]…

[ 100% ] Committing Image progress

Successfully committed image.

Unmounting: [C:\winpe\mount]…

[ 100% ] Mount cleanup progress

Successfully unmounted image.

Total elapsed time: 15 sec

>move "C:\winpe\winpe.wim" "C:\winpe\ISO\sources\boot.wim"
1 fichier(s) déplacé(s).

 

Remarques

Par défaut, le fichier starnet.cmd contient seulement la ligne suivante :

wpeinit

Après modification, il contient la ligne suivante :

C:\opsi\startnet.cmd 

 
Le script startnet.cmd est généré par l’image de boot linux lors de l’appel au script Python /var/lib/opsi/depot/win7/setup.py
Il contient l’exécution du script work.cmd, copiant le fichier /var/lib/opsi/depot/win7/custom/unattend.xml puis appelant wpeinit
Les fichiers setup.py de chaque distribution sont identiques.
De plus, chaque distribution dispose de deux fichiers unattend.xml identiques entre eux (avant modification du custom) :

  • /var/lib/opsi/depot/win7/custom/unattend.xml
  • /var/lib/opsi/depot/win7/opsi/unattend.xml.template

Contrairement au script setup.py, le fichier unattend.xml est très différent entre les différentes distributions.
 
Contenu partiel du script /var/lib/opsi/depot/win7/setup.py :

#ligne 93
target = '/mnt/hd'
#ligne 785
        # Create work.cmd
        logger.notice("Creating work.cmd")
        f = open(target + '/opsi/work.cmd', 'w')
        print >> f, "@echo off\r"
        print >> f, "copy c:\\opsi\\unattend.xml x:\\unattend.xml >nul\r"
        print >> f, ":init\r"
        print >> f, "set mount_try_count=0\r"
        print >> f, "c:\\opsi\\SetWallpaper.exe c:\\opsi\\opsibg.bmp >nul 2>nul\r"
        print >> f, "echo Initializing ..... please wait ......\r"
        print >> f, "wpeinit\r"
[...]
#ligne 886
        # Create startnet.cmd
        logger.notice(u"Creating startnet.cmd")
        f = open(target + '/opsi/startnet.cmd', 'w')
        print >> f, "@echo off\r"
        print >> f, "copy c:\\opsi\\work.cmd x:\\work.cmd >nul\r"
        print >> f, "x:\\work.cmd"
        f.close()

 
Au final, après cette procédure, le dossier C:\winpe contient l’arborescence de fichiers/dossiers suivante :

winpe/
├── etfsboot.com
├── ISO/
│   ├── boot/
│   │   ├── bcd
│   │   ├── boot.sdi
│   │   ├── bootfix.bin
│   │   ├── etfsboot.com
│   │   └── fonts/
│   │       ├── chs_boot.ttf
│   │       ├── cht_boot.ttf
│   │       ├── jpn_boot.ttf
│   │       ├── kor_boot.ttf
│   │       └── wgl4_boot.ttf
│   ├── bootmgr
│   ├── EFI/
│   │   └── microsoft/
│   │       └── boot/
│   │           ├── bcd
│   │           └── fonts/
│   │               ├── chs_boot.ttf
│   │               ├── cht_boot.ttf
│   │               ├── jpn_boot.ttf
│   │               ├── kor_boot.ttf
│   │               └── wgl4_boot.ttf
│   └── sources/
│       └── boot.wim
└── mount/

9 directories, 18 files

Toutefois, seul le contenu du dossier ISO nous intéresse.
Copier ensuite le contenu de C:\winpe\ISO sur le serveur opsi.opensharing.priv, dans le répertoire /var/lib/opsi/depot/win7/winpe/ :

C:\winpe\ISO\* /var/lib/opsi/depot/win7/winpe/

 

Définir les droits d’accès sur ce dossier :

# opsi-setup --set-rights /var/lib/opsi/depot/win7/winpe/
[5] [Feb 08 14:34:50] Setting rights on directory u'/var/lib/opsi/depot/win7/winpe' (Rights.py|121)
# ls -lA /var/lib/opsi/depot/win7/winpe/
total 388
drwxrwx--- 3 opsiconfd pcpatch   4096 févr.  8 14:33 boot
-rwxrwx--- 1 opsiconfd pcpatch 383562 juil. 13  2009 bootmgr
drwxrwx--- 3 opsiconfd pcpatch   4096 févr.  8 14:33 EFI
drwxrwx--- 2 opsiconfd pcpatch   4096 févr.  8 14:33 sources

 

Copier le contenu du CD d’installation de Windows 7 dans le répertoire suivant /var/lib/opsi/depot/win7/installfiles/.


/var/lib/opsi/depot/win7/installfiles/

 

Définir les droits d’accès sur ce dossier :

# opsi-setup --set-rights /var/lib/opsi/depot/win7/installfiles/
[5] [Feb 08 14:51:19] Setting rights on directory u'/var/lib/opsi/depot/win7/installfiles' (Rights.py|121)
# ls -lA /var/lib/opsi/depot/win7/installfiles/
total 512
-rwxrwx---  1 opsiconfd pcpatch     43 avril 12  2011 autorun.inf
drwxrwx---  4 opsiconfd pcpatch   4096 févr.  8 14:41 boot
-rwxrwx---  1 opsiconfd pcpatch 383786 avril 12  2011 bootmgr
drwxrwx---  3 opsiconfd pcpatch   4096 févr.  8 14:41 efi
-rwxrwx---  1 opsiconfd pcpatch 112400 avril 12  2011 setup.exe
drwxrwx--- 10 opsiconfd pcpatch   4096 févr.  8 14:43 sources
drwxrwx---  5 opsiconfd pcpatch   4096 févr.  8 14:43 support
drwxrwx---  3 opsiconfd pcpatch   4096 févr.  8 14:43 upgrade

 

Aller plus loin

 

Opsi – Installation du serveur Part1 Opsi – Installation du serveur Part2
Opsi – Creation d’une image Windows 7 Opsi – Installation d’un client Windows 7
Opsi – Creation d’une image Windows 10 Opsi – Installation d’un client Windows 10
Opsi – Creation d’une image Windows XP Opsi – Installation d’un client Windows XP
Opsi – Pour aller plus loin Opsi – Fonctionnement des scripts
Opsi – Exemples de scripts Opsi – Script de test local
Opsi – Scripts avancés Opsi – Création d’un produit
Opsi – Commandes utiles Opsi – Package activate-win Officiel
Opsi – Package windomain Officiel

 

Fermer le menu
%d blogueurs aiment cette page :