Layer 06

Sistema Operativo Windows Xp su hard disk USB esterno

Procedura Reloaded  Come al solito MS cerca di nascondere delle potenzialità di Windows, questo collegamento porta a delle faq sui boot device USB http://www.microsoft.com/whdc/device/storage/usbfaq.mspx ne riporto una parte: Q: Can a USB storage device be the primary (and only) means of storage? No. USB-based mass storage devices cannot be the primary hard disk storage solution on a regular system … Insomma MicroSoft nega la possibilità di boottare direttamente da usb, inoltre dice anche che non si può assolutamente fare in modo che un device USB sia l’unico “mass-storage” del pc. Lo si può leggere in questo post di un newsgroup: http://groups.google.it/group/microsoft.public.windowsxp.basics/browse_thread/thread/5a5882d3391081b3/ Io dico la mia: si può fare! non è facile ma si può fare non è impossibile ed il fatto che MS continui a dire il contrario mi fa mettere a testa bassa ed a provare. Ed eccoci al punto cruciale, cominciamo con la nostra avventura per smentire ancora una volta i signori del monopolio. Ringrazio in modo particolare questi ragazzi che tanto ne sanno e che tanto m’hanno fatto lavorare: http://www.911cd.net/forums//index.php?showtopic=14181 Prontiiiii…. Partenzaaaaa … viaaaaa! Obbiettivi Generare un CD che permetta di fare un’installazione completa di Windows XP su device esterno USB. Requisiti minimi -un computer 😀 – un HDD esterno USB, hehehe – sigarette – posacenere – una sedia – tanto tempo – della musica che rilassi Requisiti seri – un’installazione funzionante di Windows XP – un CD orginale di Windows XP (possibilmente SP1) – 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 Adesso si lavora sul serio 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, stacchiamo tutti gli altri HDD presenti nel PC. 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 che ho segnato in grassetto:

[InputDevicesSupport.Load]

usbehci = usbehci.sysusbohci = usbohci.sysusbuhci = usbuhci.sysusbhub = usbhub.sysusbccgp = usbccgp.sys hidusb = hidusb.sys serial = serial.sys serenum = serenum.sys usbstor = usbstor.sys ed aggiungiamole nella sezione [BootBusExtenders.Load] (quelle in grassetto sono da aggiungere)

[BootBusExtenders.Load]

pci = pci.sys acpi = acpi.sys isapnp = isapnp.sys acpiec = acpiec.sys ohci1394 = ohci1394.sys usbehci = usbehci.sysusbohci = usbohci.sysusbuhci = usbuhci.sysusbhub = usbhub.sysusbstor = 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 le parti in grassetto da

[InputDevicesSupport]

usbehci = “Erweiterter Hostcontroller”,files.usbehci,usbehciusbohci = “Open Hostcontroller”,files.usbohci,usbohciusbuhci = “Universeller Hostcontroller”,files.usbuhci,usbuhciusbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhubhidusb = “HID-Parser”,files.hidusb,hidusb serial = “Treiber fr seriellen Anschluss”,files.none,serial serenum = “Enumerator fr seriellen Anschluss”,files.none,serenum usbstor = “USB-Speicherklassentreiber”,files.usbstor,usbstor usbccgp = “USB Generic Parent Driver”,files.usbccgp,usbccgp ed aggiungere le parti in grassetto 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,usbuhciusbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhubusbstor = “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 la voce in grassetto:

[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 scritte in grassetto 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 in grassetto nella sezione [USBSTOR.AddService]:

[USBSTOR.AddService]

DisplayName = %USBSTOR.SvcDesc% ServiceType = 1 StartType = 0Tag = 3ErrorControl = 1ServiceBinary = %12%USBSTOR.SYSLoadOrderGroup = 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,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”DisplayName”,0x00000000,”USB Mass Storage Driver” HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”ErrorControl”,0x00010001,1 HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Group”,0x00000000,”System Reserved” HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”ImagePath”,0x00020000,”system32\DRIVERS\USBSTOR.SYS” HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Start”,0x00010001,0 HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Type”,0x00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”DisplayName”,0x00000000,”USB 2.0 Enhanced Host Controller Miniport Driver” HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”ErrorControl”,0x00010001,1 HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Group”,0x00000000,”System Reserved” HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”ImagePath”,0x00020000,”system32\DRIVERS\usbehci.sys” HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Start”,0x00010001,0 HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Type”,0x00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”DisplayName”,0x00000000,”USB2 Enabled Hub” HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”ErrorControl”,0x00010001,1 HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Group”,0x00000000,”System Reserved” HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”ImagePath”,0x00020000,”system32\DRIVERS\usbhub.sys” HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Start”,0x00010001,0 HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Type”,0x00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”DisplayName”,0x00000000,”Microsoft USB Universal Host Controller Miniport Driver” HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”ErrorControl”,0x00010001,1 HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Group”,0x00000000,”System Reserved” HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”ImagePath”,0x00020000,”system32\DRIVERS\usbuhci.sys” HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Start”,0x00010001,0 HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Type”,0x00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”DisplayName”,0x00000000,”Microsoft USB Open Host Controller Miniport Driver” HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”ErrorControl”,0x00010001,1 HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Group”,0x00000000,”System Reserved” HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”ImagePath”,0x00020000,”system32\DRIVERS\usbohci.sys” HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Start”,0x00010001,0 HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Type”,0x00010001,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. Detto ciò io possiedo il mio bel pc con drive esterno USB da 150 Gb e lo uso tranquillamente, il bello è che me lo posso anche portare in giro 🙂 Have fun!]]>

Nessun commento “Sistema Operativo Windows Xp su hard disk USB esterno”