Usando o comando 'dd' para criar um dispositivo USB inicializável

11

Por que imagens ISO de alguns tipos de Ubuntu podem ser colocadas no pendrive USB pelo comando dd e inicializadas com sucesso, enquanto outras não? Além disso, parece que também depende de um dispositivo USB específico. Eu tentei com o Ubuntu padrão:

$ sudo dd if=./ubuntu.iso of=/dev/sdd bs=8129

E funciona como charme, quero dizer: inicialize e instale ou execute o Ubuntu ao vivo. Mas quando eu uso outro pendrive preparado da mesma maneira, ele falha ao inicializar com o erro do BIOS do sistema operacional não encontrado .

Quando tento o Ubuntu GNOME, ele simplesmente não inicializa com o mesmo erro do exemplo anterior, independentemente de qual pen drive eu uso.

Eu sei que existe um aplicativo Startup Disk Creator no Ubuntu, mas estou convencido de que é apenas uma fachada da GUI para um simples comando dd e sempre posso usar o dd para criar um dispositivo USB inicializável, pelo menos para o Linux. Estou errado?


fonte
Eu pessoalmente uso o Unetbootin e nunca tive problemas.
Tim

Respostas:

5

Se você executar o Startup Disk Creator, perceberá que ele faz três (quatro) coisas:

  1. Formate a unidade
  2. Copie os dados do ISO para a unidade
  3. (Adicione um arquivo extra casper 1 para persistência, se selecionado. ddNão fornece persistência.)
  4. Instale um carregador de inicialização

Não é uma GUI para dd(existem GUIs para dd, mas o SDC não é um deles). Você pode pensar nisso como equivalente aos métodos manuais do Arch Linux ou Gentoo . Você deve ser capaz de criar um USB inicializável usando a maioria dos ISOs de instalação das distros (razoavelmente populares) atualmente. Isso não era verdade cerca de três ou quatro anos atrás, quando olhei para Arch. Somente em 2010, todos os ISOs da Arch ganharam esse recurso (onde era possível gravá-lo diretamente em um drive USB) - de 2008 a 2010, eles tiveram imagens USB especiais.

Além disso, se você ddpossui uma unidade diretamente, ela é efetivamente somente leitura até você formatá-la ou usar o espaço restante de alguma forma. Um disco criado por SCD ainda é utilizável como uma unidade USB, mesmo que o conteúdo não seja acessível a partir do ambiente ao vivo com facilidade. Portanto, se você ddusa um ISO de 1 GB para uma unidade USB de 8 ou 16 GB, está abandonando efetivamente o espaço restante, a menos que sejam tomadas medidas extras.


1 Normalmente, a maioria das imagens ao vivo usa um arquivo SquashFS para a partição raiz . O SquashFS é somente leitura, portanto, para persistência, um casper-rwarquivo é criado no /casper. Não tenho certeza das origens de casper. Pelo que entendi, quando inicializado com a boot=casperopção, o kernel sobrepõe o arquivo casper (criando um se não existir) na parte superior dos squashfs, para que ele ganhe capacidade de gravação. caspernão precisa ser um arquivo, também pode ser uma partição .

muru
fonte
O que é "arquivo casper"? Por favor explique.
@ MikołajBartnicki Eu não tenho muita certeza, mas atualizei a resposta.
Muru
Casper é um fantasma (que todos vocês conhecem). Como você disse, sobrepõe algumas pastas no sistema de arquivos ro. Examinar o sistema de arquivos a partir de uma imagem ao vivo em execução com persistência ativada mostra alguns diretórios 'superior' e 'inferior' existentes nos sistemas de leitura e gravação, mas aparecem como um no sistema em execução, um pouco semelhante a uma montagem sobre um já pasta existente
oneindelijk
2

tente primeiro:

su -c 'mkfs.vfat /dev/sdc -I'

Para criar um disco usb inicializável a partir do arquivo iso usando o comando dd , o disco não pode ter partições como / dev / sdc1 (uma das quatro partições principais possíveis do disco / dev / sdc ). Você não pode clonar blocos de arquivo iso na partição primária, pois o dvd ou o CD não o possui também. É por isso que você precisa criar um sistema de arquivos exatamente no disco / dev / sdc , não na partição primária.

Além disso, você cometeu alguns erros digitando o comando dd .

Tente o seguinte:

su -c 'dd if=/home/user/debian.iso of=/dev/sdc bs=4M;sync;eject /dev/sdc'

seu comando não é corrigido sem o mkfs.vfat primeiro. pode ser se você instalar o gerenciador de inicialização também e ativar a partição. Outras unidades USB não funcionam, talvez porque sua porta USB pode ser compartilhada com outra porta USB ou você não tem energia para trabalhar com o sistema operacional USB ao vivo, provavelmente trabalhando com unidade de disco rígido e outro disco USB que precise de mais energia do que o habitual. Do que o consumo médio de energia desse tipo de dispositivo (como discos HDD no caso externo com USB do adaptador SATA)

gr8b8
fonte
2

Você pode até criar um dispositivo USB inicializável com cp(parece muito mais direto para mim do que ddou uma GUI):

sudo cp path/to/ISO /dev/sdX


Lembre-se de que /dev/sdXdeve ser substituído pelo nome do seu dispositivo de bloqueio (por exemplo /dev/sdb, /dev/sdc).

Luis Lavaire
fonte
1
Isso foi realmente novo para mim. Juntamente com progress unix.stackexchange.com/a/301329/87264, também mostra progresso
Jonas Eberle