AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1527197
Accepted
skaai
skaai
Asked: 2020-02-22 03:50:22 +0800 CST2020-02-22 03:50:22 +0800 CST 2020-02-22 03:50:22 +0800 CST

Debian: criando uma unidade USB de instalação inicializável do Windows 10 usando o terminal (dd)

  • 772

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:

  1. por que não está funcionando? O que estou fazendo errado?
  2. por que o dd está destruindo as partições, mas parece funcionar bem com o gparted?
  3. 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!

linux debian
  • 3 3 respostas
  • 11584 Views

3 respostas

  • Voted
  1. Best Answer
    Akeo
    2020-02-22T15:07:55+08:002020-02-22T15:07:55+08:00

    Eu quero entender o que está acontecendo

    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 ( ISO9660ou UDF) 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:

    • Um sistema BIOS ou sistema UEFI no modo Legacy/CSM não verá nenhum MBR e, especialmente, não verá a 0x55 0xAAsequê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.
    • Um sistema UEFI (normalmente) não montará UDFou ISO9660particionará 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ções MBRou . GPTAo 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 houver MBRou GPTtabela 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, é:

    • Crie uma tabela de partição, MBRou GPTde acordo com o que o usuário selecionou, e crie pelo menos uma partição, que normalmente usará FAT32ou NTFScomo sistema de arquivos (observe que ela usa sistemas de arquivos completamente diferentes dos que um ISO usa).
    • Se MBRfor usado, um bit de código no MBRque localiza o carregador de inicialização secundário, na MBRpartiçã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 o 0x55 0xAAmarcador de inicialização seja adicionado no final do MBRpara que o BIOS veja o disco como inicializável. Em seguida, ele também copia o conteúdo do ISO em uma partição FAT32ou .NTFS
    • Se GPTfor 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 uma FAT32partição, já que inicializar a partir de uma FAT32partição é um requisito obrigatório do UEFI (mas isso não significa que o UEFI não possa inicializar NTFSou exFATse 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 UDFou ISO9660e FAT32ou , NTFSbem 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 GB FAT32nã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 ISO9660imagem óptica mascarada como uma imagem de disco normal, com uma tabela de partições, um MBRe 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 ddcomando, 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:

    • Muitos mantenedores de distribuição Linux não querem se preocupar em usar um sistema de arquivos secundário que o Windows pode montar (por exemplo, eles usarão extcomo sistema de arquivos "secundário" em cima de ISO9660), 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 ...
    • Como muitos mantenedores de distribuição Linux se concentram tanto em fazer o ISOHybrid funcionar, desconsideram completamente a opção de criar uma mídia inicializável UEFI simplesmente copiando o conteúdo para uma FAT32partiçã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 o ddcomando). 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!
    • GPT e "ISOHybrid" podem ser problemáticos porque a tabela GPT secundária será vista como corrompida ao usar 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...
    • E, finalmente, como os "ISOhybrids" são apresentados como se fossem a mídia mais natural do mundo (o que certamente não são), pessoas como você são levadas a acreditar que toda imagem ISO pode ser aplicada usando 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 usar ddquando 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, ddporque 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 ddcriar 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:

    • (UEFI) Precisa formatar uma unidade com um sistema de arquivos do qual o Windows pode inicializar ( NTFS, FAT32e 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 ...NTFSexFAT
    • (BIOS/Legacy) Precisa formatar uma unidade com um sistema de arquivos do qual o Windows possa inicializar ( NTFSou FAT32-- exFATnã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.

    • 27
  2. GAD3R
    2020-02-22T07:22:13+08:002020-02-22T07:22:13+08:00

    ddnão é a ferramenta certa para criar um USB inicializável do Windows. A maneira mais fácil é usar woeusb.

    Instalar:

    sudo apt-get install devscripts equivs gdebi-core
    cd WoeUSB
    ./setup-development-environment.bash
    mk-build-deps
    sudo gdebi woeusb-build-deps_3.3.1_all.deb
    dpkg-buildpackage -uc -b
    sudo gdebi ../woeusb_3.3.1_amd64.deb
    

    Agora, a versão do pacote é 3.3.1, no caso de atualização do pacote, o comando ./setup-development-environment.bashimprimirá a versão atual, você deve substituí-la nos comandos acima.

    Uso:

    Você pode usar a GUI, executada woeusbguino terminal. Ou você pode usar a CLI:

    Desmonte o dispositivo USB (importante). Então corra:

    sudo woeusb -v --device /path/to/windows.iso /dev/sdc
    
    • 3
  3. SliverNinja - MSFT
    2020-10-07T15:19:32+08:002020-10-07T15:19:32+08:00

    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-imagexextensão. Originalmente , tentei usar ddo 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

    brew install wimlib 
    diskutil list 
    diskutil eraseDisk MS-DOS "WIN2K19" GPT /dev/disk2 
    hdiutil mount en_windows_server_2019_updated_sep_2020_x64_dvd_2d6f25f2.iso 
    rsync -vha --exclude=sources/install.wim "/Volumes/SSS_X64FREV_EN-US_DV9\ 1" /Volumes/WIN2K19 
    wimlib-imagex split "/Volumes/SSS_X64FREV_EN-US_DV9 1/sources/install.wim" /Volumes/WIN2K19/sources/install.swm 4000
    diskutil eject /dev/disk2 
    diskutil eject /dev/disk3
    
    • 0

relate perguntas

  • Como eu faria minha máquina Linux parecer que está executando o Windows?

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve