dimanche 17 février 2008

Installez vos drivers SATA/RAID/SCSI directement dans votre CD Windows.

hddLes disques dur à l' heure actuelle offre des capacité de stockage de plus en plus impressionnantes pour des prix de plus en plus serrés, et l' occasion de s' offrir un système Raid pour sont Pc domestique est désormais à la porté de toutes les bourses. J' ai donc moi aussi franchi le pas, en m' offrant il y' a quelque mois un peu de sécurité grâce à deux disque dur 320 Go montés en Raid 0 (miroir) .

Je rappel avant d' aller plus avant que la sécurité qu' apporte un système Raid n' est de nos jour plus un luxe, en effet, les gros disques dur ont les défauts de leurs avantages : leur grosse taille nous rend fainéant ! Pire ils nous donnent l' illusion de la sécurité.

Avec les vieux 40/80 Go, personne n' oubliait de faire ces backup pour gagner de la place. Ceux qui avaient plusieurs dur les divisaient par centre d' intérêt (un hdd pour le warez, un autre pour les divx etc... ) Si bien que lorsqu' on perdait un disque, on ne perdait jamais tout !

Aujourd'hui vous stockez tout sur votre éléphantésque 500 Go, vous ne 'backupez' plus rien parce que vous avez tellement de place mais surtout tellement de choses à graver que la tache parait impossible.

Et si votre disque vous lâche un bon matin sans crier gare ; vous perdrez TOUT !!! adieu les photos de la naissance du petit dernier, adieu le rapport de fin d' année de 150 pages, adieu les vieux divx introuvable sur emule etc etc...

Donc, si vous pensez toujours qu' un deuxième disque dur est une dépense inutile... réfléchissez-y à deux fois !!!

Maintenant, si l' intérêt d' avoir un Raid chez soit est plus évident, il n' en va pas forcement de même quand à les inclure dans votre CD Windows !

Oui, si vous est du style à ne réinstaller que quand plus rien ne fonctionne, vous ne trouverez pas un grand intérêt à tout cela. En revanche si comme moi vous réinstallez régulièrement votre OS (5 à 6 fois par ans dans mon cas), ce tip vous fera gagner un temps précieux et vous apportera les avantages suivant :

  • de ne pas avoir a recourir à la fameuse disquette des pilotes Raid/SCSI (disquette le plus souvent égarée, non fournie ou inutile si vous n' avez pas de lecteur de disquette...)
  • l' installation de Windows pourra s' effectuer directement sur un volume Raid. Les disques étant vue comme une seul unité et non comme deux ou trois disques distinct (Pas besoin de convertir vos disque après installation). Pour réaliser cette petite astuce, il vous faudra vous munir de :
  • votre CD Windows (Original/copy/cd de restauration... we don't care...)
  • Votre CD ou disquette de pilotes Raid
  • Le programme HFSLIP qui permet (entre autre) d' ajouter hotfix, services pack, drivers, logiciels, codecs et j' en passe à votre CD de Windows.
  • 2,5 Go d' espace libre sur votre disque dur.

1 - Préparation du CD

winxp boxtéléchargez et dézippez Hfslip à la racine (c' est important pour le bon fonctionnement d' hfslip) de votre disque dur disposant d' aux moins 2.5 Go d' espace libre.

Comme vous l' avez sûrement remarqué, Hfslip est un script ms-dos ; un batch comme disent les geeks ! Mais c' est Mais véritablement l' arme absolu pour qui veut customiser sont CD Windows. Le fonctionnement d'Hfslip, s' effectue en 2 étapes :

- la 1ere fois que vous le lancez, il créer toute une série de répertoires qu' il vous faudra remplir avec hotfix, drivers et programmes de votre choix.

- la deuxième étape commence une fois ces répertoires remplis, la recompilation de tout le CD s' effectue sous vos yeux ébahies,... génial!

Donc sans plus attendre, lancez Hfslip pour la première fois !

Placez dans le répertoire HF vos patches de sécurité. Des listes sont disponibles ici.

Dans le répertoire SOURCE, copiez le dossier I386 de votre CD Windows ainsi que les 3 fichiers WIN51, WIN51IC et WIN51IC.SP2 (ces nom peuvent varier légèrement suivant la date de votre CD).

Enfin dans le répertoire HFTOOL, les exécutables suivant : BBIE.exe (bbie10.zip), Mkisofs.exe et cygwin.dll (cdrtools-latest.zip) et ModifyPE.exe (modpe081.zip)

Je vous donne ici les informations 'brute de décoffrage' car le but n' est pas de vous expliquer comment on utilise hfsilp. Mais si vous voulez allez plus loin en intégrant par exemple vos wga.dll ou uxtheme.dll pachées , IE 7 ou WMP 11 . lisez le tutoriel du site officiel !

2 - Les Drivers Raid/SCSI

Peut importe la forme sous laquelle vous avez reçu vos drivers (CD/disquette/zip/exe) il sera possible d' en extraire les précieux pilotes grâce à l' imparable Universal Extractor.

Pour réaliser ce tutoriel, j' ai utilisé les drivers de ma carte mère, à savoir les Nforce3 de Nvidia. Mais les adaptations ne devrait pas être trop compliqué à réaliser si votre chipset n' est pas un Nforce, j' essaierai d' être le plus plus claire possible afin que tout le monde puisse en retirer quelque chose d' utile pour sa config. personnel.

- Commencez par dépacker vos drivers et trouvez y un fichier nommé txtsetup.oem. Ce fichier contient des informations qu' il faudra récupérer et intégrer au fichier Source\I386\txtsetup.sif.

voici à quoi ressemble le fichier txtsetup.oem de mes drivers Nforce3 (auquel j' ai juste supprimé les lignes de commentaire pour une meilleur lisibilité) :

   1: [Disks]
   2: d1 = "NVIDIA RAID DRIVER (SCSI)",\disk1,\
   3:  
   4: [Defaults]
   5: scsi = RAIDCLASS
   6:  
   7: [scsi]
   8: RAIDCLASS = "NVIDIA RAID CLASS DRIVER (required)"
   9: BUSDRV = "NVIDIA NForce Storage Controller (required)"
  10:  
  11: [Files.scsi.RAIDCLASS]
  12: driver  = d1,nvraid.sys,RAIDCLASS
  13: inf     = d1,nvraid.inf
  14: dll     = d1,nvraidco.dll
  15: catalog = d1,nvraid.cat
  16:  
  17: [Files.scsi.BUSDRV]
  18: driver = d1,nvatabus.sys,BUSDRV
  19: inf    = d1, nvatabus.inf
  20: dll    = d1,idecoi.dll
  21: catalog = d1, nvata.cat
  22:  
  23: [Config.RAIDCLASS]
  24:  
  25: [Config.BUSDRV]
  26:  
  27: [HardwareIds.scsi.RAIDCLASS]
  28: id = "GenNvRaidDisk","nvraid"
  29: id = "*_NVRAIDBUS","nvraid"
  30:  
  31: [HardwareIds.scsi.BUSDRV]
  32: id = "PCI\VEN_10DE&DEV_008E", "nvatabus"
  33: id = "PCI\VEN_10DE&DEV_0085", "nvatabus"
  34: id = "PCI\VEN_10DE&DEV_00D5", "nvatabus"
  35: id = "PCI\VEN_10DE&DEV_00EE", "nvatabus"
  36: id = "PCI\VEN_10DE&DEV_00E3", "nvatabus"
  37: id = "PCI\VEN_10DE&DEV_00E5", "nvatabus"
  38: id = "PCI\VEN_10DE&DEV_0035", "nvatabus"
  39: id = "PCI\VEN_10DE&DEV_0036", "nvatabus"
  40: id = "PCI\VEN_10DE&DEV_003E", "nvatabus"
  41: id = "PCI\VEN_10DE&DEV_0053", "nvatabus"
  42: id = "PCI\VEN_10DE&DEV_0054", "nvatabus"
  43: id = "PCI\VEN_10DE&DEV_0055", "nvatabus"

Les fichiers de drivers dont nous auront besoin sont décrits dans les sections [Files.scsi.xxxx] avec l' intitulé "driver" soit : nvraid.sys et nvatabus.sys

- Retrouvez ces fichiers dans vos drivers dépackés, puis copiez les dans Source\I386\

- Ouvrez maintenant le fichier Source\I386\txtsetup.sif est placez vous à la fin de celui-ci. Il va falloir y ajouter quatre sections de données


la première sections : [SourceDisksFiles] reprend les noms de fichiers des drivers en y' ajoutant = 1,,,,,,_x,4,1. Si ces virgules vous intriguent, consultez les articles que j' ai référencé à la fin de ce billet pour plus d' explications.


[SourceDisksFiles]
nvatabus.sys = 1,,,,,,_x,4,1
nvraid.sys = 1,,,,,,_x,4,1


La deuxième section : [SCSI.Load] se constitue en reprenant les informations des sections [HardwareIDs.scsi.xxxx] du fichier txtsetup.oem

Reprenez tout d' abord les noms constituant la troisième partie du nom de la section [HardwareIds.scsi.xxxx] (soit la partie "xxxx", donc ici "RAIDCLASS" et "BUSDRV")

observez maintenant la façon dont sont formatés les datas de cette section. On peut les formuler de la manière suivante :

Id = "IDdePerpherique", "NomDriverGenerique"

l' information dont nous auront besoin sera ici l' ensemble des différent "NomDriverGenerique" des diverses sections [HardwareIds.scsi.xxxx] (pour notre exemple, il s' agit des noms "nvraid et "nvatabus")

Enfin, recherchez dans les sections [Files.scsi.xxxx] les fichiers de drivers en relation avec les section [HardwareIds.scsi.xxxx] équivalent(donc dans notre exemple ; pour une section [HardwareIds.scsi.RAIDCLASS] le fichier de drivers Nvraid.sys de la section équivalente [Files.scsi.RAIDCLASS])

Formatez les lignes de la façon suivante : NomDriverGenerique = NomdeFichier,4

Bon dit comme cela c' est un peu obscure, mais regardez le résultat est relisez ce paragraphe est vous comprendrez qu' il n' y à rien de compliqué du tout !


[scsi.Load]
nvraid = nvraid.sys,4
nvatabus = nvatabus.sys,4

La troisième section : Reprenez l' ensemble de la section [scsi] du fichier txtsetup.oem et remplacez les noms situés avant le "=" par leur équivalent NomDriverGenerique trouvés dans la deuxième section, soit :


[scsi]
nvraid = "NVIDIA RAID CLASS DRIVER (required)"
nvatabus = "NVIDIA NForce Storage Controller (required)"


La quatrième section : Reprenez l' ensemble des sections [HardwareIds.scsi.xxxx] du fichier txtsetup.oem et supprimez dans chaque ligne la partie "id =" ainsi que les guillemets ce trouvant autour des données IDdePerpherique :


[HardwareIdsDatabase]
PCI\VEN_10DE&DEV_008E = "nvatabus"
PCI\VEN_10DE&DEV_0085 = "nvatabus"
PCI\VEN_10DE&DEV_00D5 = "nvatabus"
PCI\VEN_10DE&DEV_00EE = "nvatabus"
PCI\VEN_10DE&DEV_00E3 = "nvatabus"
PCI\VEN_10DE&DEV_00E5 = "nvatabus"
PCI\VEN_10DE&DEV_0035 = "nvatabus"
PCI\VEN_10DE&DEV_0036 = "nvatabus"
PCI\VEN_10DE&DEV_003E = "nvatabus"
PCI\VEN_10DE&DEV_0053 = "nvatabus"
PCI\VEN_10DE&DEV_0054 = "nvatabus"
PCI\VEN_10DE&DEV_0055 = "nvatabus"
GenNvRaidDisk = "nvraid"
*_NVRAIDBUS = "nvraid"

Je remets l' ensemble des données à ajouter au fichier Txtsetup.sif pour une meilleur visibilité:
[SourceDisksFiles]
nvatabus.sys = 1,,,,,,4,4,1,,,1,4
nvraid.sys = 1,,,,,,4,4,1,,,1,4
 
[scsi.Load]
nvraid = nvraid.sys,4
nvatabus = nvatabus.sys,4
[HardwareIdsDatabase]
PCI\VEN_10DE&DEV_008E = "nvatabus"
PCI\VEN_10DE&DEV_0085 = "nvatabus"
PCI\VEN_10DE&DEV_00D5 = "nvatabus"
PCI\VEN_10DE&DEV_00EE = "nvatabus"
PCI\VEN_10DE&DEV_00E3 = "nvatabus"
PCI\VEN_10DE&DEV_00E5 = "nvatabus"
PCI\VEN_10DE&DEV_0035 = "nvatabus"
PCI\VEN_10DE&DEV_0036 = "nvatabus"
PCI\VEN_10DE&DEV_003E = "nvatabus"
PCI\VEN_10DE&DEV_0053 = "nvatabus"
PCI\VEN_10DE&DEV_0054 = "nvatabus"
PCI\VEN_10DE&DEV_0055 = "nvatabus"
GenNvRaidDisk = "nvraid"
*_NVRAIDBUS = "nvraid"
 
[scsi]
nvraid = "NVIDIA RAID CLASS DRIVER (required)"
nvatabus = "NVIDIA NForce Storage Controller (required)"

Voila c' est fini, enfin pour ce qui concerne la partie Dos de l' installation de Windows !!! Parce ce que tout cela aurait était bien trop simple si Windows ne s' installait pas également dans une partie GUI pour laquelle il faut également définir et ajouter les drivers...



3 - Les Drivers en mode GUI

xpGUICette étape est beaucoup plus simple à réaliser, puisqu' il s' agira grosso-modo de dire à Windows ou aller chercher les pilotes Raid/Scsi.

Dans un premier temps, installons les pilotes sur le Cd de Windows.

Pour cela vous avez besoin de vos drivers dépackés dans un répertoire, mais attention : le répertoire doit impérativement contenir un fichier .inf pour que Windows puisse installer vos pilotes.

Si dans vos drivers dépackés vous ne voyez aucun fichiers en .inf, c' est que vous devez encore depacker un exécutable ou un .cab qui se trouve dans ce même répertoire !

Une fois votre fichier .inf trouvé, copiez le répertoire qui le contient (avec tout ces fichier) dans : HFEXPERT\WIN et renommez le OemDir

Allez ensuite dans SOURCE\I386 et trouvez y un fichier nommé winnt.sif que vous copirez dans le répertoire REPLACE. Utilisez ensuite un éditeur de texte pour modifier ce fichier.

Quelque mots sur le fichier winnt.sif pour les plus curieux d' entre vous ! Ce fichier permet rien de moins que d' installer Windows sans la moindre intervenions humaine. Vous pouvez y définir une foule d' information tel que numéro de licence, type de clavier/langue, ip de vos carte réseau/wifi, services qui démarrent ou pas, applications à installer ou non.

Je vous met un petit tutoriel pour créer vous même ce fameux fichier, et pour les plus acharnés, la référence avec toutes les options disponible.

Retournons à notre fichier Winnt.sif, recherchez la section [Unattended] et modifiez le paramètre DriverSigningPolicy de la façon suivante : DriverSigningPolicy=Ignore

Ceci afin de pouvoir installer des pilotes non signés !

Toujours au seins de la même section [Unattended] ajoutez la ligne OemPnPDriversPath="Windows\OemDir\". Vous n' avez plus qu' a sauver le fichier, relancer HFSlip pour qu' il compile l' ensemble et "burner" votre CD de geek du Windows...

Sauf que... il est probable que dans quelque cas, cela ne suffise pas à faire tout fonctionner correctement.... explications... et solution...



4- le tip undocumented...

Le cas du driver Nvidia illustre parfaitement notre problème : les pilotes n' étant pas signés, Windows refuse de les installer même si l' option DriverSigningPolicy=Ignore est activée !!!

Pourquoi ? impossible à déterminer... ! Toujours est t' il qu' il faut absolument contourner cet obstacle, et pour arriver à ça, un Geek pure sucre du nom de PhreeZ, c' est arraché la tête pour nous trouver une solution : une commande pour Winnt.sif non documentée... !!

Cette nouvelle commande aux résultats dévastateur permet de forcer l' installation de Windows à pointer sur des fichiers .inf de votre choix et d' en installer les pilotes.

Voici donc les sections magique à ajouter à votre fichier, une fois ceci fait : compilez ! burnez ! installez ! et enjoyez ??!!....

[Data]
    OemDrivers=OemInfFiles
 
[OemInfFiles]
    OemDriverFlags=1
    OemDriverPathName="%SystemRoot%\OemDir"
    OemInfName="nvraid.inf"

les commandes sont assez explicites, puisque OemDriverPathName défini l' emplacement du répertoire dans lequel Windows doit chercher son fichier .inf, et OemInfName défini le fichier en question.


5- La console de récupération

Si vous avez installé la console de récupération avec votre Windows, celle-ci ne fonctionnera plus et risque de vous demander indéfiniment des drivers qu' elle ne trouvera pas.

Pour résoudre ce problème, l' idée est ici fort simple puisqu' il s' agit de copier les fichiers de pilotes dans le répertoire C:\cmdcons .

Les fichier de pilotes étant les fichiers portant les extensions .sys ou .sy_

Je n' est pas trouvé cherché de méthode pour automatisé cette action, mais un petit scripte en fin d' installation ou un répertoire déjà remplie en utilisant le répertoire HFEXPERT pourrait bien vous donner la solution.

Vous trouverez si dessous toutes les sources qui m' ont permise de réaliser ce tutoriel avec évidement plus de détails mais moins de français... Amusez vous bien !

Sources d' information :

http://lists.ee.ethz.ch/realmen/msg00044.html
http://www.msfn.org/board/Add-slipstream-SATA-drivers-fully-working-solution-t77999.html
http://www.msfn.org/board/OemInfFiles-t49371.html
http://www.msfn.org/board/OemInfFiles-t49374.html
http://www.msfn.org/board/Switches-TXTSETUPSIF-t14852.html



Mots clés Technorati : ,,,,,,,










podcast blog