2013-05-03 20:11:23 +0000 2013-05-03 20:11:23 +0000
50
50

Como criar um USB bootável a partir de uma ISO bootável com a linha de comando no Linux?

Tenho um CD que é criado a partir de um ficheiro ISO que utilizo para instalar uma versão personalizada do Ubuntu via plop linux.

O cd funciona bem mas eu gostaria de utilizar uma unidade USB de arranque. Usei o comando dd para tentar criar o USB de arranque:

dd if=filename.iso of=/dev/sdb1 bs=4k

Agora isto copia os ficheiros e torna o USB de arranque, mas recebo o erro “Missing operating system”

Alguma ideia?

Respostas (4)

58
58
58
2013-05-07 16:46:56 +0000

Ok, depois de alguma pesquisa, descobri uma solução, e passo a passo. O problema era duplo.

  1. ligar a unidade flash USB e determinar o dispositivo em que está montado com o comando:

  2. Montar o dispositivo

  3. Não tenho a certeza se necessário, mas formatei a unidade em FAT32, apenas no caso de

  4. Agora o meu ISO estava a utilizar o isolinux e não o syslinux. Eu sabia que funcionava com CDs, por isso descobri que precisava de chamar o comando isohybrid, que permite que um ISO seja reconhecido pela BIOS a partir de um disco rígido.

  5. O passo seguinte é copiar a iso. O meu segundo problema era aqui, onde eu estava a copiar para a partição, sdc1, e não para o dispositivo, sdc.

3
3
3
2013-05-03 20:25:22 +0000

Esta é uma questão comum com paus USB da SanDisk, ou paus não formatados em FAT32.

Se não for nenhum dos dois, é certamente um problema com a sua ordem de partição do stick ou com o ficheiro syslinux.cfg.

1
1
1
2016-01-20 13:42:39 +0000

isohybrid pode nem sempre funcionar. Por exemplo, eu tinha um .iso com FreeDOS e o isohybrid não foi capaz de encontrar lá alguns ficheiros importantes (não sei se deveriam ter sido colocados lá pelo syslinux, que eu também utilizei, ou qualquer outra coisa). Proponho várias alternativas aqui.

1) Instalar aí outro carregador de arranque, como o GRUB. É explicado aqui :

“Assuma que a primeira partição da sua pen USB é FAT32 e a sua partição é /dev/sdy1” (eu tinha grub2 no meu Fedora Core, por isso mudei um pouco os comandos):

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2) O wiki FreeDOS oferece um método composto com GRUB e syslinux aqui (embora não compreenda como lançaram grub> - não consegui arrancar do usb até essa fase).

3) Aqui é um post que pode ser útil - diz ‘Enquanto os ficheiros command.com, kernel.sys, syslinux.cfg, ldlinux.sys e fat32lba.bss estiverem na raiz da unidade e o MBR e o sector de arranque não forem reescritos, a unidade deve permanecer inicializável’.

4) Aqui explica-se como gerar um ficheiro .iso inicializável com um bootloader syslinux. Eles nem sequer usam isohybrid. Infelizmente, isso não me ajudou (talvez por causa do syslinux).

5*) Utilizar um programa windows via wine. Tentei o rufus, mas isso não funcionou, não conseguiu encontrar o dispositivo.

Aviso-o que infelizmente não consegui resolver este problema, o meu dispositivo não era inicializável, mas espero que possa ser útil para outras pessoas (também para aqueles que querem instalar não um linux no usb). A imagem do usb gerada pelo chtaube, embora tenha funcionado para mim, por isso penso que estes métodos estão correctos.

UPD: O 3º método funciona realmente (com uma correcção para um ficheiro de instalação personalizado).

UPD2: (ligações fixas). O problema com isohybrid foi provavelmente porque as versões de isolinux.bin no iso e o meu sistema eram diferentes. Recompilou o iso usando genisoimage como sugerido aqui :

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

Também houve alguns problemas, foram resolvidos pelo método aqui antes da genisoimagem:

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== fim UPD2 ==

0
0
0
2018-04-09 23:44:32 +0000

Pode usar bootiso utilitário , que faz exactamente isso, com segurança:

bootiso -d /dev/sdb filename.iso

bootiso irá verificar se o dispositivo seleccionado /dev/sdb está ligado através de USB e falha se não o fizer, o que é uma grande vantagem de segurança. Também irá autodetectar o dispositivo USB se houver exactamente uma unidade USB ligada ao seu sistema, veja-o em acção:

Se quiser instalar o bootloader syslinux para contornar os problemas mencionados por @xsdf, use a opção -b:

bootiso -b -d /dev/sdb filename.iso

Para instalá-lo:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso