Meu objetivo é tão simples, o título diz tudo, mas de todas as formas que tentei, falhei. Eu li as instruções em vários sites (além deste) e todos parecem estar faltando alguma coisa ... é isso que eu tenho:
- Unidade SanDisk USB 3 de 16 GB.
- Máquina Debian Jessie
- máquina windows, macbook pro
Embora eu possa criar facilmente um usb inicializável do Windows 10 com rufus, meu objetivo é mais educacional: quero entender o que está acontecendo e qual é a origem da minha falha e, se possível, fazê-la funcionar.
Quando tento criar uma imagem Win10 no terminal, tentei este comando:
sudo dd if=Windows10.iso of=/dev/sdc1 bs=512k
Eu recebo uma partição que parece montar no Debian, mas não é reconhecida no Windows e no Mac. O Gparted mostra o seguinte: o gparted relata o sistema de arquivos desconhecido por comparação, outra unidade flash USB funcionando normalmente (eu tenho 4) lê assim: insira a descrição da imagem aqui
Eu li em alguns lugares que você não deveria enviar para a partição (sdc1), mas para a unidade (sdc), então tentei o seguinte:
sudo pv Windows10.iso | sudo dd of=/dev/sdc bs=5M
(que para aqueles que estão familiarizados é o mesmo comando, canalizado por dd e com sdc). isso parece destruir toda a partição, como você pode ver no fdisk: minha saída do terminal mostrando o comando e fdisk .
Isso foi perturbador, mas decidi começar do zero. Eu reiniciei e executei os seguintes comandos
sudo umount /dev/sdc1
sudo wipefs -a /dev/sdc
sudo fdisk -l
sudo fdisk /dev/sdc
n, p, 1, [enter], [enter], t, 7, w
isso deve formatar uma nova partição e alterá-la do padrão (linux) para a partição ntfs de que preciso. Então eu corro:
lsblk
e crie o sistema de arquivos NTFS com este comando:
sudo mkfs -t ntfs /dev/sdc1
depois disso, tentei executar o dd, mas com uma opção adicional: conv=fdatasync (que algumas pessoas dizem garantir que nada permaneça no cache e pode resolver esse problema).
pv Windows10.iso | sudo dd of=/dev/sdc conv=fdatasync bs=512k
(Adicionei o tamanho do byte caso isso seja um problema). Independentemente de como eu faço isso, notei o seguinte:
- dd escreve os arquivos e o sistema de arquivos e é legível no linux (posso abrir os arquivos), mas é inútil e lsblk e gparted dizem que não há nada lá!
- se eu escolhi sdc1 ou sdc parece apenas afetar o quanto a unidade está danificada. um danifica a partição, enquanto o outro faz parecer que toda a unidade não está alocada.
- a unidade está boa: entrei no windows e com a mesma unidade usb 'destruída', copiei o mesmo arquivo e verifiquei que inicializa e funciona bem.
Lembre-se de que o comando dd funciona com gpartedlive . Executei o seguinte código:
sudo wipefs -a /dev/sdc
sudo fdisk /dev/sdc
lsblk
sudo mkfs -t vfat /dev/sdc1
pv gparted-live-1.1.0-1amd64.iso|sudo dd of=/dev/sdc bs=4M conv=fdatasync
e obtive uma unidade ao vivo gparted totalmente funcional. Isso está me deixando muito confuso, então pensei em pedir ajuda. Eu sei que me pouparia do trabalho se apenas ficasse com Rufus, mas não se trata de simplificar, mas de entender o que está acontecendo. Eu sei que algumas ferramentas GUI no Linux podem resolver o problema, mas, novamente, minha esperança é fazer isso usando o antigo terminal unix, se possível. se não for possível, gostaria de saber o porquê. então resumindo:
- por que não está funcionando? O que estou fazendo errado?
- por que o dd está destruindo as partições, mas parece funcionar bem com o gparted?
- onde posso aprender mais sobre esse uso menos comum de copiar imagens para pen drives?
Muito obrigado por toda sua ajuda! você vai me poupar horas de mais dores de cabeça!
Desenvolvedor Rufus aqui.
O que muitas pessoas não conseguem entender, porque os ISOs do Linux estão aplicando esse método, mas este é essencialmente um GRANDE HACK CHAMADO 'ISOHYBRID' , é que, na maioria dos casos, você não pode simplesmente pegar uma imagem ISO e copiá-la byte por byte para uma unidade USB e espere que inicialize.
Isso ocorre porque o formato ISO e os sistemas de arquivos subjacentes que ele usa (
ISO9660
ouUDF
) são projetados para inicialização óptica, que é completamente diferente da inicialização normal de HDD ou USB. Por um lado, a mídia óptica e, portanto, as imagens ISO (regulares), não possuem uma tabela de partições, que é (geralmente) essencial para a inicialização do HDD ou USB, e também (geralmente) não possuem um registro mestre de inicialização, também conhecido como MBR, que é essencial para a inicialização do BIOS.Isso significa que, se você fizer uma cópia 1:1 de um ISO normal , como o do Windows, em um disco e tentar inicializar, isso é o que vai acontecer:
0x55
0xAA
sequência nos últimos 2 bytes do MBR que indica que um disco é inicializável pelo BIOS. Portanto, não será possível inicializar esse disco no modo BIOS.UDF
ouISO9660
particionará de um disco ou mídia de unidade flash, porque, mesmo que tenha drivers para esses sistemas de arquivos, o disco resultante que você criou não terá uma tabela de partiçõesMBR
ou .GPT
Ao inicializar um disco normal, o UEFI é projetado para primeiro procurar uma partição e, em seguida, procurar um gerenciador de inicialização (por exemplo/efi/boot/bootx64.efi
, ) nessa partição. Portanto, se não houverMBR
ouGPT
tabela de partição na mídia, o que será o caso de um ISO regular , não importa se o ISO contém um arquivo bootloader, porque o firmware UEFI não será capaz de montar a partição em que reside sobre.Portanto, o que utilitários como o Rufus fazem ao criar uma mídia de disco inicializável a partir de um ISO do Windows, que é uma imagem de mídia óptica completamente padrão, é:
MBR
ouGPT
de acordo com o que o usuário selecionou, e crie pelo menos uma partição, que normalmente usaráFAT32
ouNTFS
como sistema de arquivos (observe que ela usa sistemas de arquivos completamente diferentes dos que um ISO usa).MBR
for usado, um bit de código noMBR
que localiza o carregador de inicialização secundário, naMBR
partição relevante, que é projetado para iniciar a execução do kernel do Windows, em modo de disco, a partir dessa partição. Ah, e também garante que o0x55
0xAA
marcador de inicialização seja adicionado no final doMBR
para que o BIOS veja o disco como inicializável. Em seguida, ele também copia o conteúdo do ISO em uma partiçãoFAT32
ou .NTFS
GPT
for usado, o Rufus verifica se realmente existe um arquivo de bootloader UEFI, como/efi/boot/bootx64.efi
(bem, na verdade ele faz isso antes de você, ele permite que você selecione GPT, porque não há muito sentido em tentar criar uma unidade inicializável GPT se não houver UEFI bootloader) e, em seguida, copia-o, junto com o restante dos arquivos ISO, normalmente em umaFAT32
partição, já que inicializar a partir de umaFAT32
partição é um requisito obrigatório do UEFI (mas isso não significa que o UEFI não possa inicializarNTFS
ouexFAT
se você tiver o drivers UEFI relevantes, que podem ser úteis se você tiver um ISO do Windows com um arquivo maior que 4 GB, pois o FAT32 não pode acomodar esses arquivos).Agora, o acima só funciona quando os carregadores de inicialização secundários (ou seja, aqueles que vêm do Windows e que o Rufus não modifica) são projetados para oferecer suporte à inicialização óptica e regular, o que normalmente significa que eles precisam lidar com sistemas de arquivos
UDF
ouISO9660
eFAT32
ou ,NTFS
bem como as outras diferenças que se apresentam ao inicializar do disco versus do óptico. Mas a Microsoft projetou seu gerenciador de inicialização precisamente para isso, o que é a coisa inteligente a fazer , porque, se o seu sistema de destino é UEFI, isso significa você (geralmente, desde que o problema de tamanho máximo de arquivo de 4 GBFAT32
não mostre sua cabeça feia ) não precisa de um utilitário para converter um ISO em um USB inicializável, mas você pode simplesmente formatar esse USB para FAT32 e copiar os arquivos ISO nele (cópia de arquivo,não cópia de byte) e você tem uma mídia inicializável.E agora que passamos por tudo o que foi dito acima, posso fazer um discurso retórico e explicar por que acredito que os mantenedores da distribuição Linux, que geralmente são mais espertos do que isso, estão na verdade prestando um péssimo serviço aos usuários, mesmo quando estão tentando para ajudá-los:
Quase todas as distros recentes do Linux usam um MAJOR HACK chamado "IsoHybrid", onde alguém conseguiu descobrir uma maneira de fazer uma
ISO9660
imagem óptica mascarada como uma imagem de disco normal, com uma tabela de partições, umMBR
e tudo ... Em outras palavras, a maioria Os ISOs do Linux que você encontra hoje em dia estão abusando do sistema de arquivos ISO9660 para torná-lo algo que nunca foi projetado para se parecer: um disco duplo e uma imagem óptica.Obviamente, o objetivo é criar um ISO que também possa ser usado com o
dd
comando, mesmo que um ISO nunca possa funcionar dessa forma. E concordo que, em teoria, isso soa incrível, porque poder usar uma única imagem para usos completamente diferentes deve ser ótimo para os usuários, mas, na prática, isso leva a problemas que muitas vezes são esquecidos:ext
como sistema de arquivos "secundário" em cima deISO9660
), o que significa que muitas pessoas do Windows, que estão criando uma unidade inicializável para usar o Linux pela primeira vez, ficam superconfusos sobre o motivo pelo qual não podem mais acessar o conteúdo de sua unidade flash. É ainda pior se o "IsoHybrid" também incluir uma partição de sistema EFI (ESP), porque esses usuários têm a impressão de que sua unidade diminuiu completamente de tamanho. Se você for no reddit ou em outro lugar, você encontrará muitas postagens de usuários que estão totalmente confusos sobre o que aconteceu com sua mídia USB, o que não é uma boa primeira impressão no Linux ...FAT32
partição formatada, que, na verdade, sempre deve ser o método preferido de criar unidades inicializáveis UEFI (porque geralmente é muito menos arriscado formatar uma partição e copiar arquivos do que usar odd
comando). Por causa disso, vimos vários problemas que contribuem para uma experiência de usuário inferior com Manjaro, Ubuntu ... Este é realmente meu principal ponto de discórdia com "ISOHybrid": não deve servir como desculpa para abandonar os meios estabelecidos de criando mídia inicializável!dd
... o que na verdade leva a um BSOD no Windows 7 (mas isso é realmente um bug do Windows e não um problema ISOHybrid). Ainda assim, não é a melhor experiência para o pessoal do Windows criando unidades inicializáveis...dd
, quando é a exceção , em vez do que a regra. Isso é muito lamentável, porque cria TONELADAS de confusão do usuário, com alguns usuários do Linux dizendo às pessoas que desejam criar mídia inicializável do Windows que eles deveriam poder usardd
quando isso certamente nunca funcionará! Além disso, se você escolher qualquer ISO do Linux de 10 anos atrás, estou bastante confiante de que descobrirá que quase nenhum deles pode realmente ser usado para criar uma mídia inicializável,dd
porque essa coisa "IsoHybrid" é realmente um desenvolvimento recente.Tanto quanto eu sei, a Microsoft não tem planos de mudar para o "hack" que é ISOHybrid para seus ISOs do Windows, o que significa que é improvável que você consiga
dd
criar uma mídia USB inicializável a partir dele e, portanto, se você deseja criar uma mídia inicializável do Windows a partir de um ISO, você pode:NTFS
,FAT32
e mais recentemente ) e extrair os arquivosexFAT
ISO para ele. Agora, se estiver usando ou , você pode ter que fazer um pouco de trabalho extra também ...NTFS
exFAT
NTFS
ouFAT32
--exFAT
não funcionará porque a Microsoft nunca publicou bootloaders de BIOS para ele) e, em seguida, crie a cadeia de bootloader relevante, do código de inicialização MBR ao volume registros de inicialização.Na verdade, não é tão complicado de conseguir, mas dá um pouco mais de trabalho do que uma cópia 1:1 de um arquivo ISO.
Espero que responda à sua pergunta.
dd
não é a ferramenta certa para criar um USB inicializável do Windows. A maneira mais fácil é usarwoeusb
.Instalar:
Agora, a versão do pacote é
3.3.1
, no caso de atualização do pacote, o comando./setup-development-environment.bash
imprimirá a versão atual, você deve substituí-la nos comandos acima.Uso:
Você pode usar a GUI, executada
woeusbgui
no terminal. Ou você pode usar a CLI:Desmonte o dispositivo USB (importante). Então corra:
Usei os insights aqui como motivação para encontrar uma maneira de criar uma unidade USB inicializável do Windows Server 2019 a partir do Mac OS . O problema é que você precisa de um disco formatado GPT como FAT32 e há limitações em torno do tamanho máximo de arquivo de 4 GB que você precisa contornar usando a
wimlib-imagex
extensão. Originalmente , tentei usardd
o utilitário - mas rapidamente percebi que o formato do disco não poderia ser usado para a inicialização do WinOS.Criar disco inicializável do Windows Server 2019 no MacOS