PDA

View Full Version : Procedura per l'installazione di Windows XP su disco USB


Baboo85
28-12-2009, 21:14
Premetto che la guida non e' mia ma e' prelevata da un sito inglese (http://www.ngine.de/index.jsp?pageid=4176) dal quale cerchero' di fare una guida breve e chiara.


Perche' di questa guida? Personalmente ero stanco di mille Live CD lenti sia nel caricamento e sia privi di quello che mi serviva.
Volevo un windows snello, con le sole funzionalita' di internet per effettuare aggiornamenti, con gli anvirus e antispyware che mi servono per effettuare scansioni di emergenza e soprattutto un avvio veloce, da portarmi sempre dietro.
Cose che un LiveCD non permette o comunque e' limitante sotto molti aspetti.

Su chiave usb una versione di windows completa era impensabile metterla, troppi lunghi i tempi di caricamento. Anche la versione Fundamentals era troppo pesante.

Con l'aiuto di nLite ho snellito windows al solo OS + rete in modo anche da poter aggiornare sia gli antimalware sia windows stesso.



Testato personalmente con XP service pack 2 e XP service pack 3.

Baboo85
28-12-2009, 21:15
INSTALLAZIONE WINDOWS XP SU UNA CHIAVETTA/HARD DISK USB


1. INGREDIENTI

- un pc con windows su cui effettuare le varie operazioni
- un hard disk usb o una chiavetta usb (non saprei dire se vanno bene tutte)
- un cd originale di windows xp dal sp1 in su (solo cd originali o copie di essi, niente cd di recovery come quelli inclusi nei notebook)
- una versione registrata di WinISO (http://www.winiso.com/) (o un software simile di gestione ISO)
- l'utilissimo CabSDK (http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/Cabsdk.exe) della Microsoft
- un software di masterizzazione ISO (io uso CD Burner XP (http://cdburnerxp.se/en/download))


2. PREPARAZIONE

Quello che ora faremo sara' prendere alcuni file dal cd di windows XP, modificarli in modo da fargli utilizzare la chiavetta/disco usb per l'installazione e rimasterizzare un cd cosi' modificato.

Prima di tutto verifichiamo che il nostro pc (o il pc in oggetto) riconosca le chiavette/dischi usb (che da adesso chiamero' usbkey per mia comodita'). Inseriamo il cd di windows xp originale, spegniamo il pc, scolleghiamo tutti gli hard disk interni ed esterni dal pc, colleghiamo la usbkey direttamente al pc senza hub e avviamo. Partira' l'installazione di windows xp, dovrebbe rilevare la usbkey (ma ovviamente da' errore se tentiamo di installarci su).
Nel caso non venga visualizzata o dia l'errore (Windows non e' in grado di riconoscere il disco/partizione/ecc ecc), semplicemente proviamo a formattare la chiavetta in NTFS (se abbiamo XP utilizziamo il classico HP USB Disk Storage Format Tool (http://www.pctuner.net/download/scheda/1674/5/HP-USB-Disk-Storage-Format-Tool-2.1.8/)) e riproviamo. Se vediamo il disco ok, altrimenti il pc non permette l'installazione di XP su usbkey.

Ora creiamo una ISO del cd di xp tramite il comando "crea ISO da cd" di WinISO.

Una volta terminata la copia, togliamo il disco e apriamo la ISO con WinISO (io per comodita' uso WinRAR per questa operazione), andiamo nella cartella I386 ed estraiamo i seguenti file in una cartella:

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


Ora un po' di rottura di scatole: estraiamo i file IN_ utilizzando CabSDK.
Estraiamo CabSDK, andiamo nella cartella BIN e spostiamo li' i 3 file IN_ appena estratti dalla ISO.
Apriamo il prompt dei comandi (Start -> Esegui -> cmd -> OK) andiamo nella cartella BIN dove abbiamo messo i file e scriviamo (io mi sono fatto un file batch):

cabarc x USB.IN_
cabarc x USBPORT.IN_
cabarc x USBSTOR.IN_

premendo Invio dopo ognuno dei 3 comandi. In questo modo estraiamo i file INI dai file IN_ da poter poi modificare.


3. MODIFICA DEI FILE

Ora la parte rognosa :nera: :coffee:


3-a. TXTSETUP.SIF

Questo e' il file caricato all'avvio dell'installazione di windows xp, lo modificheremo in modo da fargli riconoscere i dispositivi usb come dischi normali su cui poter installarci windows.
Apriamo il file con il Blocco Note, spostiamo alcune righe di codice dalla sezione alla sezione esattamente come segue, togliendo le voci in rosso ed aggiungendole come quelle segnarle in grassetto:


pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys


usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys

ora la stessa cosa tra [BootBusExtenders] e [InputDevicesSupport]

[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
[B]usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci = "Open Hostcontroller",files.usbohci,usbohci
usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub
usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor


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

(ho copiato e incollato dalla guida che aveva i nomi in tedesco, io avevo quelli in italiano, l'importante e' copiare le riche giuste usbehci, usbohci, ecc)

ora abbiamo da scrivere alcune chiavi nel file, nelle sezioni sotto indicate:

[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
[B]AddReg = usbboot.inf,usbservices

[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

copiate pure ed incollate le righe in grassetto. Ora salviamo e chiudiamo il file TXTSETUP.SIF


[I]3-b. DOSNET.INF

Anche qui modifichiamo alcune righe. Andiamo alla seconda sezione [Files] e modifichiamo come segue:

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

salviamo e chiudiamo.


3-c. usb.inf

Cambiamo le seguenti sezioni come indicato in grassetto:

[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


3-d. usbport.inf

Cambiare le seguenti righe in grassetto:

[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


[I]3-e. usbstor.inf

Cambiare / aggiungere le righe seguenti:


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


[I]3-f. nuovo file: USBBOOT.INF

Creiamo un nuovo file chiamato USBBOOT.INF, copiamo ed incolliamo il seguente codice:

[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

salviamo e chiudiamo.

Ok prendiamoci un attimo di pausa e di fiato :)


[U]4. MODIFICA DELLA ISO

Reimpacchettiamo i file usb.inf, usbport.inf e usbstor.inf con CabSDK usando i seguento comandi:

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

Apriamo la ISO di windows xp precedentemente creata, cancelliamo i seguenti file dalla cartella I386:

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

ed inseriamo i nostri file modificati e quelli creati sempre nella cartella I386:

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

salviamo la ISO e chiudiamo. Bene, il peggio e' finito :)


5. MASTERIZZAZIONE ED INSTALLAZIONE

Masterizziamo la ISO su un cd (consiglio un CD-RW che, nel caso di sbagli nelle modifiche ai file possiamo sempre evitare di buttare un cd per niente).

Inseriamo il cd, spegniamo il pc, scolleghiamo tutti gli hard disk interni, esterni e hub usb e colleghiamo direttamentela chiavetta o il disco usb dove installeremo il nostro nuovo windows.

Avviamo il pc ed installiamo XP sulla nostra chiavetta o disco USB :)

Baboo85
29-12-2009, 11:19
FAQ

Q. Ok ho fatto tutto, sono riuscito a fare la prima parte di installazione di windows xp testuale, ma al riavvio mi esce "Errore disco"
A. E' normale se fatto con le chiavette usb. Per risolvere bisogna formattare per forza in NTFS altrimenti il pc non vede i file di avvio nella chiavetta. Per quanto riguarda gli hard disk usb, FAT32 o NTFS e' indifferente (tenendo conto che FAT32 e' piu' veloce ma NTFS e' piu' sicura, permette di manipolare singoli file maggiori di 4GB e di comprimere i file

Q. Ok, ho rifatto l'installazione di windows, sono tornato nella selezione delle partizioni ma non mi formatta la chiavetta
A. In questo caso l'unico modo e' formattare la chiavetta da windows (anche in FAT32) e ripetere l'installazione

Q. Va bene, funziona tutto ma una volta entrato in windows appena collego una chiavetta usb o un disco usb windows crasha immediatamente. BSOD: STOP 0x000000F4 (0x00000003, [...])
A. Penso sia una cosa "normale" dato dalle modifiche ai file di windows. A me e' successo con una chiavetta usb con XP e collegando una chiavetta usb. Non conosco rimedi. Al riavvio basta ricollegare la chiave/disco usb e viene installata regolarmente. Potrebbero insorgere altri crash se ci sono chiavi/dischi usb collegati oltre a quella con su XP.

xeeynamo
29-12-2009, 12:23
Ho installato tempo fa Windows XP su una SD nel mio vecchio 1000H, perņ se bootavo la stessa sd da un altro computer windows neanche si avviava... Per questo secondo me sono meglio i LiveCD :). Inoltre non si potrebbero aggiungere vari valori al registro (editando i file di installazione) che sfruttano maggiormente la cache limitando le letture/scritture sul disco usb?

Comunque ottima guida :D ci voleva proprio

Baboo85
29-12-2009, 12:43
Ho installato tempo fa Windows XP su una SD nel mio vecchio 1000H, perņ se bootavo la stessa sd da un altro computer windows neanche si avviava... Per questo secondo me sono meglio i LiveCD :). Inoltre non si potrebbero aggiungere vari valori al registro (editando i file di installazione) che sfruttano maggiormente la cache limitando le letture/scritture sul disco usb?

Comunque ottima guida :D ci voleva proprio

Grazie del complimento, comunque guarda, la guida non e' mia ma riportata da un sito inglese. Ho capito le modifiche a cosa servono ma non saprei rispondere alla tua domanda.

Conta che un disco usb va quanto lo permette la porta usb. 60MB/s di banda, che poi non penso sia mai completamente utilizzata. Conta poi che le chiavette USB hanno si' il vantaggio di un tempo di accesso quasi nullo (0,1ms, alla peggio 0,5) ma sono lentissime (penso che le migliori che si trovino in giro nei negozi o ai supermercati non superino i 25MB/s in lettura).

Infatti sulla mia chiavetta da 8GB ho messo una versione di windows macinata con nLite, mentre giusto stanotte ho provato con un XP SP3 su disco esterno usb (il disco e' sata) e ora vedo come sono le prestazioni e i problemi.

Baboo85
29-12-2009, 13:09
Riscontrato BSOD STOP: 0x0000007B (0xF78AE524, 0xC0000034, 0x00000000, 0x00000000) attaccando la chiavetta usb ad un altro pc.

Credo sia per lo snellimento (sulla chiave ho xp ridotto a 120MB di iso) e la mancanza di driver che ho eliminato. Cerchero' di fare una prova con un hard disk esterno e un windows originale non modificato.

Non avevo ancora provato su altri pc, se non funziona e' una delusione :(

xeeynamo
29-12-2009, 13:11
Riscontrato BSOD STOP: 0x0000007B (0xF78AE524, 0xC0000034, 0x00000000, 0x00000000) attaccando la chiavetta usb ad un altro pc.

Credo sia per lo snellimento (sulla chiave ho xp ridotto a 120MB di iso) e la mancanza di driver che ho eliminato. Cerchero' di fare una prova con un hard disk esterno e un windows originale non modificato.

Non avevo ancora provato su altri pc, se non funziona e' una delusione :(

Credo che sia la stessa cosa di quando colleghi l'hard disk di un computer ad un altro set di hardware.. Forse per far funzionare WinXP anche su altri pc bisogna eseguire sysprep ogni volta (Spero di non dire fesserie XD)

Baboo85
29-12-2009, 13:13
Credo che sia la stessa cosa di quando colleghi l'hard disk di un computer ad un altro set di hardware.. Forse per far funzionare WinXP anche su altri pc bisogna eseguire sysprep ogni volta (Spero di non dire fesserie XD)

Ma che suicidio... Gia' con XP Lite mi va in blu appena collego una chiavetta usb (vedi faq), se anche con un XP completo crasha...

Vabbe' che provare un XP Lite su un pc desktop con un hardware come quello in firma forse e' un omicidio :asd: