Por que 'dd' não funciona para criar USB inicializável?


36

Recentemente, eu queria criar um USB inicializável do Linux mint. Descobri que havia muitos conselhos / experiências conflitantes sobre se o comando 'dd' poderia ser usado para criar um USB inicializável. Eu decidi baixar um ISO e tentar. Enquanto o dd definitivamente colocou a imagem no pen drive, não foi inicializável. Então, minha pergunta é: qual é o ingrediente mágico que fará com que isso funcione ou por que essa abordagem persistiu se não funcionar?

Este é o comando que eu usei,

dd if=/mint/iso/image of=/dev/sdb1 oflag=direct 

@sawdust enquanto você estiver afirmando que as respostas postadas não são aplicáveis, este artigo ( community.linuxmint.com/tutorial/view/744 ) indica que este é o procedimento correto.
Dave G

1
@DaveG - Interessante, aparentemente 'dd' é um comando utilizável se o arquivo de origem for uma "Imagem ISO Híbrida". Mas não é um procedimento genérico para cada iso . Talvez essa distinção seja a razão do conselho conflitante encontrado por jdowner.
serradura

@sawdust obrigado pelo esclarecimento adicional sobre isso.
Dave G

Você pode ter um sistema em um stick que deve ser usado em um sistema de inicialização EFI - mas sua máquina está configurada para usar a inicialização "clássica". Então, visto com um pendrive Linux Mint USB.
David Tonhofer 8/08/16

Aqui está uma solução simples / genial para imagens ISO recalcitrantes (com base no Ubuntu Live ISO): 1) Formate stick para que exista um sistema de arquivos em (digamos) "/ dev / sdX1", 2) Monte o stick como "/ mnt / usb "por exemplo, 3) Instale o grub2 no stick grub2-install --boot-directory /mnt/usb/boot/ /dev/sdX:, 4) Copie a imagem ISO baixada anteriormente (por exemplo" foolinux.iso ") para o stick: cp foolinux.iso /mnt/usb/5) Crie o arquivo" /mnt/usb/boot/grub2/grub.cfg "que linux inicializar a partir da imagem presente ISO na vara (cont)
David Tonhofer

Respostas:


32

Você está gravando a imagem na partição 1 de / dev / sdb

Mude para o seguinte comando:

dd if=/mint/iso/image of=/dev/sdb oflag=direct

esta informação foi adquirida a partir daqui


2
Estou fazendo: sudo dd if =. / Debian-8.4.0-powerpc-DVD-1.iso de = / dev / rdisk3 bs = 1m e não é inicializável, tem alguma idéia?
Yusufk

Gostaria de rdisk3 uma partição ou um disco bruto? Você está tentando gravar a imagem em uma partição específica
Dave G

1
eu estou fazendo / dev / sdb e ainda não é inicializável
holms

O rdisk3 é o terceiro disco em um Mac Afaik. Eu tenho o mesmo problema que o Yusufk. Precisa verificar se está relacionado à UEFI.
gavit

11

Você copiou a imagem para a primeira partição. Tente copiar para / dev / sdb em vez de / dev / sdb1.

O mecanismo real varia um pouco, dependendo do tipo de imagem que você está usando, mas para imagens simples de DOS / MBR, é necessário obter uma tabela de partição correta (com a partição inicializável marcada como inicializável e o MBR - a parte do 512 bytes iniciais que não são a tabela de partição - contendo o código de inicialização inicial.


Eu gostaria de observar que, em vez de tentar copiar todo o ISO novamente para outra partição, basta definir o sinalizador de inicialização na partição que você copiou originalmente a imagem também pode ser suficiente (como sugerido nesta resposta)
GrayedFox

2

Pela minha experiência com outra distribuição Linux, tudo o que você precisa fazer é alterar o arquivo do carregador de inicialização syslinux e modificá-lo para inicializar o USB. Há informações mais detalhadas sobre isso no wiki do syslinux .

Veja também esta pesquisa no Google .


1

Você pode precisar ter um BPB gravado no seu carregador de inicialização. Veja a publicação de Dex no dia 24 de abril de 2009 às 9:06 em http://f.osdev.org/viewtopic.php?f=1&t=19681

A essência é que "se [o seu firmware usb] usar emulação de disquete e você não tiver um BPB, ele NÃO inicializará"

Armado com esse conselho, consegui resolver esse problema. Eu uso o linux, então meu comando dd foi:

sudo dd bs=512 count=2880 if=IMG.bin of=/dev/sdb

Você deseja substituir o sdb pelo seu dispositivo USB. Você pode encontrá-lo executando

ls -l /dev/ | grep sd

antes e depois de inserir seu usb enquanto o linux estiver em execução. Se você obtiver, por exemplo, sdb1 e sdb, escolha a opção não indexada.


0

Você se certificou de que sua placa-mãe esteja configurada para inicializar a partir do dispositivo USB antes de tentar inicializar a partir do seu HDD? Eu acho que esse pode ser o seu único problema - não há muito o que usar ddcomo você pode ver.


1
Esse era um problema em que eu pensava, principalmente porque estava trabalhando em um computador antigo. Portanto, quando não funcionou na minha máquina de destino, defino a ordem de inicialização no laptop da minha esposa (shh, não conte a ela) e ela também não foi inicializada.

0

Eu também encontrei esse problema algumas vezes.

O que descobri que funciona para mim na maior parte do tempo é preencher primeiro a unidade com zero.

  1. Altere X para sua letra ou número de unidade, para encontrá-lo:

    • Mac: diskutil list
    • Linux: lsblk
  2. Preencher com zero a unidade

    • Mac: dd if=/dev/zero of=/dev/rdiskX bs=4m
    • Linux: dd if=/dev/zero of=/dev/sdX bs=4M
  3. dd sua imagem novamente

(Tamanhos de bloco de 4meg parecem ser os mais rápidos)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.