Como fazer com que o Windows 7 USB flash instale mídia do Linux?

105

Eu tenho:

  • Imagem ISO da mídia de instalação do Windows 7
  • Unidade flash USB de 4 GB
  • nenhuma unidade de DVD
  • Linux instalado
Ian Kelling
fonte
Se você conseguir fazer todas essas tarefas a partir do seu desktop linux, você estará agitando a casa. Eu acho que a parte mais difícil seria mexer com todas as operações que o Diskpart do Windows faz. Fazer a partição marcada como 'ativa' e 'boot', 'primária', etc.
p.campbell
3
Acho GParted ( gparted.sourceforge.net ) pode lidar com todos os sinalizadores de partição muito bem. Veja, por exemplo, gparted.sourceforge.net/screenshots.php . E eu não testei, mas parece que o rsync pode substituir o robocopy nessa lista de verificação.
Matthew Flaschen
1
Há muitas respostas detalhadas para a mesma pergunta em askubuntu.com/q/289559/135671
erik

Respostas:

181

OK, depois de tentar sem êxito todos os métodos mencionados aqui, finalmente consegui fazê-lo funcionar. Basicamente, o passo que faltava era gravar um setor de inicialização adequado no pendrive, o que pode ser feito no Linux com ms-sysou lilo -M. Isso funciona com a versão comercial do Windows 7.

Aqui está o resumo completo novamente:

Instale o ms-sys - se não estiver em seus repositórios, obtenha-o aqui . Ou, alternativamente, verifique se o lilo está instalado (mas não execute a etapa liloconfig na sua caixa local se, por exemplo, o Grub estiver instalado lá!)

Verifique qual dispositivo sua mídia USB está atribuída - aqui assumiremos que é /dev/sdb. Exclua todas as partições, crie uma nova ocupando todo o espaço, defina o tipo como NTFS (7) e lembre-se de configurá-lo inicializável:

# cfdisk /dev/sdb   ou   fdisk /dev/sdb ( tipo de partição 7 e sinalizador de inicialização )

Crie um sistema de arquivos NTFS:

# mkfs.ntfs -f /dev/sdb1

Escreva o MBR do Windows 7 no pen drive (também funciona no Windows 8), várias opções aqui:

  1. # ms-sys -7 /dev/sdb
  2. ou (por exemplo, em instalações mais recentes do Ubuntu) sudo lilo -M /dev/sdb mbr( informações )
  3. ou (se o syslinux estiver instalado), você pode executar sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

Monte mídia ISO e USB:

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

Copie sobre todos os arquivos:

# cp -r /mnt/iso/* /mnt/usb/   ... ou use o navegador de arquivos GUI padrão do seu sistema

Ligue syncpara garantir que todos os arquivos sejam gravados.

Abra o gparted, selecione a unidade USB, clique com o botão direito do mouse no sistema de arquivos e clique em "Gerenciar sinalizadores". Marque a caixa de seleção de inicialização e feche.

... e pronto.

Depois de tudo isso, você provavelmente deseja fazer backup de sua mídia USB para outras instalações e se livrar do arquivo ISO ... Basta usar o dd: # dd if=/dev/sdb of=win7.img

Observe que isso copia o dispositivo inteiro! - que geralmente é (muito) maior que os arquivos copiados para ele. Então, em vez disso, proponho

# 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

Assim, por exemplo, com 8 M bytes extras:

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

Como sempre, verifique os nomes dos dispositivos com muito cuidado ao trabalhar com eles dd.

O método de criação de um USB inicializável apresentado acima também funciona com o instalador do Win10 iso. Eu tentei rodar o Ubuntu 16.04 copiando o Win10_1703_SingleLang_English_x64.iso (tamanho 4.241.291.264 bytes) em um pendrive de 8 GB - somente na inicialização não UEFI [não segura]. Após a execução dos relatórios dd: 8300156 + 0 registros em 8300156 + 0 registram 4249679872 bytes (4,2 GB, 4,0 GiB) copiados, 412,807 s, 10,3 MB / s

Inverta se / da próxima vez que você quiser colocar o instalador do Windows 7 no USB.

jthurner
fonte
1
Seria bom mencionar o tipo de partição numérica para usar em cfdisk bem (7, 86, 87?)
Johan Dahlin
5
Funcionou com o tipo 7
Ropez
3
Apenas uma observação: se o seu sistema de arquivos ntfs fornecer erros estranhos de permissão quando você escreve nele mesmo como root, verifique se instalou o ntfs-3g.
Jeremy Salwen
1
Eu tentei isso diretamente em um disco rígido e recebi o erro "o Windows não pode acessar as fontes de instalação" depois de inicializado.
Jeremy Salwen
4
chamar syncapós a cópia para garantir que todos os arquivos são gravados
Nicolas Dusart
13

Você pode fazer isso com o dd, se o seu PC suportar UEFI e, por extensão, discos GPT.

Abra um terminal, você precisará encontrar qual dispositivo é o seu pendrive. Se você tiver a unidade montada, poderá encontrar o nome do dispositivo digitando "mount" e olhando para a entrada. Algo como o seguinte:

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

Nesse caso, a primeira parte do / dev / sdb é montada em / media / USBDISK. Abra um shell raiz e desmonte a unidade.

umount /dev/sdb1

Vá para o diretório em que seu ISO está armazenado em um shell raiz e digite o seguinte: (Substitua windows7.iso pelo nome que for chamado e / dev / sdb pelo ID do dispositivo do seu pendrive).

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

Se sua placa-mãe suportar a inicialização de um pendrive, ela poderá inicializá-lo. Isso fará com que o instalador no pendrive não no próprio sistema operacional.

TrueDuality
fonte
21
Não funciona para mim.
1
Sua placa-mãe suporta a inicialização via USB? Esse será o fator decisivo para decidir se essa abordagem funcionará ou não.
precisa saber é o seguinte
11
Também não funciona para mim e minha máquina suporta a inicialização por USB muito bem. Talvez essa abordagem possa funcionar em máquinas que podem inicializar o armazenamento USB no estilo de DVD, mas a maioria dos BIOS assume o layout no estilo HDD no USB (ou seja, MBR de 512 bytes com o código de inicialização). Vale a pena mencionar: as imagens de CD / DVD do Fedora, ao contrário do W7, possuem MBR com código de inicialização e tabela de partição, tornando-as adequadas para a inicialização em HDD / USB.
Tronic
9
Isso requer que sua placa-mãe seja capaz de inicializar o CD-ROM USB e não apenas o HDD USB
TrueDuality
12
Esta solução está faltando na etapa de instalação da MBR e normalmente não funcionará, a menos que ela já esteja mágica. A solução da @Gunthers está completa.
stolsvik
5

A sugestão da PCambell é boa, mas você também deseja limpar o MBR, o equivalente ao Linux está abaixo

Eu tentei isso e funcionou (não sei por que o método dd falhou, mas parece que a partição tinha que ser NTFS?):

  • descobrir qual / dev / device é a sua unidade flash USB e desmontá-la
  • limpe o MBR: dd se = / dev / zero de = / dev / device bs = 446 count = 1
  • execute fdisk / dev / device
  • remova todas as partições e crie uma partição primária, torne-a inicializável e salve as alterações
  • execute mkfs.ntfs / dev / device1 (partição 1)
  • copie todo o conteúdo do Windows Install ISO para a partição que você criou

fonte
-4

Ao invés de

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

você escreve como root,

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

(ADICIONE 1 no final ou seja o que for a sua unidade USB.)

gonzo
fonte
3
Não, o valor de = sdb está correto conforme as respostas anteriores.
James Broadhead
1
Isto é simplesmente errado.
Lukad 24/05
1
-1: ddprecisa escrever para os dispositivos, para não partições
SSC