¿Cómo crear una unidad flash USB de arranque de Ubuntu desde la terminal?

353

¿Hay alguna manera de crear una unidad flash USB de arranque de Ubuntu desde el terminal sin usar aplicaciones de terceros como YUMI , Unetbootin , Startup Disk Creator , etc.

Traté de crear una unidad flash de arranque de Ubuntu con ddmétodo,

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

Crea archivos en el disco USB, pero cuando intento iniciar el disco USB muestra un Operating System Not Founderror.

Avinash Raj
fuente
Debe asegurarse de que su unidad flash USB NO esté montada. Consulte con lsblk. Si es necesario, haga sudo umount / dev / sdb (probablemente sdb1, sdb2). Añadir; echo $? después de su comando dd copy. Entonces: sudo dd if = ... of = ... bs = 4M; echo $? Si el comando finaliza, el valor de retorno debería ser 0.
Seguí tus pasos, pero también crea los mismos archivos que sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mcrea. No crea ningún ubninit,ldlinux.sys,etcarchivo que sea principalmente importante para Linux.
Avinash Raj
Instalaría grub en el MBR del disco USB como paso final.
Élder Geek
2
La forma más fácil con las herramientas integradas usando el terminal es usar ddcomo se describe aquí. Funciona con todos los archivos iso híbridos. Pero ddes una herramienta peligrosa porque hace lo que le dices que haga sin preguntas. Entonces, si le dice que borre las fotos de la familia ... y es un pequeño error de tipeo. Muchas herramientas son más seguras. Le ayudan a identificar y seleccionar la unidad de destino, y proporcionan un punto de control final , donde puede verificar dos veces, que escribirá en la unidad correcta. La mayoría de estas son herramientas GUI, algunas también pueden funcionar en modo texto, por ejemplo mkusb-dus.
sudodus
1
El siguiente enlace muestra un ejemplo, donde la unidad interna se sobrescribió por error, cuando ddse utilizó una línea de comando con el fin de crear una unidad flash USB de arranque de Ubuntu, askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
sudodus

Respuestas:

431

Puedes usar dd.

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

donde <?><?>hay una letra seguida de un número, búsquela ejecutando lsblk.

Se verá algo así 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 

Desmontaría sdb1.

Luego, a continuación (este es un comando destructivo y borra toda la unidad USB con el contenido de la iso, así que tenga cuidado):

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

dónde input.isoestá el archivo de entrada y /dev/sd<?>el dispositivo USB en el que está escribiendo (ejecute lsblkpara ver todas las unidades para averiguar qué <?>es para su USB).

Este método es rápido y nunca me ha fallado.


EDITAR: para aquellos en una Mac que terminan aquí, use minúsculas para bs=4m:

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

EDITAR: si la unidad USB no se inicia (esto me sucedió a mí), es porque el objetivo es una partición particular en la unidad en lugar de la unidad. Entonces, el objetivo debe ser / dev / sdc y no dev / sdc <?>Para mí fue / dev / sdb.

Referencia: https://superuser.com/a/407327 y https://askubuntu.com/a/579615/669976

Bagazo
fuente
13
no me funciona
Avinash Raj
77
De Verdad? ¿Está seguro de que tiene el nombre de archivo .iso correcto, incluida la ruta, y el / dev correcto para su unidad USB? ¿Cómo falla? ¿Hay un mensaje de error o simplemente no se inicia? ¿Estás seguro de que el .iso no es corrupto?
Marc
8
Podrías tener un .iso corrupto. ¿Lo has comprobado? ¿Estás seguro de que .iso es en realidad una copia de algo que es de arranque?
Marc
55
La pregunta original y la respuesta más votada es la misma persona que dijo que este método no funciona para él. ;-) Para mí, la respuesta aprobada no funciona y esta sí. :-) Upvoting.
Drachenfels
20
Agregar status=progressa la línea de comando también es útil, para ver cuánto queda de copia superior.
Supernormal el
101

Ya casi estás allí dd, pero te estás perdiendo un paso.

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

dónde sdXestá su dispositivo usb (esto se puede verificar con lsblk).

El syncbit es importante ya que ddpuede regresar antes de que finalice la operación de escritura.

usuario373766
fuente
17
+1 por mencionar sync. Sin él, no tienes idea si el contenido se copió realmente. Además, si no tiene prisa, debe md5sumusar ambos archivos para estar doblemente seguro.
Dave
44
¿Quizás valga la pena mencionar que el USB puede necesitar ser (re) formateado como FAT32 sudo mkfs.msdos -F 32 /dev/sdXprimero?
Nemo
10
@Nemo, ¿es posible que eso marque la diferencia? ddto / dev / sdX sobrescribirá cualquier sistema de archivos existente.
mwfearnley
55
syncNo tiene sentido aquí. Solo afecta las operaciones del sistema de archivos.
Punund
3
conv=fdatasync- escribir físicamente los datos del archivo de salida antes de terminar debe encargarse de la sincronización, pero es bueno asegurarse de que el dispositivo se desmonta primero.
Johnathon Havens
98

Crear una unidad flash USB de arranque de Ubuntu desde la terminal

  • Coloque el ubuntu.isoarchivo en cualquier partición del disco duro.

  • Luego monte el ubuntu.isoarchivo con los siguientes comandos en la terminal:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Inserte su unidad flash USB. Mi disco es /dev/sdd. Aquí hay una captura de pantalla:

Captura de pantalla de GParted

  • Su unidad puede montarse automáticamente en el interior /media/. Asumamos que fue montado adentro /media/xxx/.

  • Copie todos los archivos de /media/iso/su unidad flash USB montada ejecutando el siguiente comando (asegúrese de incluir el punto):

    cp -a /media/iso/. /media/xxx/
    
  • A continuación, necesita el ldlinux.sysarchivo en su unidad flash USB para que el USB se pueda iniciar . Mi partición USB es /dev/sdd1; entra lsblkpara ver cuál es el tuyo. Ejecute los siguientes comandos:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Navegue a la /media/xxxcarpeta de montaje y cambie el nombre del isolinuxdirectorio a syslinux. Luego vaya a la carpeta renombrada y cambie el nombre del archivo isolinux.cfga syslinux.cfg.

  • Reinicie su PC y cambie el orden de arranque en BIOS para permitir el arranque desde una unidad USB. Ahora su unidad flash USB Ubuntu se iniciará y podrá instalarla.

Este método funcionará para cualquier distribución de Linux, no solo Ubuntu. No necesita instalar ningún software de terceros para hacer una unidad flash USB de Linux .

Avinash Raj
fuente
3
Lo estoy intentando en este momento, ¿podría especificar qué / por qué usa: cp -a en lugar de cp -r
moldovean
2
Necesitas sudoel syslinuxcomando.
Cammy_the_block
99
Este método no me funcionó. El cp -a da: 'cp: no puede crear un enlace simbólico' /media/xxx/./ubuntu ': Operación no permitida' y otros similares, ya que el objetivo es fat32. Traté de ignorar eso ... no funcionó
sheß
66
Es importante tener en cuenta que el usb debe ser un sistema de archivos fat32, de lo contrario, syslinux no funcionará
Ricardo BRGWeb
2
La consola me muestra el mismo error que @ sheß. Verifiqué el sistema de archivos (FAT32) y el indicador BOOT.
Chofoteddy
40

Tienes dos opciones.

Si desea una interfaz gráfica, use usb-creator (está en los repositorios de ubuntu)

ingrese la descripción de la imagen aquí

Si desea una herramienta de línea 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

Solo asegúrese de que /dev/sdXsea ​​la unidad flash que desea usar (destruirá los datos en la unidad flash).

Consulte https://help.ubuntu.com/community/Installation/FromUSBStick para obtener información adicional.

Pantera
fuente
1
quiero únicas herramientas de línea de comandos, no herramienta GUI (como creador disco de inicio) .De acuerdo con el ddmétodo, sólo 3 carpetas y 1 archivo fue creado en mi usb.While i tratar de arrancar dice operating system not founderror.Files como ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sysse echa en falta (que son muy importante para arrancar en vivo ubuntu usb).
Avinash Raj
1
¡Probé el método dd con ubuntu.iso y funcionó! Sin embargo, es demasiado tiempo para ser escrito en un USB. Me pregunto qué significa bs = 1M. Encontré este sitio manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Ahora me pregunto si cambiar el valor hará que la copia al USB sea más rápida. Y cuáles son los riesgos ... tal vez alguien lo sepa.
moldovean
44
El bs es el tamaño del bloque. dd leerá 1 MB de datos en la memoria y luego procederá a escribirlos en el disco como un todo. Al usar un tamaño de bloque muy pequeño, obtendrá una gran cantidad de sobrecarga de la CPU. El uso de un tamaño de bloque muy grande puede provocar efectos secundarios inesperados, por ejemplo, pausas más largas sin actividad del disco y / o gran uso de RAM. 1M o 4M generalmente es un buen valor cuando se hace un disco a partir de un ISO. Más información sobre los tamaños de bloque: stackoverflow.com/questions/6161823/…
ApolloLV
Me imagino que hacer un usb de arranque es algo que hago con poca frecuencia, pero cuando lo hago, quiero hacerlo bien. Un tamaño de bloque más pequeño puede llevar más tiempo, pero ¿es eso un problema? No.
Marc
2
@Marc: el único problema es la velocidad, un tamaño de bloque más pequeño no es más o menos propenso a errores que un tamaño de bloque más grande y, por lo tanto, ¡un tamaño de bloque más pequeño! = "Hecho bien". Hecho correctamente significa verificar el md5sum de la iso y confirmar el md5sum de la imagen escrita. Una vez que confirme los m5dsums, sabrá que se hizo correctamente.
Pantera
28

Primero, desmonte el dispositivo USB y luego úselo lsblkpara verificar el dispositivo.

A veces (generalmente archivos iso más antiguos) dd no es suficiente y el pendrive no arranca. En este caso, es posible que necesite instalar syslinux:

sudo apt-get install syslinux

y luego ejecuta los siguientes comandos:

sudo mkfs -t vfat -I /dev/sdX

Desea ejecutar ese último comando /dev/sdXy no /dev/sdX1 .

Luego, proceda con los siguientes comandos:

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

o, para ver el progreso de la imagen, escriba:

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

o en lugar de dd, puedes usar caten su lugar:

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

Recuerde emitir un comando de sincronización para vaciar la caché de escritura

sync

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

mchid
fuente
Debo mencionar que para mí todo lo demás falló, pero esto funcionó: opté por el catcomando.
Drácula digital
Para aquellos que insisten en que ddsolo es suficiente, también necesitaba que esto funcionara.
GuiRitter
Si desea una herramienta que se usa ddcuando ISO es híbrido y se monta, copie el archivo ISO + instala SYSLINUX cuando ISO no lo es, use bootisoen su lugar.
Jules Randolph
1
¿Puedes explicar qué hace realmente cada uno de estos comandos? ¿Cuál es el punto de hacer un sistema de archivos vfat en el dispositivo, y luego sobrescribirlo inmediatamente con el contenido del archivo iso? ¿Qué hace isohybridrealmente? ¿Modifica el ISO de alguna manera?
Cheshirekow
10

Si por "tercero" quieres decir "gui", sugiero un script ligero llamado bootiso después de la respuesta de Avinash Raj , porque ddno siempre funciona. La gran ventaja es que es muy seguro (realiza muchas comprobaciones de seguridad para no estropear el sistema), fácil de instalar y portátil.

Además, bootisoinspeccionará el archivo ISO para elegir entre dos modos: imagen-copia ( dd) cuando el archivo ISO es híbrido, es compatible con USB. Y el modo mount-rsync cuando el archivo ISO no es híbrido, en cuyo caso se instalará automáticamente un gestor de arranque SYSLINUX si es compatible [ más detalles sobre el comportamiento automático ].

Cómo usarlo

Primera opción, solo proporcione el ISO como primer argumento y se le pedirá que seleccione una unidad entre una lista extraída de lsblk:

bootiso myfile.iso

O proporcione explícitamente el dispositivo USB:

bootiso -d /dev/sde myfile.iso

Instalación rápida

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

Véalo en acción:

Jules Randolph
fuente
1
Estoy de acuerdo, este es un script muy agradable que elimina los fragmentos de miedo del proceso. Más detalles aquí: tecmint.com/create-bootable-usb-in-linux-commandline
kr37
Incluso tiene soporte para Windows 10 Oct 2018 ya que admite "dividir wim" el archivo "install.wim" (usando el comando "wimlib-imagex") que es> 4Gb y de lo contrario no se puede almacenar en FAT32.
mevdschee
7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

No uses el camino para morder.

  1. Use el cdcomando para llegar a la carpeta que contiene el archivo .iso
  2. usa el comando dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Espere hasta que la salida de la consola se vea así:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Arranque desde el usb.

Nota: Asegúrese de escribir en el dispositivo correcto, un usb no siempre se montará en: dev/sdXdonde X puede ser cualquier letra.

Alexander Stamos
fuente
2
¿Cuál es el significado de bs = 1MB en el comando dd?
juggernauthk108
1
@ juggernaut1996 ninguno. Es el tamaño de bloque que se debe usar al copiar. Como no se proporcionó ningún argumento de conteo, copiará toda la entrada en bloques de 1 MB. Podría ser eliminado.
sjbx
El "No use la ruta para morder" es una información errónea. El proceso en sí no hornea los componentes de la ruta en la imagen copiada en ningún paso, por lo que es irrelevante si navega al directorio que contiene su imagen ISO o simplemente proporciona la ruta completa. Además, dd también puede aceptar la entrada de stdin, por lo que puede simplemente conectar dos dd entre sí para asegurarse de que no haya ninguna ruta en la imagen.
Gabor Garami
Eso funcionará solo para ISO híbridos, que cubren una buena mayoría de los casos hoy en día, pero hay excepciones notables como UltimateBootCD. Usar en su bootisolugar.
Jules Randolph
-5

Prueba esto, y nunca me fallaste más de 100 veces:

Formatear la tarjeta:

$ sudo mkfs.vfat -F32 /dev/sdx

Montar la imagen ISO:

$ sudo mount ubuntu.iso /mnt

Copiar contenido a la tarjeta:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Entonces:

  • renombrar isolinuxcarpeta ensyslinux
  • renombrar syslinux/isolinux.cfgasyslinux/syslinux.cfg
  • renombrar syslinux/isolinux.binasyslinux/syslinux.bin
  • correr syslinux -s /dev/sdx
Nooty
fuente
44
-1. ¿Incluso probaste esto? sudo cp -rvf /mnt/* /dev/sdxno funcionará (o al menos no hará lo que pretende). No copie archivos en un dispositivo sin formato ( /dev/). En su lugar, debe montar la tarjeta y copiar el contenido del archivo ISO a la tarjeta (punto de montaje a punto de montaje). Y lo que está mal con la respuesta actual aceptada que tiene el mismo enfoque.
gertvdijk