Quali sono i problemi di creare un'unità USB Windows 7 bootibile da Linux con ms-sys o dd?

Ho letto alcune pagine web e post (qui e in altri forum) su come creare un supporto USB di installazione di Windows 7 da linux (per installare Windows 7)

Ho chiesto in TechNet per questo e ho una risposta con informazioni generali su come farlo:

"Personalmente non sono molto familiare con linux, ma fondamentalmente tutto quello che devi fare … in qualunque modo lo fai è il seguente:

  1. Formattare un'unità flash usb, sia fat32 che ntfs, che creano una partizione sufficientemente grande da ospitare l'installazione di Windows (dare o richiedere 3GB per 64bit, aroudn 2.5gb per 32bit) e contrassegnare la partizione come triggers / avviabile. Poiché questo può essere fatto con le windows, ma anche con uno strumento come gparted, si dovrebbe essere in grado di fare lo stesso in debian.

  2. Una volta creata quella partizione, montare la iso che si scarica e copiare tutti i file partendo dalla radice, nella radice dell'unità flash usb.

Questo è tutto quello che c'è. "

Ho trovato un altro metodo in diversi luoghi, che è quasi lo stesso di quello che è stato menzionato in TechNet. Tuttavia, sembra che ci sia un passaggio mancante in questo metodo e / o un passaggio che non sono sicuro è necessario.

dd non sempre funziona. Fondamentalmente, il passaggio mancante era quello di scrivere un corretto settore di avvio al bastone usb, che può essere fatto da linux con ms-sys . Questo funziona con la versione retail di Windows 7 .

Ecco la completa rundown, vedere la domanda serverfault per ulteriori dettagli:

  1. Installare ms-sys .
  2. Controlla quale dispositivo è assegnato il tuo media usb ( fdisk -l ) qui supponiamo che sia /dev/sdb .
  3. Eliminare tutte le partizioni, crearne uno nuovo, occupare tutto lo spazio, impostare il tipo su NTFS e impostarlo in modo avviabile:

    cfdisk /dev/sdb

  4. Creare file system NTFS:

    mkfs.ntfs -f /dev/sdb1

  5. Montare i media usb e usb:

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

  6. Copia su tutti i file:

    # cp -r /mnt/iso/* /mnt/usb/

  7. Scrivere MBR di Windows 7 sul bastone usb:

    # ms-sys -7 /dev/sdb

  8. Assicurarsi che la scrittura sia sciacquata (essere paziente può richiedere alcuni minuti):

    # sync

  9. aprire gparted, select l'unità USB, fare clic con il button destro del mouse sul file system, quindi fare clic su "Gestisci flag". Controllare la casella di controllo 'avvio', quindi chiudere

…e hai finito.

Le domande

  • Non dovrebbe funzionare usb senza fare l'ultimo passo # ms-sys -7 /dev/sdb ? Oppure è fare il boot usb? Se solo per contrassegnare la partizione come avviabile?

  • Non sarebbe meglio utilizzare rsync invece di cp -r ?

  • Tutti questi passaggi devono essere fatti come root ? In caso contrario, devo fare chmod tutti i file a 664 e chown tutte le directory utilizzate per montare il dispositivo USB e l'image ISO? Suppongo che sia più semplice copiare i dati come root e non influenzare i dati.

  • Qualcuno ha provato questo metodo o qualche simile simile a copiare l'iso con dd ?

Il command ms-sys è importnte. Con l'opzione -7 crea un settore di avvio compatibile con Windows 7 sull'unità flash.

Non è ansible utilizzare dd perché l'ISO utilizza un file system ISO come UDF o ISO9660 , in cui – come l'unità USB solo support correttamente i file system come ext3, FAT32 o NTFS

Sarebbe meglio utilizzare rsync invece di cp -r?

Non proprio. cp -r funziona perfettamente. Basta rendersi conto che NTFS gestisce le autorizzazioni in modo diverso rispetto a Linux, quindi usando rsync per mantenere tutto intatto non ha importnza troppo. Tutto ciò che conta veramente è che i file dell'ISO sono sul USB e che il settore di avvio viene formattato correttamente usando ms-sys -7

È ansible eseguire tutte le fasi come root se si desidera. Gli unici 2 passaggi che richiedono veramente la radice sono i mkfs ei 2 mount

Se hai problemi di authorization anche come root, potrebbe essere necessario montare il tuo USB utilizzando ntfs-3g /dev/sdb1 poiché alcune distribuzioni Linux forniscono solo un driver Read-Only per NTFS.

Ho provato con dd (dd se = / file / win7.iso di = / dev / sdb) e non funziona.

I miei passi per farlo funzionare:

  • Installare ms-sys
  • gparted per creare partizioni e creare file system NTFS.

Successivamente applicare questi comandi:

 # mount -o loop win7.iso /mnt/iso # mount /dev/sdb1 /mnt/usb # cp -r /mnt/iso/* /mnt/usb/* # ms-sys -7 /dev/sdb*