Como criar uma unidade flash USB inicializável no Ubuntu a partir do terminal?


353

Existe alguma maneira de criar uma unidade flash USB inicializável do Ubuntu a partir do terminal sem usar aplicativos de terceiros como YUMI , Unetbootin , Startup Disk Creator , etc.

Eu tentei criar uma unidade flash inicializável do Ubuntu com o ddmétodo

sudo umount /dev/sdb
sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M

Ele cria arquivos no disco USB, mas quando tento inicializar o disco USB, ele mostra um Operating System Not Founderro.


Você precisa garantir que sua unidade flash USB NÃO esteja montada. Verifique com lsblk. Se necessário, faça sudo umount / dev / sdb (provavelmente sdb1, sdb2). Adicionar; echo $? após o seu comando dd copy. Então: sudo dd se = ... de = ... bs = 4M; eco $? Se o commandd terminar, o valor retornado deverá ser 0.

Eu segui suas etapas, mas ele também cria os mesmos arquivos que o sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mcreate.It não cria nenhum ubninit,ldlinux.sys,etcarquivo que é principalmente importante para o boot do Linux.
— precisa

Eu instalaria o grub no MBR do disco USB como uma etapa final.
— Elder Geek

2
A maneira mais fácil com as ferramentas internas que usam o terminal é usar ddcomo descrito aqui. Funciona com todos os arquivos iso híbridos. Mas ddé uma ferramenta perigosa porque faz o que você pede para fazer sem perguntas. Portanto, se você disser para apagar as fotos da família ... e houver um pequeno erro de digitação. Muitas ferramentas são mais seguras. Eles ajudam você a identificar e selecionar a unidade de destino e fornecem um ponto de verificação final , onde você pode verificar novamente, se estará gravando na unidade correta. A maioria destas são ferramentas da GUI, algumas também podem funcionar em modo de texto, por exemplo mkusb-dus.
— sudodus 26/03

1
O link a seguir mostra um exemplo em que a unidade interna foi substituída por engano, quando uma linha de comando ddfoi usada para criar uma unidade flash USB inicializável do Ubuntu, askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
— sudodus

Respostas:


431

Você pode usar dd.

 sudo umount /dev/sd<?><?>  

onde <?><?>houver uma letra seguida de um número, procure-a executando lsblk.

Será algo como

sdb      8:16   1  14.9G  0 disk 
├─sdb1   8:17   1   1.6G  0 part /media/username/usb volume name
└─sdb2   8:18   1   2.4M  0 part 

Eu desmontaria sdb1.

Em seguida, a seguir (este é um comando destrutivo e limpa toda a unidade USB com o conteúdo do iso, tenha cuidado):

 sudo dd bs=4M if=path/to/input.iso of=/dev/sd<?> conv=fdatasync  status=progress

onde input.isoestá o arquivo de entrada e /dev/sd<?>o dispositivo USB no qual você está gravando (execute lsblkpara ver todas as unidades para descobrir o que <?>é o seu USB).

Este método é rápido e nunca me falhou.


EDIT: para aqueles em um Mac que acabam aqui, use letras minúsculas para bs=4m:

sudo dd if=inputfile.img of=/dev/disk<?> bs=4m && sync

EDIT: Se a unidade USB não inicializar (isso aconteceu comigo), é porque o destino é uma partição específica na unidade, e não na unidade. Portanto, o destino precisa ser / dev / sdc e não dev / sdc. <?>Para mim, era / dev / sdb.

Referência: https://superuser.com/a/407327 e https://askubuntu.com/a/579615/669976


13
isso não funciona para mim.
— precisa

7
Realmente? Você tem certeza de que possui o nome de arquivo .iso correto, incluindo o caminho, e o / dev correto para a sua unidade USB? Como isso falha? Há uma mensagem de erro ou apenas falha ao inicializar? Tem certeza de que o .iso não está corrompido?
— Marc

8
Você pode ter um .iso corrompido. Você já conferiu? Tem a certeza de que o .iso é realmente uma cópia de algo que é inicializável?
— Marc

5
A pergunta original e a resposta mais votada é a mesma pessoa que disse que esse método não está funcionando para ele. ;-) Para mim, a resposta aprovada não está funcionando e esta funciona. :-) Voto a favor.
— Drachenfels 22/03

20
Adicionar um status=progressà linha de comando também é útil para ver quanto resta da cópia superior.
— Supernormal

101

Você está quase lá dd, mas está perdendo um passo.

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdX bs=4M && sync

onde sdXestá o seu dispositivo USB (isso pode ser verificado com lsblk).

O syncbit é importante, pois ddpode retornar antes que a operação de gravação seja concluída.


17
+1 por mencionar sync. Sem ele, você não tem idéia se o conteúdo foi realmente copiado. Além disso, se você não estiver com pressa, os md5sumdois arquivos devem ter apenas uma certeza dupla.
— Dave

4
Talvez valha a pena mencionar o USB talvez precise ser (re) formatado como FAT32 sudo mkfs.msdos -F 32 /dev/sdXprimeiro?
— Nemo

10
@ Nemo, é possível que isso faça a diferença? ddpara / dev / sdX substituirá qualquer sistema de arquivos existente.
— Mwfearnley 8/16

5
syncé inútil aqui. Isso afeta apenas as operações do sistema de arquivos.
— 19616 punund

3
conv=fdatasync- gravar fisicamente os dados do arquivo de saída antes de terminar deve cuidar da sincronização, mas é bom garantir que o dispositivo seja desmontado primeiro.
— precisa

98

Criando uma unidade flash USB inicializável do Ubuntu a partir do terminal

  • Coloque o ubuntu.isoarquivo em qualquer partição do disco rígido.

  • Em seguida, monte o ubuntu.isoarquivo com os comandos abaixo no terminal:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Insira sua unidade flash USB. Minha unidade é /dev/sdd. Aqui está uma captura de tela:

Captura de tela do GParted

  • Sua unidade pode ser montada automaticamente no interior /media/. Vamos supor que foi montado /media/xxx/.

  • Copie todos os arquivos da /media/iso/sua unidade flash USB montada executando o comando abaixo (certifique-se de incluir o ponto):

    cp -a /media/iso/. /media/xxx/
    
  • Em seguida, você precisa do ldlinux.sysarquivo na sua unidade flash USB para tornar o USB inicializável . Minha partição USB é /dev/sdd1; entre lsblkpara ver o que é seu. Execute os comandos abaixo:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Navegue para a /media/xxxpasta mount e renomeie o isolinuxdiretório para syslinux. Em seguida, vá para a pasta renomeada e renomeie o arquivo isolinux.cfgpara syslinux.cfg.

  • Reinicie o seu PC e altere a ordem de inicialização do BIOS para permitir a inicialização a partir de uma unidade USB. Agora sua unidade flash USB Ubuntu será inicializada e você poderá instalá-la.

Este método funcionará para qualquer distribuição Linux, não apenas para o Ubuntu. Você não precisa instalar nenhum software de terceiros para criar uma unidade flash USB do Linux .


3
Eu estou tentando isso no momento, você poderia especificar o que / porque você usa: cp -a em vez de cp -r
— moldovean

2
Você precisa sudodo syslinuxcomando.
— Cammy_the_block #

9
Este método não funcionou para mim. O cp -a fornece: 'cp: não é possível criar um link simbólico' /media/xxx/./ubuntu ': Operação não permitida' e outras similares, uma vez que o destino é fat32. Eu tentei ignorar que ... não funcionou #
— 305

6
Importante notar que o USB deve ser um sistema de arquivos FAT32, caso contrário syslinux não vai funcionar
— Ricardo BRGWeb

2
O console me mostra o mesmo erro que o @ sheß. Eu verifiquei o sistema de arquivos (FAT32) e sinalizei BOOT.
— precisa saber é o seguinte

40

Você tem duas escolhas.

Se você deseja uma interface gráfica, use o usb-creator (está nos repositórios do ubuntu)

insira a descrição da imagem aqui

Se você deseja uma ferramenta de linha de comando, use dd

#Replace X accordingly in both commands

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdbX bs=1M

Apenas certifique-se de que /dev/sdXé a unidade flash que você deseja usar (ela destruirá os dados na unidade flash).

Veja https://help.ubuntu.com/community/Installation/FromUSBStick para obter informações adicionais.


1
eu quero apenas ferramentas de linha de comando, não ferramenta gui (como inicialização criador disco) .De acordo com o ddmétodo, apenas 3 pastas e 1 arquivo foi criado na minha usb.While i tentar arrancar diz operating system not founderror.Files como ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sysestão faltando (que são muito importante para inicializar o ubuntu usb ao vivo).
— Avinash Raj

1
Eu tentei o método dd com o ubuntu.iso e funcionou! muito tempo, no entanto, para ser escrito em um USB. Eu me pergunto o que bs = 1M significa. Encontrei este site manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Agora eu me pergunto se alterar o valor fará com que copiar para o USB seja mais rápido? E quais são os riscos .. talvez alguém saiba.
— moldovean

4
O bs é o tamanho do bloco. O dd lerá 1 MB de dados na memória e depois continuará a gravá-los no disco como um todo. Usando um tamanho de bloco muito pequeno, você terá muita sobrecarga da CPU. O uso de um tamanho de bloco muito grande pode resultar em efeitos colaterais inesperados, por exemplo, pausas mais longas sem atividade de disco e / ou grande uso de RAM. 1M ou 4M geralmente é um bom valor ao criar um disco a partir de uma ISO. Mais informações sobre tamanhos de bloco: stackoverflow.com/questions/6161823/…
— ApolloLV 11/11

Eu acho que fazer um usb inicializável é algo que faço com pouca frequência, mas quando faço isso, quero que seja feito corretamente. Um tamanho de bloco menor pode levar mais tempo, mas isso é um problema? Não.
— Marc

2
@ Marc - O único problema é a velocidade, um tamanho de bloco menor não é mais ou menos propenso a erros, em seguida, um tamanho de bloco maior e, portanto, um tamanho de bloco menor! = "Feito corretamente". Feito corretamente, significa verificar o md5sum do iso e confirmar o md5sum da imagem escrita. Depois de confirmar os m5dsums, você sabe que foi feito corretamente.
— Pantera

28

Primeiro, desmonte o dispositivo USB e use-o lsblkpara verificar o dispositivo.

Às vezes (arquivos iso geralmente mais antigos), o dd não é suficiente e o pendrive não inicializa. Nesse caso, você pode precisar instalar o syslinux:

sudo apt-get install syslinux

e, em seguida, execute os seguintes comandos:

sudo mkfs -t vfat -I /dev/sdX

Você deseja executar esse último comando para /dev/sdXe não /dev/sdX1 .

Em seguida, continue com os seguintes comandos:

isohybrid /path/to/file.iso --entry 4 --type 0x1c
dd if='/path/to/file.iso' of=/dev/sdX bs=8M

ou, para ver o progresso da gravação da imagem:

pv -tpreb /path/to/file.iso | dd of=/dev/sdX bs=8M

ou, em vez de dd, você pode usar cat:

sudo -s
cat /path/to/file.iso > /dev/sdX

Lembre-se de emitir o comando sync para liberar o cache de gravação

sync

web.archive.org/web/20140327085331/https://tails.boum.org/doc/first_steps/installation/manual/linux/index.en.html


Eu preciso mencionar que, para mim, todo o resto falhou, mas isso funcionou - optei pelo catcomando.
— Digital Dracula

Para aqueles que insistem que ddbasta, eu também precisava disso para funcionar.
— GuiRitter #

Se você quiser uma ferramenta que use ddquando o ISO for híbrido e monte, copie o arquivo ISO e instale o SYSLINUX quando o ISO não for, use-o bootiso.
— Jules Randolph

1
Você pode explicar o que cada um desses comandos realmente faz? qual é o objetivo de criar um sistema de arquivos vfat no dispositivo e depois substituí-lo imediatamente pelo conteúdo do arquivo iso? O que isohybridrealmente faz? isso modifica o ISO de alguma forma?
— Cheshirekow #

10

Se por "terceiro" você quer dizer "gui", sugiro um script leve chamado bootiso após a resposta Avinash Raj , porque ddnem sempre funciona. A grande vantagem é que é muito seguro (executa muitas verificações de segurança para não mexer com o sistema), fácil de instalar e portátil.

Além disso, bootisoinspecionará o arquivo ISO para escolher entre dois modos: image-copy ( dd) quando o arquivo ISO for híbrido, compatível com USB. E o modo mount-rsync quando o arquivo ISO não é híbrido; nesse caso, um carregador de inicialização SYSLINUX será instalado automaticamente se suportado [ mais detalhes sobre o comportamento automático ].

Como usá-lo

Primeira opção, basta fornecer o ISO como primeiro argumento e você será solicitado a selecionar uma unidade em uma lista extraída de lsblk:

bootiso myfile.iso

Ou forneça explicitamente o dispositivo USB:

bootiso -d /dev/sde myfile.iso

Instalação rápida

curl -L https://git.io/bootiso -O
chmod +x bootiso

Veja em ação:


1
Eu concordo, este é um script muito bom que tira os pedaços assustadores do processo. Mais detalhes aqui: tecmint.com/create-bootable-usb-in-linux-commandline
— kr37

Ele ainda suporta o Windows 10 de outubro de 2018, pois suporta "wim splitting" o arquivo "install.wim" (usando o comando "wimlib-imagex") que é> 4Gb e não pode ser armazenado no FAT32.
— mevdschee 20/02

7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Não use o caminho para bits.

  1. Use o cdcomando para chegar à pasta que contém o arquivo .iso
  2. use o comando dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Aguarde até a saída do console se parecer com isso:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Inicialize a partir do usb.

Nota: Certifique-se de escrever no dispositivo correto em que nem sempre um USB será montado: dev/sdXonde X pode ser qualquer letra.


2
qual é o significado de bs = 1MB no comando dd ???
— juggernauthk108

1
@ juggernaut1996 none. É o tamanho do bloco a ser usado ao copiar. Como nenhum argumento de contagem foi fornecido, ele copiará toda a entrada em blocos de 1 MB. Pode ser removido.
— sjbx

O "Não use o caminho para o bit" é uma desinformação. O processo em si não cria os componentes do caminho na imagem copiada em nenhuma etapa, portanto, é irrelevante se você navegar para o diretório que contém a imagem ISO ou apenas fornecer o caminho completo. Além disso, o dd também pode aceitar a entrada do stdin, então você pode simplesmente inserir dois dd um no outro para garantir que nenhum caminho seja inserido na imagem.
— Gabor Garami

Isso funcionará apenas para ISOs híbridos, que atendem a boa maioria dos casos hoje em dia, mas há exceções visíveis, como o UltimateBootCD. Use em bootisovez disso.
— Jules Randolph

-5

Tente isso e nunca mais falhou comigo por mais de 100 vezes:

Formate o cartão:

$ sudo mkfs.vfat -F32 /dev/sdx

Monte a imagem ISO:

$ sudo mount ubuntu.iso /mnt

Copie o conteúdo para o cartão:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Então:

  • renomear isolinuxpasta parasyslinux
  • renomeie syslinux/isolinux.cfgparasyslinux/syslinux.cfg
  • renomeie syslinux/isolinux.binparasyslinux/syslinux.bin
  • corre syslinux -s /dev/sdx

4
-1. Você ainda testou isso? sudo cp -rvf /mnt/* /dev/sdxnão funcionará (ou pelo menos não fará o que você pretende). Você não copia arquivos para um dispositivo bruto ( /dev/). Em vez disso, você deve montar o cartão e copiar o conteúdo do arquivo ISO para o cartão (ponto de montagem para ponto de montagem). E o que há de errado com a atual resposta aceita, que tem a mesma abordagem.
— gertvdijk
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.