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

¿Cómo crear un USB de arranque a partir de una ISO de arranque con la línea de comandos en Linux?

Tengo un CD creado a partir de un archivo ISO que utilizo para instalar una versión personalizada de Ubuntu a través de plop linux.

El CD funciona bien, pero me gustaría utilizar una unidad USB de arranque en su lugar. Utilicé el comando dd para intentar crear el USB de arranque:

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

Ahora esto copia los archivos y hace que el USB sea de arranque pero me sale el error “Missing operating system”

¿Alguna idea?

Respuestas (4)

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

Ok después de investigar un poco he encontrado una solución, y voy a ir paso a paso. El problema era doble.

  1. Conectar la memoria USB y determinar el dispositivo en el que está montada con el comando:

  2. Desmontar el dispositivo

  3. No estoy seguro de que sea necesario, pero he formateado la unidad en FAT32, por si acaso

  4. Ahora mi ISO estaba usando isolinux no syslinux. Sabía que funcionaba con CDs así que me di cuenta de que necesitaba llamar al comando isohybrid, que permite que una ISO sea reconocida por la BIOS desde un disco duro.

  5. El siguiente paso es copiar la iso. Mi segundo problema radicaba aquí, donde estaba copiando a la partición, sdc1, y no al dispositivo, sdc.

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

Este es un problema común con las memorias USB SanDisk, o con las memorias no formateadas en FAT32.

Si no es ninguno de los dos es seguramente un problema con el orden de las particiones de su memoria o con el archivo syslinux.cfg.

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

isohybrid puede no funcionar siempre. Por ejemplo, tenía un .iso con FreeDOS e isohybrid no fue capaz de encontrar algunos archivos importantes allí (no sé si deberían haber sido puestos allí por syslinux, que también usé, o cualquier otra cosa). Aquí propongo varias alternativas.

1) Instalar allí otro gestor de arranque como GRUB. Se explica aquí :

“Asume que la primera partición de tu memoria USB es FAT32 y su partición es /dev/sdy1” (yo tenía grub2 en mi Fedora Core, así que cambié un poco los 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) La wiki de FreeDOS ofrece un método compuesto con GRUB y syslinux aquí (aunque no entiendo cómo lanzaron grub> - no pude arrancar desde el usb hasta esa etapa).

3) Aquí hay un post que puede ser útil - dice ‘Mientras los archivos command.com, kernel.sys, syslinux.cfg, ldlinux.sys y fat32lba.bss estén en la raíz de la unidad y el MBR y el sector de arranque no se reescriban la unidad debería seguir siendo arrancable’.

4) Aquí se explica cómo generar un archivo .iso bootable con un gestor de arranque syslinux. Ni siquiera usan isohybrid. Lamentablemente eso no me sirvió (tal vez por syslinux).

5*) Usar un programa de windows a través de wine. Probé con rufus, sin embargo no funcionó, no pudo encontrar el dispositivo.

Os advierto que desgraciadamente no he podido solucionar este problema, mi dispositivo era ingobernable, pero espero que esto pueda ser útil para otras personas (también las que quieran instalar no un linux en el usb). La imagen usb generada por chtaube sin embargo me funcionó, así que creo que estos métodos son correctos.

UPD: El 3er método realmente funciona (con una corrección para un archivo de instalación personalizado).

UPD2: (enlaces fijos). El problema con isohybrid era probablemente porque las versiones de isolinux.bin en la iso y en mi sistema eran diferentes. Recompilé la iso usando genisoimage como se sugirió aquí :

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

Hubo algunos problemas también, se solucionaron con el método aquí antes de genisoimage:

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

== fin UPD2 ==

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

Podría utilizar la utilidad bootiso , que hace exactamente eso, de forma segura:

bootiso -d /dev/sdb filename.iso

bootiso comprobará que el dispositivo seleccionado /dev/sdb está conectado a través de USB y falla si no es así, lo cual es un gran plus de seguridad. También autodetectará el dispositivo USB si hay exactamente una unidad USB conectada a su sistema, véalo en acción:

Si quieres instalar el bootloader de syslinux para evitar los problemas mencionados por @xsdf, usa la opción -b:

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

Para instalarlo:

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