Réduire la taille du DVD multiboot

version anglaise : dvd_multibootreduirelataille

Un des plus gros inconvénients des installations d'OS basés sur NT est le temps perdu à copier les fichiers. On lance setup, setup copie les fichiers. Setup redémarre et copie d'autres fichiers. Setup redémarre une nouvelle fois et l'installation commence. Malgré toutes les évolutions de Windows depuis NT4, l'installation se déroule toujours selon cette méthode démodée. Un des meilleurs secrets d'installation “unattended” est d'éviter la plupart de ces recopies ; cela fait de gagner du temps et de l'espace disque.

Examinons le répertoire i386 pour XP Pro (avec spx intéggré). Le répertoire i386 fait 478 megs. Il contient de nombreux éléments peu utiles.On y trouve le code pour les migrations et les mises à jour ; le code pour d'autres langues, pour désinstaller l'OS et revenir à uneversion antérieure ; du code pour fonctionner en mode DOS, du le code pour fonctionner en GUI.

Si on fait sa propre installation, la plupart de ce code n'est jamais utilisé ni nécessaire. Pour pourquoi pas enlever tout ce dont on n'a pas besoin ?

Tout d'abord, mettre le cd d'XP dans le lecteur ou le copier sur le disque dur.

Puis taper :

winnt32.exe /noreboot

S'il se produit des erreurs voir Note1 à la fin.

Quand l'installation de XP démarre, progresser dans les dialogues

  • choisir une nouvelle installation (pas une mise à jour)
  • sur la fenêtre “Options d'installation”, cliquer sur “Advanced Options”,
  • et vérifier que “copy all installation files from the CD” est coché. S'il est grisé, ce n'est pas grave.

Une fois terminée l'installation, on retrouve deux répertoires cachés à la racine du disque C (Pour les voir, il faut donc avoir mis ce réglage dans les options d'affichage de l'explorateur de fichiers) :

C:\$WIN_NT$.~LS - renommer ce répertoire en install
C:\$WIN_NT$.~BT - renommer ce répertoire en BOOT (en capitales)
  • Copier le répertoire BOOT dans le répertoire install.
  • Dans le répertoire Install, effacer le fichier size.sif.
  • Dans le répertoire BOOT, effacer les fichiers winnt.sif et migrate.inf.
  • Si on veut avoir le message “press any key to boot from cd”, mettre bootfix.bin dans le répertoire BOOT.
  • Pour une installation “unattended”, renommer le fichier unattend.txt en winnt.sif et le placer dans le répertoire BOOT.
  • Maintenant, ouvrir avec Hxd (éditeur hexa) le fichier setupldr.bin qui se trouve dans le répertoire BOOT. Remplacer (recherche texte dans la zone de droite) le mot i386 par BOOT (en majuscules) ; il devrait se faire 4 changements.

Il nous reste à nous occuper des fichiers identificateurs dans le répertoire c:\install. Copier les fichiers win51, win51IC, win51IP (et win51ip.spx et win51ic.spx si on a intégré le SPx) depuis le CD XP vers c:\install. En cas de version avec SPx, il faut aussi copier spnotes.htm dans le répertoire install.

Le répertoire c:\install devrait ressembler à ceci :

Directory of c:\install

10/08/2003  06:58 PM    <DIR>          .
10/08/2003  06:58 PM    <DIR>          ..
10/08/2003  06:58 PM    <DIR>          I386
10/08/2003  07:52 PM             2,048 xpboot.bin
08/23/2001  09:00 AM                10 WIN51
08/23/2001  09:00 AM                10 WIN51IC
08/23/2001  09:00 AM                 2 WIN51IC.SP1
08/23/2001  09:00 AM                10 WIN51IP
08/23/2001  09:00 AM                 2 WIN51IP.SP1
08/23/2001  09:00 AM            11,387 SPNOTES.HTM
10/08/2003  06:58 PM    <DIR>          BOOT

Il ne nous reste plus qu'à créer le secteur de boot. Télécharger http://home.online.n...sols/xpboot.bin et l'enregistrer dans le répertoire install. AvecHxd, changer i386 en BOOT.

Changer :

...h...G..........F.....F.............r..a..v.......].....$..................SETUPLDR.BINBOOTFIX.BINI386..........................................

en :

...h...G..........F.....F.............r..a..v.......].....$..................SETUPLDR.BINBOOTFIX.BINBOOT..........................................

Passons à l'étape build. Avec cdimage.exe, taper la commande suivante :

cdimage -lXPSP1 -t08/23/2001,09:00:00 -bc:\install\xpboot.bin -h -n -m -o c:\install c:\xpspx.iso

On obtient xpsp1.iso dont la taille fait 338 MB.

On voit que cette méthode réduit la taille du répertoire i386 de 478 megs à 338 megs. Ces 150 megs économisés permettent d'ajouter davantage de logiciels. On peut ainsi mettre xp pro, xp home, win2k pro, win2k serv, win2k adv server sur un seul cd de 700 meg.

Un autre avantage de cette méthode : la rapidité : avec deux PCs, un avec cette méthode et l'autre avec le cd habituel, le premier a déjà fait lamoitié du travail quand l'autre est encore en train de copier ses fichiers…

Une seule limite : on ne peut faire que des installations complètes, pas des mises à jour. Mais le plus souvent, ce n'est pas grave.

<note>Si on a une erreur comme “setup has been disabled”, il faut installer le xp application toolkit. Cette situation se produit bsi on installe win2k sur XP. Télécharger le toolkit sur http://www.microsoft.com/downloads/details...&DisplayLang=en. L'installer, puis lancer démarrer > programmes > Microsoft Windows Application Toolkit > Compatibility Administrator Tool 3.0. Une fois ouvert, un clic sur Applications > Windows 2000 > on A droite, cliquer sur winnt32.exe et le désactiver.</note>

<note>Si on ne veut pas télécharger ce toolkit, il suffit de renommer windows\system32\ahui.exe en autrechose. Une fois fait, renommer à nouveau en ahui.exe.</note>

1. Pour faire plusieurs types d'installation (normal, unattend, OEM...)

Le problème : unecréé un CD Unattended, on ne peut l'utiliser que pour une installation sans surveillance. On ne peut pas l'utiliser en console de récupération ou pour réparer XP. De plus, on ne peut utiliser qu'un fichier unattend, on ne peut pas en avoir de multiples.

Nous allons adapter la méthode pour utiliser le CD pour faire une installation sans assistance, ou avec utilisation de la console de récupération ou de réparation XP.

Supposons que nous ayions déjà c:\install (méthode ci-dessus)

D'abord, renommer le répertoire BOOT en VOL1. Puis le recopier en deux autres répertoires que l'on nommera VOL2 et VOL3 (VOL1, VOL2, VOL3 en majuscules).Ainsi, VOL1, VOL2 et VOL3 auront les mêmes fichiers et la même taille. Les trois répertoires doivent se trouver dans c:\install

Ensuite,

  • éditer en hexa c:\install\VOL1\setupldr.bin, remplacer BOOT par VOL1 (4 occurences)
  • éditer en hexa c:\install\VOL2\setupldr.bin, remplacer BOOT par VOL2 (4 occurences)
  • éditer en hexa c:\install\VOL3\setupldr.bin, remplacer BOOT par VOL3 (4 occurences)

Vérifier que VOL1 ne contient pas de fichier a winnt.sif. Mettre le fichier unattend dans VOL2. Ignorer VOL3 pour l'instant.

Renommer xpboot.bin en VOL1.DAT (en majuscules). Copier VOL1.DAT en VOL2.DAT et VOL3.DAT.

Nous avons donc VOL1.DAT, VOL2.DAT et VOL3.DAT, qui sont identiques. Editer en hexa VOL1.DAT et remplacer BOOT par VOL1. Editer en hexa VOL2.DAT et remplacer BOOT par VOL2. Editer en hexa VOL3.DAT et remplacer BOOT par VOL3.

Télécharger http://www.nu2.nu/nu...es/diskem1x.zip et l'extraire dans un répertoire temp. Copier les fichiers suivants de ce répertoire temp vers le répertoire c:\install :

Deload.bin
diskem1x.bin
loader.bin

Copier ce qui suit et le sauver dans un fichier texte c:\install\diskemu.cmd

c:\install\diskemu.cmd
;
:boot
cls
print
print Press Enter to boot from CD...
getkey 5 esc
onkey esc boot 80
onkey entr goto start
; When no key found...
goto boot
:start
cls
print
print ------------------------------------------------------------------------------
print                                cd name here
print                                     by gosh
print ------------------------------------------------------------------------------
print F1=Help
print                 0)   WINXP PRO Volume License SP1 Regular
print                 1)   WINXP PRO Volume License SP1 Unattended
print                 2)   WINXP PRO Volume License SP1 OEMPreinstall
print
print                 x)   More Options...
print                 q)   Quit to command prompt
print                 r)   Reboot
print                 Esc) Boot first harddisk
print
print Hit the key of choice:
:mainkey
; timeout is 30 seconds, default key is escape
getkey 30 esc
onkey 0 run VOL1.DAT
onkey 1 run VOL2.DAT
onkey 2 run VOL3.DAT
onkey q quit
onkey r reboot
onkey x goto dev
onkey f1 goto help
onkey esc boot 80
; When no key found...
goto mainkey
;
:help
cls
print HELP
print ----
print
print Hit the key of your choice (1,2,q,r or <Esc>) in the main menu ->
print Hit the key "d" will bring you to the hidden Development menu  ->
print
print Press any key to return to main menu...
getkey
goto start
; EOF
Ok so now in your c:\install folder you should have the following:

Directory of c:\install

10/08/2003  06:58 PM    <DIR>          .
10/08/2003  06:58 PM    <DIR>          ..
10/08/2003  06:58 PM    <DIR>          I386
10/08/2003  07:52 PM             2,048 VOL1.DAT
08/23/2001  09:00 AM                10 WIN51
08/23/2001  09:00 AM                10 WIN51IC
08/23/2001  09:00 AM                 2 WIN51IC.SP1
08/23/2001  09:00 AM                10 WIN51IP
08/23/2001  09:00 AM                 2 WIN51IP.SP1
08/23/2001  09:00 AM            11,387 SPNOTES.HTM
10/08/2003  06:58 PM    <DIR>          VOL1
08/23/2001  09:00 AM             2,980 DISKEMU.CMD
08/23/2001  09:00 AM               512 DELOAD.BIN
08/23/2001  09:00 AM            12,288 DISKEM1X.BIN
08/23/2001  09:00 AM             2,048 LOADER.BIN
10/08/2003  07:52 PM             2,048 VOL2.DAT
10/08/2003  07:52 PM             2,048 VOL3.DAT
10/08/2003  11:38 PM    <DIR>          VOL2
10/08/2003  11:38 PM    <DIR>          VOL3

Ca y est. Maintenant, construisons avec cdimage.exe :

cdimage -lXPSP1 -t08/23/2001,09:00:00 -bc:\install\loader.bin -h -n -m -o c:\install c:\xpsp1.iso

On a maintenant un cd bootable XP Pro SP1. Quand on boote dessus, si on choisit l'option 0, c'est juste une installation standard. On peut utiliser la console de réparation, réparer xp, et on peut choisir les options dans le setup de xp. Si on choisit 2, on a une installation unattended. L'option 3 permet de faire ce qu'on veut. Par exemple, on peut faire une OEMPreinstall.