segunda-feira, 15 de setembro de 2008

Problemas ao carregar drivers via floppy usb durante a instalação do Windows XP

Você já precisou fazer a instalação do Windows XP em um servidor de médio porte ou em alguma máquina mais robusta, dotada de controladora RAID e sem o bom(sic) e velho driver de disquete de 1.44MB? Não? Pois saiba, que sem aquele velho driver na sua máquina, a tarefa de instalar o sistema operacional pode ser tornar bem complicada.

Me permita explicar, o Windows traz consigo um conjunto mínimo de drivers para atender algum hardware. Normalmente, devido a características de alguns periféricos mais robustos que necessitam de drivers específicoos, o que acontece é que após a instalação do Windows você acaba sendo obrigado a intalar uma grande quantidade de drivers como placa de vídeo, áudio, modem e etc. No geral isso não acarreta um grande problema, apenas uma pequena perda de tempo após a instalação.

Quando falamos de acesso a controladora de disco a coisa muda de figura, pois é através dela que o sistema irá acessar o disco. Por isso, logo no início da instalação do Windows, ainda durante a primeira "tela azul" ele te mostra a informação para pressionar F6 caso deseje adicionar o driver de terceiros. Ao apertar o F6 o programa de instalação pede que você insira um disquete na unidade A: contendo o driver em questão, e é ai que começam os problemas, pois ele só enxerga essa unidade A: e nenhuma outra.

No caso de hardware mais novo, que normalmente não mais possui driver de 3 1/4" a solução passa a ser a utilização de um drive externo conectado via porta USB. Fazendo isso o Windows funciona perfeitamente, reconhece a dispositivo, o drive e inicia a instalação muito bem obrigado. Quer dizer, muito bem obrigado em 10% dos casos.

Quando você insere qualquer dispositivo em uma porta USB do seu computador, o disposito envia uma string de identificação para o sistema operacional, dizendo o que ele é, fabricando por quem é, qual o seu modelo e etc. AO ler essa string o sistema operacional então verifica o driver a ser utilizado e todo flui como deveria ser.

O problema é que o programa de instalação do Windows reconhece apenas 3 marcas/modelos de drivers floppy-usb, que são: Mitsumi, Sony 09K 9835 e TEAC IBM 27L 4226, 9283 K FRU 05. Quando estes dispositivos são conectados, eles enviam essas strings ao Windows:


USB\VID_03EE&PID_6901 Mitsumi
USB\VID_057B&PID_0000 Dados Y-E; Sony parte número
09K 9835

USB\VID_0644&PID_0000 TEAC; número parte opção IBM
27L 4226, 9283 K FRU 05


O setup do Windows então associa o driver usb mass storage para essees dispositivos. O problema é que esse driver é genérico, então na pratica qualquer que seja o modelo de floppy-usb ele deveria ser reconhecido e montado. Os efeitos desse pequeno problema durante a instalação é que caso você use um outro modelo de floppy-usb, após apertar o seu F6, o sistema irá carregar e ao chegar na tela de particionamento ele apresentará erro dizendo que não é possível encontrar nenhum disco.

De acordo com a microsoft, caso esse problema ocorra você acaba por ficar com duas opções: comprar um floppy-usb homologado ou realizar a instalação via Remote Instalation Service; duas opções que não cabem em 95% das situações.
A solução nesse caso passa a ser pegar o disquete com o drive da controladora que se deseja instalar, abrir o mesmo em outro computador e então editar o arquivo txtsetup.oem, procurando a entrada HardwareIds.scsi e incluir as seguintes linhas:


id = "USB\VID_03F0&PID_2001", "usbstor"
id = "USB\VID_054C&PID_002C", "usbstor"
id = "USB\VID_057B&PID_0001", "usbstor"
id = "USB\VID_0644&PID_0000", "usbstor"


Essa linhas simplesmente irão instruir ao Windows a associar o driver "usb mass storage" para outros modelos de usb-floppy encontrados no mercado, que são:


USB\VID_03F0 & PID_2001 HP
USB\VID_054C & PID_002C Sony
USB\VID_057B & PID_0001 Dados Y-E
USB\VID_0409 & PID_0040 NEC
USB\VID_0424 & PID_0FDC SMSC


No meu caso eu tentei instalar o Windows XP em uma máquina dotada da PERC6, não homologada para Windows XP. A solução foi abrir o arquivo txtsetup.oem e editar a seção:


[HardwareIds.scsi.PERC]
PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F011028",
"megasas"

PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F021028",
"megasas"

PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F031028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0A1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0B1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0C1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0D1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F111028",
"megasas"



de modo que esta ficasse assim:


[HardwareIds.scsi.PERC]
PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F011028",
"megasas"

PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F021028",
"megasas"

PERC = "PCI\VEN_1028&DEV_0015&SUBSYS_1F031028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0A1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0B1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0C1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F0D1028",
"megasas"

PERC = "PCI\VEN_1000&DEV_0060&SUBSYS_1F111028",
"megasas"

id = "USB\VID_03F0&PID_2001", "usbstor"
id = "USB\VID_054C&PID_002C", "usbstor"
id = "USB\VID_057B&PID_0001", "usbstor"
id = "USB\VID_0644&PID_0000", "usbstor"

Um abraço e até a próxima!


Referência: