Sistema operativo windows xp su disco/pendrive USB esterno

Generare un CD che permetta di fare un’installazione completa di Windows XP su device esterno (disco o chiavetta pendrive) USB.

Requisiti minimi:

- un computer
- un HDD esterno USB
- un’installazione funzionante di Windows XP
- un CD orginale di Windows XP (possibilmente SP2)
- una versione registrata di WinISO (o qualsiasi altro editor di file ISO)
- il famosissimo Microsoft CAB SDK
- un software per masterizzare i file ISO, va bene uno qualsiasi
- un masterizzatore

Procedura:

Verifichiamo che il nostro pc possa fare il boot da usb, dobbiamo quindi andare sul bios per controllare che nelle voci di boot ci sia anche “USB”.

Verifichiamo che il nostro drive usb abbia la possibilità di fare il boot.

Sul bios mettiamo come opzione di boot nell’ordine il CDROM ed il drive usb.

Colleghiamo il nostro drive USB senza l’utilizzo di HUB usb (molto importante).

Accendiamo il PC con il CD d’installazione di windows XP inserito, all’atto dell’installazione se il programma ci dice che non trova nessuna partizione dove poter installare il sitema operativo, dobbiamo abortire per un problema relativo al riconoscimento del drive. Solitamente non è un grossissimo problema, basta scaricare questo tool di HP e formattare il drive usb con partizione NTFS, dopo di che rifate la prova, a questo punto dovremmo essere a cavallo.

Adesso dobbiamo creare un file ISO del CD d’installazione di Windows XP, basta aprire WinISO andare su Action - Make Iso from CDROM e salvare così la vostra immagine formato ISO del CD.

La fase successiva tratta l’estrazione dei alcuni file di cui abbiamo bisogno.

Riamprite WinISO aprite il file ISO appena creato, vi troverete a sfogliare il file come se fosse un CD.

Andate nella cartella i386 e selezionate i seguenti files:

TXTSETUP.SIF
DOSNET.INF
USB.IN_
USBPORT.IN_
USBSTOR.IN_

Selezionate ed andate su Action - Extract ed estraeteli in una qualche cartella del vostro HDD di modo da poterci lavorare sopra.

Spacchettiamo i file IN_.

Utilizziamo il Cab SDK dal prompt dei comandiper estrarre il contenuto di questi file, ogni uno di questi, infatti, contiene un file .INF.

Vi riporto un’esempio di come spacchettizzare il file:

cabarc x USBSTOR.IN_

Alla fine i file estratti nella cartella saranno questi:

usb.inf
usbport.inf
usbstor.inf

Ora dobbiamo affrontare il lavoro principale ed ovviamente più delicato.

La modifica manuale dei file estratti:

TXTSETUP.SIF

Questo file è caricato come step iniziale del CD di WIndows.
Cambieremo con questo file il modo in cui Windows vede i device USB durante il setup.
Apriamolo col notepad o blocco note che dir si voglia.

Cerchiamo la dicitura [InputDevicesSupport.Load] e cancelliamo le parti :

[InputDevicesSupport.Load]
usbehci = usbehci.sysusbohci = usbohci.sysusbuhci = usbuhci.sys
usbhub = usbhub.sys
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys

ed aggiungiamole nella sezione [BootBusExtenders.Load]

[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sysusbohci = usbohci.sysusbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys

Adesso dobbiamo fare la stessa cosa, cioè togliere da una parte ed aggiungere dall’altra per le sezioni [BootBusExtenders] e [InputDevicesSupport]

quindi togliere [InputDevicesSupport]

usbehci = “Erweiterter Hostcontroller”,files.usbehci,usbehciusbohci = “Open Hostcontroller”,files.usbohci,usbohciusbuhci = “Universeller Hostcontroller”,files.usbuhci,usbuhci
usbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhub
hidusb = “HID-Parser”,files.hidusb,hidusb
serial = “Treiber fr seriellen Anschluss”,files.none,serial
serenum = “Enumerator fr seriellen Anschluss”,files.none,serenum
usbstor = “USB-Speicherklassentreiber”,files.usbstor,usbstor
usbccgp = “USB Generic Parent Driver”,files.usbccgp,usbccgp

ed aggiungere le parti su:

[BootBusExtenders]
pci = “PCI-Bustreiber”,files.pci,pci
acpi = “ACPI Plug & Play-Bustreiber”,files.acpi,acpi
isapnp = “ISA Plug & Play-Bustreiber”,files.isapnp,isapnp
acpiec = “Integrierter ACPI-Controllertreiber”,files.none,acpiec
ohci1394 = “IEEE-1394-Bus-OHCI-konformer Anschlusstreiber”,files.ohci1394,ohci1394
usbehci = “Erweiterter Hostcontroller”,files.usbehci,usbehciusbohci = “Open Hostcontroller”,files.usbohci,usbohciusbuhci = “Universeller Hostcontroller”,files.usbuhci,usbuhci
usbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhub
usbstor = “USB-Speicherklassentreiber”,files.usbstor,usbstor

A questo punto abbiamo detto all’installazione che il drive usb è parte integrante dell’OS. Ma non basta dobbiamo anche aggiungere al registro del sistema il caricamente del driver usb, altrimenti dopo il primo riavvio non avremo a disposizione il dirve USB.

Le voci di registro di aggiungono sempre nello stesso file nella sezione [HiveInfs.Fresh], aggiungere :

[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = usbboot.inf,usbservices

adesso nella sezione [SourceDisksFiles] :

[SourceDisksFiles]
usbboot.inf = 1,,,,,,_x,3,,3
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
kdcom.dll = 1,,,,,,3_,2,0,0,,1,2

Possiamo finalmente salvare il file TXTSETUP.INF

Ora tocca al file DOSNET.INF, apritelo e cercare la seconda sezione [Files] ed aggiungete:

[Files]
d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx

Salvate ed uscite

Ora tocca al file usb.inf

Questa volta dobbiamo modificare le parti nelle sezioni [StandardHub.AddService] e [CommonClassParent.AddService]

[StandardHub.AddService]
DisplayName = %StandardHub.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbhub.sys
LoadOrderGroup = Boot Bus Extender
[CommonClassParent.AddService]
DisplayName = %GenericParent.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbccgp.sys
LoadOrderGroup = Boot Bus Extender

Salvate ed uscite

Stessa cosa per il file usbport.inf nelle sezioni EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] e [ROOTHUB.AddService]:

[EHCI.AddService]
DisplayName = %EHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbehci.sys
LoadOrderGroup = Boot Bus Extender
[OHCI.AddService]
DisplayName = %OHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbohci.sys
LoadOrderGroup = Boot Bus Extender
[UHCI.AddService]
DisplayName = %UHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbuhci.sys
LoadOrderGroup = Boot Bus Extender
[ROOTHUB.AddService]
DisplayName = %ROOTHUB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%usbhub.sys
LoadOrderGroup = Boot Bus Extender

Invece per in file usbstor.inf dobbiamo aggiungere o modificare le righe nella sezione [USBSTOR.AddService]:

[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
StartType = 0Tag = 3ErrorControl = 1
ServiceBinary = %12%USBSTOR.SYS
LoadOrderGroup = Boot Bus Extender

Abbiamo finito con le modifiche, ora dobbiamo creare un file USBBOOT.INF nella stessa cartella dei file appena editati. Il file deve contenere il seguente listato:

[usbservices]

HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Dis playName”,0×00000000,”USB Mass Storage Driver”
HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Err orControl”,0×00010001,1
HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Gro up”,0×00000000,”System Reserved”
HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Ima gePath”,0×00020000,”system32DRIVERSUSBSTOR.SYS”
HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Sta rt”,0×00010001,0
HKLM,”SYSTEMCurrentControlSetServicesUSBSTOR”,”Typ e”,0×00010001,1

HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Dis playName”,0×00000000,”USB 2.0 Enhanced Host Controller Miniport Driver”
HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Err orControl”,0×00010001,1
HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Gro up”,0×00000000,”System Reserved”
HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Ima gePath”,0×00020000,”system32DRIVERSusbehci.sys”
HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Sta rt”,0×00010001,0
HKLM,”SYSTEMCurrentControlSetServicesusbehci”,”Typ e”,0×00010001,1

HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Disp layName”,0×00000000,”USB2 Enabled Hub”
HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Erro rControl”,0×00010001,1
HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Grou p”,0×00000000,”System Reserved”
HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Imag ePath”,0×00020000,”system32DRIVERSusbhub.sys”
HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Star t”,0×00010001,0
HKLM,”SYSTEMCurrentControlSetServicesusbhub”,”Type ”,0×00010001,1

HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Dis playName”,0×00000000,”Microsoft USB Universal Host Controller Miniport Driver”
HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Err orControl”,0×00010001,1
HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Gro up”,0×00000000,”System Reserved”
HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Ima gePath”,0×00020000,”system32DRIVERSusbuhci.sys”
HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Sta rt”,0×00010001,0
HKLM,”SYSTEMCurrentControlSetServicesusbuhci”,”Typ e”,0×00010001,1

HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Dis playName”,0×00000000,”Microsoft USB Open Host Controller Miniport Driver”
HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Err orControl”,0×00010001,1
HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Gro up”,0×00000000,”System Reserved”
HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Ima gePath”,0×00020000,”system32DRIVERSusbohci.sys”
HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Sta rt”,0×00010001,0
HKLM,”SYSTEMCurrentControlSetServicesusbohci”,”Typ e”,0×00010001,1

Abbiamo quasi finito!!!!

Dobbiamo impacchettare i file spacchettati precedentemente, dobbiamo quindi cancellare i file .IN_ che abbiamo estratto dall’ISO e reimpachettare quelli che abbiamo appena editato, avremo così la nuova versione dei file d’installazione.

Usiamo sempre il nostro amico CAB SDK con i seguenti comandi da lanciare nel prompt di DOS:

cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf

Complimenti le operazioni manuali sono finite!!!! Bravi! Dobbiamo darci una pacca sulla spalla.

Aprimo WinISO per l’ultima volta e cancelliamo i seguenti file:

DOSNET.INF
TXTSETUP.SIF
USB.IN_
USBPORT.IN_
USBSTOR.IN_

Adesso inseriamo quelli che abbiamo creato noi

USBBOOT.INF
DOSNET.INF
TXTSETUP.SIF
USB.IN_
USBPORT.IN_
USBSTOR.IN_

Salviamo il file ISO, dai dai che ci siamo!
Masterizziamo un CD col file immagine appena salvato ed avremo la nostra installazione di windows per USB device :)
Raccomandazione: utilizzate un CD RW per la prima volta, potreste aver fatto degli errori di editing durante tutta la procedura, anche i migliori sbagliano.
Procedete con l’installazione, dovrebbe andare tutto apposto.
Ora potete svuotare il posacenere ed andarvi a bere una birra in compagnia per festeggiare!
Si possono verificare alcuni errori di minor importanza:
All’atto del primo boot potrebbe essere segnalato che windows non ha il pagefile, il che è vero, ma clickate tranquillamente su ok , il sistema operativo andrà lo stesso.
Inoltre potrebbe comparire la dicitura che i driver USB non sono certificati per Windows, il che è normale perchè li abbiamo editati manualmente e ci siamo fregati il checksum, ma poco importa, basta clickare avanti ed ok un paio di volte e siamo a cavallo.