¿Crear un instalador USB para instalar Ubuntu desde la línea de comandos?

22

Estoy tratando de crear una imagen USB de arranque para instalar Ubuntu en una computadora nueva.

He hecho esto antes de seguir las instrucciones de " crear unidad USB " para el escritorio de Ubuntu, pero no tengo un escritorio de Ubuntu disponible.

¿Cómo puedo hacer lo mismo usando solo la línea de comando?

Cosas que he probado:

  • Cree un USB de arranque en Mac OS X siguiendo las instrucciones de ubuntu.com "crear unidad USB" para Mac: no arranca.
  • usb-creator: Según apt-cache search usb-creatory Wikipedia, usb-creator solo existe como herramienta gráfica.
  • Instrucciones de "Crear manualmente" en help.ubuntu.com: ninguno de los archivos y directorios descritos (p casper. Ej . filesystem.manifest, menu.lst) Existen en la imagen ISO, y no sé qué los ha reemplazado.
  • secuencias de comandos de unetbootin : Requiere que se ejecute el servidor X (soporte de gráficos), incluso cuando está completamente programado. (El comando sudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesda un mensaje de error unetbootin: cannot connect to X server).

Actualizar

También probé el violín de GRUB: fusionando información de

Pude llegar a la mitad: arrancó desde USB, mostró el menú de grub e inició la instalación, pero la instalación no se completó.

Como referencia, esto es lo más cercano que tengo:

sudo su
  # mount USB pen
mount /dev/sd[X]1 /media/usb
  # install GRUB
grub-install --force --no-floppy --root-directory=/media/usb /dev/sd[X]
  # copy ISO image to USB
cp ~/ubuntu-10.10-server-amd64.iso /media/usb
  # mount ISO image, copy existing grub.cfg
mount ~/ubuntu-10.10-server-amd64.iso /media/iso/ -o loop
cp /media/iso/boot/grub/grub.cfg /media/usb/boot/grub/

Luego edité /media/usb/boot/grub.cfgpara agregar un .iso loopback, ejemplo de entrada grub:

menuentry "Install Ubuntu Server" {
  set gfxpayload=keep
  loopback loop /ubuntu-10.10-server-amd64.iso  
  linux (loop)/install/vmlinuz  file=(loop)/preseed/ubuntu-server.seed iso-scan/filename=/ubuntu-10.10-server-amd64.iso quiet --
  initrd (loop)/install/initrd.gz
}

Al arrancar desde USB, esto me daría el menú de arranque de Grub e iniciaría el instalador, pero el instalador se dio por vencido después de un par de pantallas quejándose de que no podía encontrar la unidad de CD-ROM. (Naturalmente, como la caja en la que estoy instalando no tiene una unidad óptica).

Resolví este problema particular renunciando y haciendo la rutina de "crear unidad USB" usando el CD de escritorio Ubuntu Live (en una computadora que tiene una unidad óptica), luego la instalación USB funciona.

Pero espero que haya alguna forma de hacerlo desde la línea de comandos de un sistema Ubuntu sin servidor X y sin una unidad óptica, por lo que la pregunta sigue en pie.

¿Alguien sabe cómo?

jg-faustus
fuente
prueba con unetbootin.
RolandiXor
@Roland unetbootin: cannot connect to X server : parece requerir X incluso cuando está totalmente programado ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes), y prefiero permanecer sin cabeza. Gracias por el consejo; Puedo instalar X si me quedo sin otras opciones.
jg-faustus
Estos parecen prometedores: pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux y unix.stackexchange.com/questions/665/… Necesita algunos ajustes, pero lo probará.
jg-faustus
@ jg-faustus: Si las cosas fueran tan complicadas, tal vez habría abandonado Linux. uso dd. Es una joya. No puedo decir lo suficiente. Y cada distribución de Linux tiene dd; para que tenga una solución universal, sin nada que escribir / escribir / configurar. Solo una hermosa línea.
Mahesh,
Esa grub.cfgentrada necesita decir file=/cdrom/preseed/ubuntu-server.seeden la linuxlínea (y no file=(loop)/preseed/ubuntu-server.seed), para evitar un error fatal 'No se pudo recuperar el archivo de preconfiguración' una vez que la imagen del CD se ha detectado con éxito.
Paul Whittaker

Respuestas:

9

Al arrancar desde USB, esto me daría el menú de arranque de Grub e iniciaría el instalador, pero el instalador se dio por vencido después de un par de pantallas quejándose de que no podía encontrar la unidad de CD-ROM.

Este es un error conocido con la iso del servidor ubuntu (la iso de escritorio funciona bien), pero hay una solución para obtener los paquetes de la iso en la unidad usb: una vez en el instalador, Ctrl + Alt + f2 para abrir un tty y en la terminal:

mount -t vfat /dev/sdX1 /mnt
ln -sf /mnt/ubuntu-server.iso /dev/sr0

Luego, vuelva al instalador y vuelva a intentar escanear el CD en busca de paquetes. Deberia de funcionar.

Orvidia
fuente
No tengo un sistema para probarlo en este momento, pero sí, parece que debería funcionar :) ¡Gracias!
jg-faustus
Descubrí que la opción de menú "Detectar y montar CD-ROM" se revertiría /dev/sr0, deshaciendo lny volviendo a su estado original (roto). Sin embargo, si esperé en "¿Reintentar el montaje del CD-ROM?" , hizo el lntty2, y luego volvió a presionar "Sí", funcionó. (Sin embargo, ese cuadro de diálogo "¿Reintentar?" Solo aparecerá una vez que se mounthaya dado la orden.)
Paul Whittaker
10

¿Has probado con # dd if=path/to/image.iso of=/dev/sd# ?

aqui_c
fuente
Esta es una joya. El mejor. funciona en cualquier distribución de Linux. pero debes tener mucho cuidado. agregar bs=20Mo cualquier otro valor adecuado acelera las cosas. para más detalles, consulteman dd
Mahesh
1
@Mahesh No, algunas distribuciones de Linux no funcionan incluso con este comando, una de ellas es OpenSUSE
Anwar
o MeeGo y deriva esas imágenes se llaman híbridas
rzr
5

Supongamos que no tiene nada más que un aviso ante usted. Si tiene una GUI, puede abrir una terminal y hacer todo lo que se describe aquí. O puede usar un tty.

ADVERTENCIA:
Para evitar posibles daños, siga las instrucciones con mucho cuidado.

  • Cambie a un indicador de raíz escribiendo sudo su

    Detecta qué dispositivo es el usb.

  • tail -f /var/log/syslog

Ahora tiene una vista en vivo en syslog. Conecte su unidad usb. Debería ver algunos mensajes en la pantalla. Algo como esto.

May 27 00:35:07 Mahesh kernel: [ 5054.646585] usb 2-1.1: new high-speed USB device number 5 using ehci_hcd
May 27 00:35:07 Mahesh kernel: [ 5054.741437] scsi8 : usb-storage 2-1.1:1.0
May 27 00:35:07 Mahesh mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
May 27 00:35:07 Mahesh mtp-probe: bus: 2, device: 5 was not an MTP device
May 27 00:35:08 Mahesh kernel: [ 5055.739177] scsi 8:0:0:0: Direct-Access     JetFlash TS2GJFV30        8.07 PQ: 0 ANSI: 2
May 27 00:35:08 Mahesh kernel: [ 5055.740198] sd 8:0:0:0: Attached scsi generic sg3 type 0
May 27 00:35:08 Mahesh kernel: [ 5055.741593] sd 8:0:0:0: [sdc] 4005888 512-byte logical blocks: (2.05 GB/1.91 GiB)
May 27 00:35:08 Mahesh kernel: [ 5055.742214] sd 8:0:0:0: [sdc] Write Protect is off
May 27 00:35:08 Mahesh kernel: [ 5055.742218] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00
May 27 00:35:08 Mahesh kernel: [ 5055.742712] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.742715] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.745326] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.745329] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.781564]  sdc: sdc1
May 27 00:35:08 Mahesh kernel: [ 5055.784191] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.784196] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.784200] sd 8:0:0:0: [sdc] Attached SCSI removable disk

mirarlo y encontrar una cosa entre corchetes repitiendo? sdcen este caso. Anótelo en una hoja de papel. Escriba Ctrl+ Cpara llegar a la solicitud.

Localice el archivo iso para grabar en usb.

Si el archivo iso está en /path/to/iso/somecd.iso; tenga en cuenta este camino en una hoja de papel.

Escribir en USB

Advertencia:

Esto borrará todo el disco USB. Copia de seguridad antes de continuar.

  • dd if=/path/to/iso/somecd.iso of=/dev/sdc ibs=20M obs=20M

Reemplace /path/to/iso/somecd.isocon la ruta real a su archivo iso.

Reemplace /dev/sdccon lo que haya anotado anteriormente. Si la parte que se repite es sdb; uso /dev/sdby así sucesivamente.

Advertencia:

Si escribe una letra de unidad incorrectamente, se perderán datos de manera permanente en una unidad diferente. Presta especial atención al emitir el ddcomando.

Mahesh
fuente
2
Para evitar la pérdida de datos seleccionando un disco incorrecto, se recomienda usar en /dev/disk/by-label/LABELlugar de/dev/sdc
totti
1
Sugerencia sensata. Pero cuando no está seguro de la etiqueta, o tiene un montón de 'Nuevo volumen', se convierte en una molestia. Siempre prefiero el sdX, pero esa es una elección personal.
Mahesh
1
La mejor respuesta. Una mejora sugerida es usar pv en la secuencia de entrada para dd, de modo que el usuario obtenga retroalimentación de progreso (es decir, pv lee la iso, la transmite a dd y muestra el progreso en stderr).
Stabledog
2

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

  • ubuntu.isoMonta el archivo. Para esto ejecuta los siguientes comandos en la terminal,

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Luego copie todos los archivos de /media/isosu carpeta de unidad flash USB montada en /media.

    Inserte su unidad flash usb.

    Se montará automáticamente, siempre que lo inserte. Su partición usb debe estar montada dentro /media. Supongamos que su unidad usb está montada dentro de la /media/xxxxcarpeta. Luego ejecute el siguiente comando,

    cp -a /media/iso/. /media/xxx
    

    Ejecute el lsblkcomando para conocer la partición del dispositivo usb.

  • Luego pegue el ldlinux.sysarchivo dentro de la partición de su unidad flash USB (en mi caso / dev / sdd1 ) para que el usb sea de arranque. Para esto, ejecute los siguientes comandos,

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

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • Reinicie su PC y cambie la boot-orderBIOS de USB a 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.

Avinash Raj
fuente
1

Resolví este problema particular usando el CD de escritorio Ubuntu Live.

Al iniciar el Live CD en una computadora con una unidad óptica, podría usar las instrucciones de escritorio de Ubuntu para crear el instalador de lápiz USB sin tocar la instalación existente.

jg-faustus
fuente
1

Puedes hackear usb-creator para hacer esto.

Ya debería tener una única partición vfat como partición 1 en el dispositivo usb (el paso de borrado de disco de usb-creator-gtk hace esto) y debe marcarse como arrancable.

A continuación, obtendremos el código python usb-creator para ayudarnos.

$ sudo apt-get install usb-creator

o

$ bzr branch lp:usb-creator

cree un archivo con este contenido y asígnele el nombre usb-creator-cli, si usa bzr en el último paso, coloque este archivo en el directorio usb-creator (raíz de la rama bzr)

#!/usr/bin/env python
from __future__ import print_function
from usbcreator.misc import sane_path, setup_gettext, setup_logging, text_type

from usbcreator.install import install

sane_path()
setup_logging()
setup_gettext()

#/dev/sdb1 should be mounted on /mnt
#iso should be mounted to /iso
dev = '/dev/sdb1'
source = '/iso'
target = '/mnt' 
ugh = install(source, target, False, device=dev)
ugh.success = print
ugh.failure = print
ugh.progress = print
ugh.progress_message = print
ugh.progress_pulse = print
ugh.progress_pulse_stop = print
ugh.retry = print
ugh.run()

Hazlo ejecutable

$ chmod +x usb-creator-cli

Ahora monte su iso en / iso y monte su dispositivo usb en / mnt

$ sudo mkdir /iso ; sudo mount ubuntu-server-12.10-amd64.iso /iso
$ sudo mount /dev/sdb1 /mnt

Si desea mensajes muy detallados en su consola, puede seguir ~ / .cache / usb-creator.log

$ tail -f ~/.cache/usb-creator.log &

Ahora ejecuta ese script usb-creator-cli

$ sudo ./usb-creator-cli

Y mira todos los mensajes pasar.

Cuando regrese a la solicitud, no olvide desmontar / mnt antes de tirar de su dispositivo de almacenamiento usb.

Jay _silly_evarlast_ Wren
fuente
-2

Puede instalar una línea de comando (CLI) Ubuntu utilizando la instalación alternativa o la mini iso (que debe caber en su dispositivo de 512 MB)

Luego instale Crunchbang usando el método alternativo: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

También puede probar la versión Lite de CrunchBang, que tiene menos de 512 MB.

Puede usar Unetbootin para preparar la memoria USB.

Sen
fuente
crunchbang? ¿jaja?
RolandiXor
No tengo ningún problema para ajustar el ISO en el dispositivo (son 16 GB), es más una cuestión de cómo puedo crear un dispositivo USB que arranque en el ISO en primer lugar, y crearlo usando nada más que la CLI.
jg-faustus
Y desafortunadamente, unetbootin no funciona: parece requerir soporte de gráficos incluso cuando lo ejecuta desde la línea de comandos.
jg-faustus