Creare un programma di installazione USB per installare Ubuntu dalla riga di comando?


22

Sto cercando di creare un'immagine USB avviabile per installare Ubuntu su un nuovo computer.

L'ho fatto prima di seguire le istruzioni " crea unità USB " per il desktop Ubuntu, ma non ho un desktop Ubuntu disponibile.

Come posso fare lo stesso usando solo la riga di comando?

Cose che ho provato:

  • Crea USB avviabile su Mac OS X seguendo le istruzioni ubuntu.com "crea unità USB" per Mac: non si avvia.
  • usb-creator: Secondo apt-cache search usb-creatorWikipedia e USB Creator esiste solo come strumento grafico.
  • Istruzioni "Crea manualmente" su help.ubuntu.com: nessuno dei file e delle directory descritti (ad es casper. filesystem.manifest, menu.lst) Esiste nell'immagine ISO e non so cosa li abbia sostituiti.
  • script unetbootin : richiede l' esecuzione del server X (supporto grafico), anche quando è completamente scriptato. (Il comando sudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesfornisce un messaggio di errore unetbootin: cannot connect to X server.)

Aggiornare

Ho anche provato a giocherellare con GRUB: fusione di informazioni da

Sono stato in grado di arrivare a metà strada: si è avviato da USB, ha visualizzato il menu Grub e avviato l'installazione, ma l'installazione non è stata completata.

Per riferimento, questo è il più vicino che ho ottenuto:

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/

Ho quindi modificato /media/usb/boot/grub.cfgper aggiungere un loopback .iso, ad esempio la voce 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
}

Quando si avvia da USB, questo mi darebbe il menu di avvio di Grub e avvierebbe il programma di installazione, ma il programma di installazione ha rinunciato dopo un paio di schermate lamentandosi di non riuscire a trovare l'unità CD-ROM. (Naturalmente, poiché la scatola su cui sto installando non ha un'unità ottica.)

Ho risolto questo particolare problema rinunciando e facendo la routine "crea unità USB" usando il CD desktop Ubuntu Live (su un computer che ha un'unità ottica), quindi l'installazione USB funziona.

Ma mi aspetto che ci sia un modo per farlo dalla riga di comando di un sistema Ubuntu senza server X e senza un'unità ottica, quindi la domanda è ancora valida.

Qualcuno sa come?


prova unetbootin.
RolandiXor

@Roland unetbootin: cannot connect to X server - sembra richiedere X anche quando è completamente scriptato ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes), e preferirei rimanere senza testa. Grazie per la punta, però; Posso installare X se esaurisco altre opzioni.
jg-faustus,

Questi sembrano promettenti: pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux e unix.stackexchange.com/questions/665/… Ha bisogno di qualche modifica, ma lo proverò.
jg-faustus,

@ jg-faustus: se le cose fossero state così complicate, avrei abbandonato Linux, forse. usare dd. È un gioiello. non posso che elogiare. E ogni distribuzione Linux ha dd; quindi hai una soluzione universale, con niente da scrivere / scrivere / configurare. solo una bellissima linea.
Mahesh,

Tale grub.cfgvoce deve essere indicata file=/cdrom/preseed/ubuntu-server.seedsulla linuxriga (e non file=(loop)/preseed/ubuntu-server.seed), per evitare un errore irreversibile "Impossibile recuperare il file di preconfigurazione" dopo che l'immagine del CD è stata rilevata correttamente.
Paul Whittaker,

Risposte:


9

Quando si avvia da USB, questo mi darebbe il menu di avvio di Grub e avvierebbe il programma di installazione, ma il programma di installazione ha rinunciato dopo un paio di schermate lamentandosi di non riuscire a trovare l'unità CD-ROM.

Questo è un bug noto con ubuntu server iso (desktop iso funziona bene), ma c'è una correzione per ottenere i pacchetti dall'iso sull'unità USB: una volta sul programma di installazione, Ctrl + Alt + f2 per aprire un tty e in il terminale:

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

Quindi tornare al programma di installazione e riprovare a cercare i pacchetti nel cd. Dovrebbe funzionare.


Non ho un sistema per provarlo al momento, ma sì - sembra che dovrebbe funzionare :) Grazie!
jg-faustus,

Ho scoperto che l'opzione di menu "Rileva e monta CD-ROM" verrebbe ripristinata /dev/sr0, annullando lne riportandola al suo stato originale (interrotto). Tuttavia, se avessi aspettato "Riprovare a montare il CD-ROM?" prompt, ha fatto lnin tty2, e poi è tornato a premere "Sì", ha funzionato. (Quella finestra di dialogo "Riprova?" Sarebbe apparsa solo una volta dato il mountcomando).
Paul Whittaker,

10

Hai provato con # dd if=path/to/image.iso of=/dev/sd# ?


Questo è un gioiello. La migliore. funziona su qualsiasi distribuzione Linux. ma devi stare molto attento. l'aggiunta bs=20Mo qualsiasi altro valore adatto accelera le cose. per i dettagli, consultareman dd
Mahesh,

1
@Mahesh No, alcune distro linux non funzionano nemmeno con questo comando, Uno di questi è OpenSUSE
Anwar

o MeeGo e derivate quelle immagini sono chiamate ibride
rzr

5

Supponiamo che tu non abbia altro che un prompt davanti a te. Se hai una GUI, puoi aprire un terminale e fare tutto ciò che è descritto qui. Oppure puoi usare un tty.

ATTENZIONE:
per evitare potenziali danni, seguire le istruzioni con molta attenzione.

  • Passare a un prompt di root digitando sudo su

    Rileva il dispositivo USB.

  • tail -f /var/log/syslog

Ora hai una vista live su syslog. Collega l'unità USB. Dovresti vedere alcuni messaggi sullo schermo. Qualcosa come questo.

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

guardalo e trovi una cosa tra parentesi quadre che si ripete? sdcin questo caso. Annotalo su un pezzo di carta. Digita Ctrl+ Cper visualizzare il prompt.

Individua il file iso da masterizzare su usb.

Se il file iso è in /path/to/iso/somecd.iso; notare questo percorso su un pezzo di carta.

Scrivi su USB

Avvertimento:

Ciò cancellerà l'intero disco USB. Eseguire il backup prima di procedere.

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

Sostituisci /path/to/iso/somecd.isocon il percorso effettivo del tuo file ISO.

Sostituisci /dev/sdccon tutto ciò che hai annotato in precedenza. Se la parte ripetuta è sdb; usare /dev/sdbe così via.

Avvertimento:

Digitare una lettera di unità errata comporterà la perdita permanente dei dati su un'unità diversa. Prestare particolare attenzione durante l'emissione del ddcomando.


2
Per evitare la perdita di dati selezionando un disco errato si consiglia di utilizzare /dev/disk/by-label/LABELinvece di/dev/sdc
totti il

1
Suggerimento sensato. Ma quando non sei sicuro dell'etichetta, o hai un sacco di "nuovi volumi", diventa un dolore. Preferisco sempre quello SDX, ma questa è una scelta personale.
Mahesh,

1
Migliore risposta. Un miglioramento suggerito è l'uso di pv sul flusso di input su dd, in modo che l'utente ottenga un feedback sull'avanzamento (ovvero pv legge l'iso, lo trasmette a dd e visualizza i progressi su stderr).
Stabledog,

2

Creazione di un'unità flash USB Ubuntu avviabile dal terminale

  • Montare il ubuntu.isofile. Per questo eseguire i comandi seguenti nel terminale,

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Quindi copia tutti i file dalla /media/isocartella della chiavetta USB montata in /media.

    Inserisci la tua chiavetta USB.

    Verrà montato automaticamente, ogni volta che lo inserirai. La tua partizione USB deve essere montata all'interno. /mediaSupponiamo che l'unità USB sia montata all'interno della /media/xxxxcartella. Quindi esegui il comando seguente,

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

    Esegui il lsblkcomando per conoscere la partizione del dispositivo USB.

  • Quindi incolla il ldlinux.sysfile all'interno della partizione della tua unità flash USB (nel mio caso / dev / sdd1 ) per rendere avviabile l' USB . Per eseguire questi comandi,

    sudo apt-get install syslinux mtools
    syslinux -s /dev/sdd1
    
  • Andare nella /media/xxxcartella e rinominare la isolinuxdirectory in. syslinuxQuindi andare nella cartella syslinux rinominata e rinominare il file isolinux.cfgin syslinux.cfg.

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • Riavvia il tuo PC e modifica il boot-orderBIOS in USB. Ora la tua chiavetta USB Ubuntu si avvia e puoi installarla.

Questo metodo funzionerà con qualsiasi distribuzione di Linux, non solo con Ubuntu.


1

Ho risolto questo particolare problema usando il CD desktop di Ubuntu Live.

Avviando il Live CD su un computer con un'unità ottica, ho potuto usare le istruzioni del desktop Ubuntu per creare il programma di installazione della penna USB senza toccare l'installazione esistente.


1

Puoi hackerare USB-Creator per farlo.

Dovresti già avere una singola partizione vfat come partizione 1 sul dispositivo USB (il passaggio di cancellazione del disco di usb-creator-gtk fa questo) e dovrebbe essere contrassegnato come avviabile.

Successivamente, otterremo il codice Python USB Creator per aiutarci.

$ sudo apt-get install usb-creator

o

$ bzr branch lp:usb-creator

creare un file con questo contenuto e denominarlo usb-creator-cli, se si utilizza bzr nell'ultimo passaggio, posizionare questo file nella directory usb-creator (radice del ramo 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()

Renderlo eseguibile

$ chmod +x usb-creator-cli

Ora monta il tuo iso su / iso e monta il tuo dispositivo USB su / mnt

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

Se vuoi messaggi molto dettagliati sulla tua console, puoi mettere in coda ~ / .cache / usb-creator.log

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

Ora esegui quello script usb-creator-cli

$ sudo ./usb-creator-cli

E guarda tutti i messaggi scorrere.

Quando si ritorna al prompt, non dimenticare di smontare / mnt prima di strappare il dispositivo di archiviazione USB.


-2

È possibile installare una riga di comando (CLI) Ubuntu utilizzando Alternate Install o Mini iso (che dovrebbe adattarsi alla chiavetta da 512 MB)

Quindi installare Crunchbang usando il metodo alternativo: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

Potresti anche provare la versione Lite di CrunchBang, che è inferiore a 512 MB.

È possibile utilizzare Unetbootin per preparare la chiavetta USB.


CrunchBang? haha?
RolandiXor

Non ho problemi ad adattare l'ISO sulla chiavetta (è 16 GB), è più una questione di come posso creare una chiavetta USB che si avvia nell'ISO in primo luogo e crearla utilizzando nient'altro che la CLI.
jg-faustus,

E unetbootin non funziona, sfortunatamente: sembra richiedere il supporto grafico anche quando lo si esegue dalla riga di comando.
jg-faustus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.