Come eseguire l'installazione di supporti flash USB di Windows 7 da Linux?


105

Io ho:

  • Immagine ISO del supporto di installazione di Windows 7
  • Unità flash USB da 4 GB
  • nessuna unità DVD
  • Linux installato

Se riuscissi a fare tutte queste attività dal tuo desktop Linux, farai tremare la casa. Penso che la parte più difficile sarebbe quella di giocherellare con tutte le operazioni che fa Diskpart di Windows. Rendere la partizione contrassegnata come 'active' e 'boot', 'primary', ecc.
p.campbell,

3
Penso che GParted ( gparted.sourceforge.net ) possa gestire bene tutti i flag di partizione. Vedi ad esempio gparted.sourceforge.net/screenshots.php . E non ho ancora testato ma sembra che rsync possa sostituire Robocopy in quella lista di controllo.
Matthew Flaschen,

1
Ci sono molte risposte dettagliate alla stessa domanda su askubuntu.com/q/289559/135671
erik

Risposte:


181

OK, dopo aver tentato senza successo tutti i metodi menzionati qui, ho finalmente funzionato. Fondamentalmente, il passo mancante era scrivere un settore di avvio adeguato sulla chiavetta USB, che può essere fatto da Linux con ms-syso lilo -M. Funziona con la versione commerciale di Windows 7.

Ecco di nuovo la carrellata completa:

Installa ms-sys - se non è nei tuoi repository, scaricalo qui . O in alternativa, assicurati che lilo sia installato (ma non eseguire il passaggio liloconfig sulla tua casella locale se, ad esempio, Grub è installato lì!)

Controlla a quale dispositivo è assegnato il tuo supporto USB - qui assumeremo che lo sia /dev/sdb. Elimina tutte le partizioni, creane una nuova occupando tutto lo spazio, imposta il tipo su NTFS (7) e ricorda di impostarlo come avviabile:

# cfdisk /dev/sdb   o   fdisk /dev/sdb ( tipo di partizione 7 e flag di avvio )

Creare un filesystem NTFS:

# mkfs.ntfs -f /dev/sdb1

Scrivi Windows 7 MBR sulla chiavetta USB (funziona anche con Windows 8), qui sono disponibili più opzioni:

  1. # ms-sys -7 /dev/sdb
  2. o (ad es. su nuove installazioni di Ubuntu) sudo lilo -M /dev/sdb mbr( informazioni )
  3. oppure (se è installato syslinux), è possibile eseguire sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

Montare supporti ISO e USB:

# mount -o loop win7.iso / mnt / iso
# mount / dev / sdb1 / mnt / usb

Copia su tutti i file:

# cp -r /mnt/iso/* /mnt/usb/   ... oppure usa il browser di file GUI standard del tuo sistema

Chiama syncper assicurarti che tutti i file siano scritti.

Apri gparted, seleziona l'unità USB, fai clic con il pulsante destro del mouse sul file system, quindi fai clic su "Gestisci bandiere". Seleziona la casella di controllo di avvio, quindi chiudi.

...e hai finito.

Dopo tutto ciò, probabilmente si desidera eseguire il backup del supporto USB per ulteriori installazioni e sbarazzarsi del file ISO ... Basta usare dd: # dd if=/dev/sdb of=win7.img

Nota, questo copia l'intero dispositivo! - che di solito è (molto) più grande dei file copiati su di esso. Quindi invece propongo

# dd count=[(size of the ISO file in MB plus some extra MB for boot block) divided by default dd blocksize] if=/dev/sdb of=win7.img

Quindi ad esempio con 8 M di byte extra:

# dd count=$(((`stat -c '%s' win7.iso` + 8*1024*1024) / 512)) if=/dev/sdb of=win7.img status=progress

Come sempre, ricontrolla molto attentamente i nomi dei dispositivi quando lavori dd.

Il metodo di creazione di una USB avviabile presentato sopra funziona anche con iso del programma di installazione di Win10. L'ho provato eseguendo Ubuntu 16.04 copiando Win10_1703_SingleLang_English_x64.iso (dimensioni 4.241.291.264 byte) su una chiavetta USB da 8 GB - solo in avvio non UEFI [non sicuro]. Dopo l'esecuzione di rapporti dd: 8300156 + 0 record in 8300156 + 0 registra 4249679872 byte (4,2 GB, 4,0 GiB) copiati, 412.807 s, 10,3 MB / s

Invertire se / della prossima volta che si desidera inserire il programma di installazione di Windows 7 su USB.


1
Sarebbe bello menzionare il tipo di partizione numerica da usare anche in cfdisk (7, 86, 87?)
Johan Dahlin,

5
Funzionava con il tipo 7
Ropez,

3
Solo una nota: se il tuo filesystem ntfs dà strani errori di autorizzazione quando ci scrivi anche come root, assicurati di aver installato ntfs-3g.
Jeremy Salwen,

1
Ho provato questo direttamente su un disco rigido e ho ricevuto l'errore "Windows non può accedere alle fonti di installazione" dopo l'avvio da esso.
Jeremy Salwen,

4
chiamare syncdopo la copia per assicurarsi che tutti i file siano scritti
Nicolas Dusart,

13

Puoi farlo con dd, se il tuo PC supporta UEFI e, per estensione, dischi GPT.

Apri un terminale, dovrai trovare quale dispositivo è il tuo pendrive. Se hai il drive montato puoi trovare il nome del dispositivo digitando "mount" e osservando la sua voce. Qualcosa di simile al seguente:

/dev/sdb1 on /media/USBDISK type vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed)

In questo caso la prima porzione di / dev / sdb è montata su / media / USBDISK. Apri una shell di root e smonta l'unità.

umount /dev/sdb1

Vai alla directory in cui è memorizzato il tuo ISO in una shell di root e digita quanto segue: (Sostituisci windows7.iso con qualunque cosa si chiami iso e / dev / sdb con l'ID del dispositivo della tua chiavetta USB).

dd if=windows7.iso of=/dev/sdb

Se la scheda madre supporta l'avvio da un pendrive, dovrebbe essere in grado di avviarlo. Ciò consentirà al programma di installazione sul pendrive e non sul sistema operativo stesso.


21
Non funziona per me.

1
La tua scheda madre supporta l'avvio da USB? Questo sarà il fattore decisivo per decidere se questo approccio funzionerà o meno.
TrueDuality,

11
Non funziona neanche per me e la mia macchina supporta l'avvio USB bene. Forse questo approccio può funzionare su macchine in grado di avviare l'archiviazione USB in stile DVD, ma la maggior parte dei BIOS assume un layout in stile HDD su USB (ovvero MBR da 512 byte con codice di avvio). Una cosa degna di nota: le immagini CD / DVD di Fedora, a differenza di W7, hanno in effetti un tale MBR con codice di avvio e tabella delle partizioni, rendendole adatte anche per l'avvio HDD / USB.
Tronic,

9
Ciò richiede che la scheda madre sia in grado di avviare USB-CDROM non solo USB-HDD
TrueDuality

12
A questa soluzione manca il passaggio di installazione dell'MBR e in genere non funzionerà a meno che non sia già magicamente presente. La soluzione di @Gunthers è completa.
stolsvik,

5

Il suggerimento di PCambell è buono ma vorrai anche cancellare l'MBR, l'equivalente di Linux è sotto

Ho provato questo e ha funzionato (non sono sicuro del motivo per cui il metodo dd non è riuscito ma sembra che la partizione debba essere ntfs?):

  • capire quale / dev / dispositivo è l'unità flash USB e smontarla
  • cancellare l'MBR: dd if = / dev / zero di = / dev / device bs = 446 count = 1
  • eseguire fdisk / dev / device
  • rimuovere tutte le partizioni e creare 1 partizione primaria, renderla avviabile quindi salvare le modifiche
  • eseguire mkfs.ntfs / dev / device1 (partizione 1)
  • copia l'intero contenuto dell'ISO di installazione di Windows nella partizione creata

-4

Invece di

dd if=windows7.iso of=/dev/sdb

scrivi come root,

dd if=windows7.iso of=/dev/sdb1 

(AGGIUNGI 1 alla fine o qualunque sia la tua unità USB).


3
No, of = sdb è corretto secondo le risposte precedenti.
James Broadhead,

1
Questo è semplicemente sbagliato.
lukad,

1
-1: dddeve scrivere sui dispositivi, non sulle partizioni
ssc
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.