Crea un USB avviabile per installare Windows XP da Linux


19

Ho un Dell Inspiron Mini 9 con solo Ubuntu installato. Voglio installare anche Windows XP, ma non ho e non riesco a ottenere un'unità CD esterna, quindi devo effettuare un'installazione di Windows da USB.

Tutti i tutorial che ho trovato usano Windows per rendere avviabile l'USB. Come posso fare lo stesso da Linux?


Hai accesso a un computer con un'unità CD?
Nathaniel,

Ho un'altra macchina linux con un lettore CD.

Risposte:


13

È possibile utilizzare VirtualBox e fornire alla macchina virtuale l'accesso all'unità disco fisso. Quindi installare Windows XP nella macchina virtuale e creare una nuova partizione sul disco rigido reale. Dopo l'installazione è possibile riavviare il computer e avviare Windows normalmente.

Per dare a VirtualBox l'accesso all'intero disco (cambiare la xlettera appropriata, ad esempio a):

VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdx

Quindi scegliere il disco rigido esistente e selezionare il file hdd.vmdknella cartella principale.

Se i comandi si lamentano delle autorizzazioni mancanti, aggiungiti al gruppo diskcon il seguente comando, quindi accedi e disconnetti e riprova.

sudo adduser `whoami` disk
  1. Se hai già installato Linux sul computer di destinazione , puoi farlo direttamente su quel computer, ma prima di riavviare in Windows, esegui sudo update-grube sudo grub-install /dev/sdx(cambia la xlettera appropriata, ad esempio a) per assicurarti che sarai ancora in grado di avviarlo Linux. Per evitare problemi con hardware diverso tra il tuo computer e ciò che VirtualBox ha emulato nella VM (che può provocare un BSOD ), puoi anche creare un secondo profilo hardware in Windows prima di lasciare la VM. Quando si avvia direttamente in Windows con GRUB , selezionare questo secondo profilo hardware. Alla fine puoi rendere questo nuovo profilo hardware predefinito.

  2. Se il computer di destinazione è completamente pulito , creare un'unità USB Ubuntu avviabile su cui inserire anche un'immagine del CD di installazione di Windows (acquistato legalmente). Quindi avviare Ubuntu sul computer di destinazione e seguire le istruzioni sopra.


1
Questa è sicuramente una soluzione geniale! Sembra funzionare finora. :)
RCE,

1
Ciao, sto provando a fare proprio questa cosa su Ubuntu 12.04 ma sto riscontrando problemi. Quando scrivo VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdxessendo x my hdd ricevo questo messaggio. VBoxManage: error: Cannot open the raw disk '/dev/sda1': VERR_ACCESS_DENIED VBoxManage: error: The raw disk vmdk file was not createdPoi l'ho fatto come root ma, sebbene ovviamente funzionasse, posso solo aprire hdd.vmdk come root e questo mi mette a disagio. Tuttavia, la macchina virtuale non sembra funzionare. Ottengo una schermata nera che apre virtualbox come root.
fénix,

1
Come indicato nella risposta "Se i comandi si lamentano delle autorizzazioni mancanti, aggiungiti al disco del gruppo con il seguente comando, quindi accedi e esci e riprova." sudo adduser `whoami` disk
Linus Unnebäck,

1
Ho fatto quanto sopra e la macchina virtuale installata ed esegue Winxp bene, ma quando spengo il computer e riavvio, appare il logo di Windows, quindi si blocca immediatamente, prima che mostri rapidamente BSOD e si riavvii.
SaultDon

2
Sfortunatamente, questo metodo non funziona davvero a meno che tu non sia fortunato. Potresti finire con un'installazione di Windows che funziona correttamente nella macchina virtuale, ma non si avvia sull'hardware.
jpalecek,

8

Scarica RUFUSLDR da qui: https://dl.dropboxusercontent.com/u/20170669/RUFUSLDR Scarica ms-sys qui: http://prdownloads.sourceforge.net/ms-sys/ms-sys-2.3.0.tar. gz? download Trascina la cartella ms-sys-2.3.0 in un punto che supporti il ​​flag di esecuzione (come la tua cartella home Linux, molto probabilmente). cd un terminale lì, digitare "make", quindi "sudo make install". Davvero facile.

Ti capisco. Ho provato tutorial su come creare, da Windows, un'unità USB avviabile nel programma di installazione di WinXP. Quello del diskpart, quello di WinToFlash e quello dell'utility di formattazione USB HP mi hanno deluso.

Rufus funziona davvero. Ma è un'utilità solo per Windows. È possibile installare VirtualBox, installare Windows in VirtualBox, installare Rufus nella VM, condividere l'unità USB con la VM e fare in modo che Rufus renda avviabile l'unità USB nel programma di installazione di Windows XP.

Rufus al momento non supporta la creazione di un programma di installazione WinXP USB avviabile utilizzando file di installazione sciolti. Deve vedere l'iso. Quindi hai VirtualBox montare l'iso per installare XP nella VM, ma questo appare come file sciolti (non vedrà l'iso). Quindi, per fare in modo che Rufus veda il file iso stesso, condividi la directory sul tuo computer host in cui l'iso è archiviato nella VM. Quindi punta Rufus su dove si trova il file iso nell'unità di rete della VM (Z: \ o altro).

A proposito, puoi anche copiare un'immagine floppy di FreeDOS sull'unità, copiare anche i file dall'iso e usare memdisk per avviare l'immagine floppy. Da FreeDOS, eseguire i386 \ winnt.exe. Il rovescio della medaglia è che (a meno che tu non abbia trovato un driver NTFS DOS?) Sarai in grado di installare Windows solo su un volume FAT32, non su NTFS.

È possibile che il processo di Rufus sia dolorosamente lento a causa dell'essere in una macchina virtuale (non capisco perché, forse ero stupido su come ho impostato le impostazioni). Personalmente, sul mio laptop, ci sono voluti un'ora, 5 minuti e 40 secondi, credo che lo fosse. Ti dirò come farlo senza Rufus in Linux. Rufus sarà l'imitazione, ma prima, nel caso in cui decidessi di utilizzare Rufus dalla VM, tieni presente che Linux non sarà in grado di vedere la partizione dopo che Rufus avrà terminato:

Rufus non solo formatta la partizione, ma ripristina l'MBR (inclusa la tabella delle partizioni). Quindi salva prima tutto dalla chiavetta.

Nota: Rufus stabilisce un trucco MBR che quando eseguito dal BIOS scambia le prime due unità BIOS (0x80 diventa 0x81 e viceversa). Inoltre, inserisce un ID BIOS in questo trucco MBR per rendere l'unità avviata come 0x81 (la seconda unità). Perché ti sto dicendo questo: il trucco MBR fa sì che Linux (e Grub2 v2.00) non siano in grado di leggere la tabella delle partizioni. Windows andrà bene con esso (dategli una lettera di unità e tutto) e l'unità sarà avviabile. Ma Linux non vedrà la partizione e quindi non sarà in grado di montarla. Nessun problema. Salvare l'MBR in un file:

sudo dd if=/dev/sdX of=~/Desktop/rufus_trick_mbr count=1 bs=512

Ora usa fdisk per dargli un nuovo MBR. Non stai nemmeno toccando la partizione stessa, le stai solo dando un nuovo MBR. In realtà non si fa nulla in fdisk finché non si preme "w".

sudo fdisk /dev/sdX

p //Print partition table. fdisk, unlike the kernel, CAN make sense of the partition table as-is.

You'll probably see the partition start on sector 2048 and go to the end.

o  //Tells fdisk to make a new partition table

n //create new partition. By defualt, fdisk should also make the partition start at sector 2048 and go to the end. Make sure the partition starts where it used to and ends where it used to.

select primary

t //change partition type id

7 //for ntfs

p //Make sure everything is right. And no, don't worry about the boot flag.

w //when you're sure. Remember, we saved the old mbr and can undo any mess-ups made here with dd.

Possiamo anche fare nuovi pasticci con dd:

HAMMOND - "Non preoccuparti, non commetterò più gli stessi errori." MALCOLM - "No, no, ne stai facendo di nuovi."

-Jurassic Park II, Il mondo perduto

Scollegare e ricollegare la chiavetta USB. Se non altro, / dev / sdXY dovrebbe almeno esistere ora (prima che esistesse solo / dev / sdX - nessuna "Y"). Per montarlo, è necessario installare ntfs-3g. Se è installato, vedere se era già montato (dovrebbe apparire sul desktop o nel riquadro sinistro del browser dei file in tal caso). Altrimenti, montalo tu stesso. Puoi provare a montarlo prima con il browser dei file. Ecco come montarlo manualmente:

sudo mount -t ntfs-3g /dev/sdXY [mount point]

Fai quello che vuoi fare con esso in Linux.

Se lo desideri, rimetti rufus_trick_mbr su:

sudo dd if=~/Desktop/rufus_trick_mbr of=/dev/sdX bs=512 count=1 //No "Y"! Just /dev/sdX!

Ma non è necessario rimettere il trucco MBR. È possibile utilizzare invece il comando ntldr di Grub2 per caricare / BOOTMGR. (Probabilmente dovrai prima fare "insmod ntldr" per inserire il modulo ntldr.)

Ecco cosa succede:

Rufus stabilisce il trucco MBR con una voce della tabella delle partizioni, formatta la partizione come NTFS, inserisce le cose nel settore di avvio di quella partizione di cui si preoccupano solo i bootloader in stile ntldr, copia i file da iso alla partizione, copia NTDETECT.COM dal cartella i386 e lo mette a livello di root, copia txtsetup.sif dalla cartella i386, lo mette a livello di root E aggiunge una linea che github, c0m / pbatard / rufus / wiki / Targets-Supported non menziona, quindi grazie "openssl md5" e cmp per avermelo segnalato.

rullo di tamburi : AND copia SETUPLDR.BIN dalla cartella i386 al livello principale, lo rinomina come BOOTMGR e patch quel binario. Sì, questo è il trucco. SETUPLDR.BIN, quando viene avviato da CD, rileva che è stato avviato da CD e cerca nella cartella i386. Se avviato da un disco rigido, rileva che si è avviato da un disco rigido, cerca invece una cartella di minint e, se trovata, cerca una cartella $ WIN_NT $ ~ BT per iniziare la seconda fase dell'installazione (dopo il riavvio e quando si avvia nel disco rigido di destinazione). Quindi non puoi nemmeno rinominare "i386" in "minint". Devi modificare SETUPLDR.BIN per cercare nella cartella i386 anche quando viene avviato da un disco rigido (come un'unità USB).

Penso che sia un termine improprio per Rufus chiamare il binario modificato "BOOTMGR". Questo è ciò che usano Vista e 7 (e 8?), Non XP. BOOTMGR non cerca nemmeno un file boot.ini come NTLDR (di cui SETUPLDR è una versione modificata). Così l'ho rinominato come "RUFUSLDR" e l'ho messo per il download. Inoltre, vorresti essere in grado di distinguerlo da qualsiasi vero BOOTMGR che potresti avere in giro.

Rufus ti obbliga a formattare l'unità come NTFS se si applica un iso di installazione di Windows. Credo che ciò sia dovuto all'anteprima dello sviluppatore di Windows 8 x64 contenente un file> 4 GB, che FAT32 non può supportare. Ma questo non si applica qui. Non abbiamo file da nessuna parte vicino a 4 GB. Puoi usare FAT32 ed essere a posto.

Imitiamo Rufus da Linux (o quasi qualsiasi unixoid, immagino):

  1. Assicurarsi che l'unità sia schematizzata con MBR. fdisk emetterà un avviso se è GPT e ti darà anche la possibilità di renderlo MBR-schemed (opzione "o"). Meno distruttivamente, gdisk ti consente di convertire l'unità con schema GPT in un'unità con schema MBR se hai 4 o meno partizioni. Gdisk ti permetterà anche di trasformare il tuo disco in un disco ibrido con schema MBR / GPT in cui puoi scegliere fino a 3 partizioni per essere visibili a oggetti ignari a GPT (il quarto slot è occupato da una partizione protettiva che copre il resto). Anche se usi solo fdisk, fintanto che la nuova voce della tabella delle partizioni continua e si ferma negli stessi punti, non perderai la partizione; assicurati di azzerare il GPT secondario alla fine del disco.

  2. Assicurarsi che la partizione sia formattata come FAT32 o NTFS. Ricorda, FAT32 è più cross-platform-friendly. Se è già formattato come FAT32 o ntfs, non è necessario formattarlo:

    sudo blkid / dev / sdXY [qui dice il filesystem, insieme a UUID, etichetta, ecc.]

Se non è FAT32 o NTFS, eseguire una di queste operazioni:

sudo mkdosfs -F 32 -n [insert volume label (name) here] /dev/sdXY

sudo mkntfs -L [insert volume label here] /dev/sdXY

3 Applica quella roba magica di Bootsector che DOS / Windows è così schizzinosa su:

sudo ms-sys -w /dev/sdXY

* A proposito di questo - "-w" sta per "scrivere" - solo per scrivere. Al contrario di specificare cosa scrivere. Quindi "-w" è la modalità automatica di ms-sys: determina il miglior tipo di dati di avvio da scrivere per la situazione. Sono rimasto sorpreso di scoprire che auto aveva ragione: per una partizione FAT32, ho bisogno di FAT32 di ms-sys DOS settore di avvio non FAT32 MS-sys NT bootsector, che ho pensato che avrei avuto bisogno di caricare un derivitive di _NT_LDR (NT Loader) (SETUPLDR. BIN è una versione modificata di NTLDR e RUFUSLDR una versione modificata di SETUPLDR.BIN).

4 Per buona misura, scrivi anche roba geometrica sulla partizione. Questo non cambia la geometria del disco, lascia solo una nota sulla geometria per cose troppo pigre per scoprire da sole la geometria:

sudo ms-sys -p /dev/sdXY

* Nota: il passaggio 4 non si applica a NTFS. * Un'altra nota: assicurati che la versione del tuo kernel linux sia> 2.6. Kernel 2.6 ha avuto un bug che ha riportato il numero sbagliato di teste (una cosa geometria). Così l'opzione "-p" può mettere giù informazioni di sbagliato nel kernel 2.6. L'opzione "-H", che consente all'utente di specificare manualmente il numero di teste da registrare, è la soluzione. Ma davvero, basta aggiornare il kernel. Se stai eseguendo 2.6, sei già in ritardo. Per dire la versione del tuo kernel, fai:

uname -r

5 Copia nei file dall'iso, dalla cartella, qualunque cosa. Molte distribuzioni montano isos facendo doppio clic su di esse, o almeno offrono l'opzione di apertura con un mounter con il tasto destro del mouse> apri con. In caso contrario, procedere come segue:

sudo mount -o loop (path to iso) (path to desired mount point)

6 Posizionare il file SETUPLDR.BIN (RUFUSLDR) modificato a livello di root.

7 Copia NTDETECT.COM da i386 al livello principale.

8 Copia txtsetup.sif da i386 al livello principale.

9 Aprire la nuova copia di txtsetup.sif e Ctrl + F per "[SetupData]". Proprio sotto quell'intestazione, inserisci questa riga:

SetupSourceDevice = "\device\harddisk1\partition1"

10 Installare un bootloader in grado di caricare bootloader in stile NTLDR sull'unità o su un'altra unità che verrà utilizzata per avviare questa unità oppure utilizzare un bootloader esistente. Se hai Grub2 installato sul tuo disco rigido per avviare Ubuntu, puoi semplicemente premere "c" quando vedi il menu per accedere alla riga di comando di Grub. Se invece hai Syslinux, puoi usarlo anche tu. Mi limiterò a seguire Grub2 per il tutorial.

Per installare Grub2 sul disco (cosa che potrebbe non essere necessario se si utilizza il bootloader esistente del disco rigido):

sudo grub-install --boot-directory=[mount point of disk, not iso] [/dev/sdxy]

11 bis. Immettere una voce grub.cfg o eseguire manualmente quanto segue:

grub> insmod ntldr //Inserts (loads) the Grub2 module used for loading NTLDR-style bootloaders.
grub> set root=(hdx,msdosy) //Replace x and y as appropriate. Sets the current directory to the target partition. Probably not needed if you booted off the drive you put the WinXP installer files on, but we always do this. Use "ls" to list all drives and partitions. If you only have one MBR-schemed disk with only one (or however many you made) partition(s), you'll be able to pick out which is your thumb drive. If not, try one and do "ls /". It will list the files on the root level of that partition. That should be a dead-giveaway. Notice that "ls" (without slash) lists drives and partitions, and "ls /" (with slash) lists the files on the root level of the partition that is the current working directory.
grub> ntldr /RUFUSLDR //Tells it to load RUFUSLDR.
grub> boot //That's the "go button".

11b. Come voce grub.cfg, sarebbe simile a questa (non allineare parentesi, questa è Grub, non l'università !!):

menuentry "Windows XP Installer" {
  insmod ntldr
  search --no-floppy --fs-uuid --set=root [insert filesystem's UUID here, obtaind by "sudo blkid /dev/sdXY"]
  ntldr /RUFUSLDR
}

// Nota che quanto sopra è un mezzo molto più sicuro per impostare l'attuale directory di lavoro di Grub. Si noti inoltre che "avvio" è implicito per le voci del file di configurazione.

// Si noti inoltre che sebbene sia consuetudine disporre di una riga "drivemap -s (hd0) $ {root}" per l'avvio di Windows (rende l'unità di Windows la prima unità BIOS), farlo per il mio programma di installazione USB Windows XP lo ha causato solo riavviare su cercando di avviare il bootloader ntldr stile. Se le cose non funzionano, e sei sicuro che hai fatto tutti i passaggi, cercano "drivemap -s (hd0) $ {} radice"

// Fai attenzione se al momento dell'avvio sono state inserite più unità USB. Il sistema avvia l'avvio dell'unità USB di avvio più dominante quando viene richiesto di avviare USB. È possibile capire sistematicamente quali porte USB sono dominanti su quali con due unità USB avviabili. Per me, non ho dovuto provare molte combinazioni, perché le mie porte USB sono disposte in colonne e intere colonne erano dominanti su altre colonne. All'interno di una colonna, quella superiore era dominante.

// Si noti che se si sta avviando il vostro installatore USB di Windows XP da Grub2 su un'altra unità, Grub2 vedrà solo il drive USB più dominante (almeno sul mio sistema). Quindi assicurati che il tuo installer USB WinXP sia nello slot usato più dominante. (O semplicemente scambiare i due se si hanno due unità USB e Grub2 vede l'unità di installazione non WinXP.) Naturalmente questo non è un problema se è inserita una sola unità USB.

// Se si riavvia, assicurati di aver eseguito "sudo ms-sys -w / dev / sdXY" e, se FAT32, "sudo ms-sys -p / dev / sdXY" E di aver copiato NTDETECT.COM da i386 in livello radice.

// Se dice che non riesce a trovare nulla, potresti non utilizzare il bootloader modificato. Assicurati di utilizzare quello modificato. (Avrà md5 diverso da i386 / SETUPLDR.BIN.) Assicurati inoltre che txtsetup.sif e NTDETECT.COM siano al livello principale.

// Se si dice di inserire il CD di Windows XP SP3, assicurarsi di aver aggiunto quella riga a txtsetup.sif E che i file Ident CD siano corretti (WIN51, WIN51IP, ecc.). Basta eliminare i file di rientro del CD e copiarli nuovamente in caso di dubbio.

// Se si dice che è necessario inserire un disco per dimostrare che si qualificano per l'installazione di aggiornamento, ci sono dischi GPT inseriti? Forse questa è la causa del problema. Scollegare qualsiasi dischi GPT-tramato o convertirli in MBR in Linux. (Come nel Spegni il computer, scollegare, provare di nuovo. Non solo strattone.)

// A proposito, per installare su un'unità USB, dovrai fare l'hack su ngine.de/article/id/8. Sì, è possibile installare Windows XP DA USB A USB.

Godere,

Jake XD


1
dopo aver seguito molti tutorial è venuto al tuo metodo e mi sembra abbastanza convincente, se il tuo metodo fallisce proverò l'avvio tftp incustodito (più tardi per l'esperimento) attualmente con il tuo metodo che ottengo NTFS signature is missing. Failed to mount '/dev/sdb': Invalid argument The device '/dev/sdb' doesn't seem to have a valid NTFS.sono andato prima su una macchina Win 7 e usato rufus e ha puntato a iso XP e formattato USB con ISO e collegato la macchina da USB a Linux e ora è iniziato con il tuo metodo sudo mount ntfs-3g / dev / sdb1 / media / usb che è dove ottengo l'errore i primi 2 passaggi di dd sono andati bene
Utente registrato

ecco le istantanee di fdisk sdrv.ms/15UUtRf e un'altra immagine sdrv.ms/15UUuVk di fdisk Penso di aver seguito le cose mi ha lasciato correttamente sapere se si nota qualche problema
Utente Registrato

1
Non riuscivo a farlo funzionare in Linux.
gennaio

1
Questa è un'ottima risposta che mi ha dato finalmente il giusto indizio - questa parte: A proposito, puoi anche copiare un'immagine floppy di FreeDOS sull'unità, copiare anche i file dall'iso e usare memdisk per avviare il floppy Immagine. Da FreeDOS, eseguire i386 \ Winnt.exe. Non hai nemmeno bisogno di usare memdisk, l'installazione di FreeDOS ad un lampo FAT32 è abbastanza facile (può essere fatto con QEMU, o ci sono immagini USB intorno ). Inoltre, è possibile installare Windows su NTFS in questo modo, l'installazione di Windows gestisce NTFS da sola.
jpalecek

1
@jpalecek si può fare una risposta completa dal vostro commento? Un'istruzione su come far funzionare effettivamente le cose, come ad esempio 1. masterizzare FreeDOS su USB 2. copiare file da ISO a partizione USB. 3. ???
VasyaNovikov

3

Si scopre che Windows XP si configura effettivamente per una specifica configurazione hardware durante la prima fase del programma di installazione.

Quindi, se il metodo di utilizzo di VirtualBox, QEMU, ecc. In combinazione con il tuo vero disco rigido è quello di funzionare, devi davvero creare un secondo profilo hardware. Speravo che potrebbe aggirare questa chiudendo VM verso il basso prima di riavviare nella seconda fase e invece avviare il computer vero e proprio in esso e lasciarlo configurare per il vostro hardware reale. Ma configura per l'hardware nella prima fase, non il secondo stadio.

Quindi vi consiglio caldamente imitando Rufus. Basta copiare i file e apportare alcune modifiche. Vedere post esistente. Non c'è bisogno di trattare con un secondo profilo hardware. Anche se avessi creato un secondo profilo hardware, come avresti avviato Windows per installare i driver per il tuo vero hardware sotto il secondo profilo? E se avete fatto a trovare un modo, non sarebbe licenza arresto voi (guarda hardware)?


1

Dai un'occhiata a UNetBootIn . Questo dovrebbe fare il trucco.


8
Non sono riuscito a farlo funzionare per Windows XP, non avvia Windows Installer

2
Puoi pubblicare un riferimento (ufficiale o meno) che questo è possibile con Windows XP? Tu o qualcuno che conosci hai fatto funzionare questo? L'ho provato alcune volte e ho fallito, mi piacerebbe sapere che è possibile prima di riprovare.
Annan,

1

E 'solo che grida ad un vento, ma ...

Che ne dici di provare VirtualBox? È possibile scaricare il file ISO di Windows XP, montarlo e macchina virtuale instal. Penso che si possa accedere drive USB anche lì, così si potrebbe essere in grado di fare unità di avvio USB da lì.


Sfortunatamente, non funziona davvero - vedi le altre risposte
jpalecek

1

Dal momento che non ha ottenuto UNetbootin al lavoro, chiedere a un amico con un computer Windows (non sono esattamente la scarsità, si sa :) per preparare una chiavetta USB con WinToFlash per voi.


L'ho già provato e questo non è riuscito, a un certo punto ho ottenuto un BSOD
Utente registrato

Nota: WinToFlash è proprietario. (Nessuna fonte disponibile, hanno elementi come le edizioni "Professional", ecc.).
VasyaNovikov

0

E 'anche possibile installare XP a 32 bit da DOS. Devi solo creare un'unità flash avviabile DOS o un altro disco rigido. Copiare la cartella i386 su di esso e poi:

C:> cd i386
C: \ i386> winnt / b
impostazione Ora di Windows caricherà dal / FAT32 DOS unità di avvio FAT16!

Se hai eseguito l'avvio dallo stesso disco rigido su cui stai installando, potresti essere in grado di utilizzare l'opzione per convertirlo in NTFS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.