Criar instalador USB para instalar o Ubuntu a partir da linha de comando?

22

Estou tentando criar uma imagem USB inicializável para instalar o Ubuntu em um novo computador.

Eu fiz isso antes de seguir as instruções " criar unidade USB " para a área de trabalho do Ubuntu, mas não tenho uma área de trabalho do Ubuntu disponível.

Como posso fazer o mesmo usando apenas a linha de comando?

Coisas que tentei:

  • Crie um USB inicializável no Mac OS X seguindo as instruções "criar unidade USB" do ubuntu.com para Mac: Não inicializa.
  • usb-creator: De acordo com apt-cache search usb-creatore Wikipedia usb-creator existe apenas como uma ferramenta gráfica.
  • "Criar manualmente" instruções no help.ubuntu.com: Nenhum dos arquivos e diretórios descrito (por exemplo casper, filesystem.manifest, menu.lst) existem na imagem ISO, e eu não sei o que os substituiu.
  • Script unetbootin : requer que o servidor X (suporte a gráficos) seja executado, mesmo quando totalmente com script. (O comando sudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesfornece uma mensagem de erro unetbootin: cannot connect to X server.)

Atualizar

Também tentei mexer no GRUB: mesclando informações de

Consegui chegar a meio caminho - ele inicializou a partir do USB, exibiu o menu grub e iniciou a instalação, mas a instalação não foi concluída.

Para referência, este é o mais próximo que cheguei:

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/

Eu editei /media/usb/boot/grub.cfgpara adicionar um loopback .iso, exemplo de entrada do 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
}

Ao inicializar a partir do USB, isso me forneceria o menu de inicialização do Grub e iniciaria o instalador, mas o instalador desistiu após algumas telas reclamando que não encontrou a unidade de CD-ROM. (Naturalmente, como a caixa em que estou instalando não possui uma unidade óptica.)

Resolvi esse problema em particular, desistindo e executando a rotina "criar unidade USB" usando o CD da área de trabalho do Ubuntu Live (em um computador que possui uma unidade óptica) e a instalação do USB funciona.

Mas espero que exista alguma maneira de fazer isso na linha de comando de um sistema Ubuntu sem servidor X e sem unidade óptica, então a questão ainda permanece.

Alguém sabe como?

jg-faustus
fonte
tente unetbootin.
RolandiXor
@Roland unetbootin: cannot connect to X server - parece exigir X mesmo quando totalmente com script ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes), e eu prefiro permanecer sem cabeça. Obrigado pela dica, no entanto; Posso instalar o X se ficar sem outras opções.
Jg-faustus
Eles parecem promissores: pendrivelinux.com/install-grub2-on-usb-fub-ubuntu-linux e unix.stackexchange.com/questions/665/… Precisa de alguns ajustes, mas irá testá-lo.
jg-faustus
@ jg-faustus: Se as coisas fossem tão complicadas, eu teria abandonado o Linux, talvez. use dd. É uma jóia. não posso dizer o suficiente. E toda distribuição Linux tem dd; então você tem uma solução universal, sem nada para escrever / gravar / configurar. apenas uma linha bonita.
Mahesh
Essa grub.cfgentrada precisa dizer file=/cdrom/preseed/ubuntu-server.seedna linuxlinha (e não file=(loop)/preseed/ubuntu-server.seed), para evitar um erro fatal 'Falha ao recuperar o arquivo de pré-configuração' depois que a imagem do CD for detectada com êxito.
Paul Whittaker

Respostas:

9

Ao inicializar a partir do USB, isso me forneceria o menu de inicialização do Grub e iniciaria o instalador, mas o instalador desistiu após algumas telas reclamando que não encontrou a unidade de CD-ROM.

Este é um bug conhecido do ubuntu server iso (o desktop iso funciona muito bem), mas há uma correção para obter os pacotes do iso na unidade usb: uma vez no instalador, Ctrl + Alt + f2 para abrir um tty e em o terminal:

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

Em seguida, volte ao instalador e tente novamente procurar pacotes no cd. Deveria funcionar.

Orvidia
fonte
Eu não tenho um sistema para testá-lo no momento, mas sim - parece que deve funcionar :) Obrigado!
jg-faustus
Eu descobri que a opção de menu "Detectar e montar CD-ROM" seria revertida /dev/sr0, desfazendo lne retornando ao seu estado original (quebrado). No entanto, se eu esperasse no "Repetir a montagem do CD-ROM?" prompt, fez o lnem tty2 e depois voltou a pressionar "Sim", funcionou. (Que diálogo? "Repetir" só aparecem uma vez que o mountcomando tinha sido dado, no entanto.)
Paul Whittaker
10

Você já tentou com # dd if=path/to/image.iso of=/dev/sd# ?

aqui_c
fonte
Este é uma jóia. O melhor. funciona em qualquer distribuição Linux. mas você precisa ter cuidado extra. adicionar bs=20Mou qualquer outro valor adequado acelera as coisas. para obter detalhes, consulteman dd
Mahesh
1
@Mahesh Não, alguma distro linux não funcionam mesmo com este comando, Um deles é OpenSUSE
Anwar
ou MeeGo e derivados essas imagens são chamados os híbridos
RZR
5

Vamos supor que você não tenha nada além de um aviso antes de você. Se você possui uma GUI, pode abrir um terminal e fazer tudo descrito aqui. Ou você pode usar um tty.

AVISO:
Para evitar possíveis danos, siga as instruções com muito cuidado.

  • Alterne para um prompt raiz digitando sudo su

    Detecte qual dispositivo o usb é.

  • tail -f /var/log/syslog

Agora você está exibindo ao vivo no syslog. Conecte sua unidade USB. Você deve ver algumas mensagens na tela. Algo assim.

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

olhe para ela e encontre uma coisa entre colchetes repetindo? sdcnesse caso. Anote em um pedaço de papel. Digite Ctrl+ Cpara chegar ao prompt.

Localize o arquivo iso para gravar no usb.

Se o arquivo iso estiver em /path/to/iso/somecd.iso; observe esse caminho em um pedaço de papel.

Escreva em USB

Atenção:

Isso apagará todo o disco USB. Faça backup antes de continuar.

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

Substitua /path/to/iso/somecd.isopelo caminho real para o seu arquivo iso.

Substitua /dev/sdcpelo que você anotou anteriormente. Se a parte de repetição é sdb; use /dev/sdbe assim por diante.

Atenção:

Digitar incorretamente uma letra de unidade resultará em perda permanente de dados em uma unidade diferente. Preste atenção extra ao emitir o ddcomando.

Mahesh
fonte
2
A fim de evitar a perda de dados, selecionando disco errado, é aconselhável usar /dev/disk/by-label/LABEL, em vez de/dev/sdc
totti
1
Sugestão sensata. Mas quando você não tem certeza do rótulo ou tem uma tonelada de 'Novos volumes', isso se torna uma dor. Eu sempre prefiro o sdX, mas essa é uma escolha pessoal.
Mahesh
1
Melhor resposta. Uma melhoria sugerida é usar pv no fluxo de entrada para dd, para que o usuário obtenha feedback de progresso (ou seja, pv lê o iso, transmite para dd e exibe o progresso no stderr).
Stabledog
2

Criando uma unidade flash USB inicializável do Ubuntu a partir do terminal

  • Monte o ubuntu.isoarquivo. Para isso, execute os comandos abaixo no terminal,

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Em seguida, copie todos os arquivos /media/isopara a pasta montada na unidade flash USB /media.

    Insira sua unidade flash USB.

    Ele será montado automaticamente, sempre que você o inserir. Sua partição USB deve ser montada dentro. /mediaVamos supor que sua unidade USB seja montada dentro da /media/xxxxpasta. Em seguida, execute o comando abaixo,

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

    Execute o lsblkcomando para conhecer a partição do dispositivo usb.

  • Em seguida, cole o ldlinux.sysarquivo na partição da sua unidade flash USB (no meu caso / dev / sdd1 ) para tornar o usb inicializável . Para isso, execute os comandos abaixo,

    sudo apt-get install syslinux mtools
    syslinux -s /dev/sdd1
    
  • Vá para a /media/xxxpasta e renomeie o isolinuxdiretório para. Em syslinuxseguida, vá para a pasta syslinux renomeada e renomeie o arquivo isolinux.cfgpara syslinux.cfg.

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • Reinicie o seu PC e altere a boot-orderBIOS para USB. Agora, a sua unidade flash USB ubuntu será inicializada e você poderá instalá-lo.

Este método funciona para qualquer distribuição Linux, não apenas para o Ubuntu.

Avinash Raj
fonte
1

Resolvi esse problema em particular usando o CD da área de trabalho do Ubuntu Live.

Ao inicializar o Live CD em um computador com uma unidade óptica, eu poderia usar as instruções da área de trabalho do Ubuntu para criar o instalador da caneta USB sem tocar na instalação existente.

jg-faustus
fonte
1

Você pode hackear o usb-creator para fazer isso.

Você já deve ter uma única partição vfat como partição 1 no dispositivo usb (a etapa de exclusão do disco do usb-creator-gtk faz isso) e deve ser marcada como inicializável.

Em seguida, obteremos o código python do usb-creator para nos ajudar.

$ sudo apt-get install usb-creator

ou

$ bzr branch lp:usb-creator

crie um arquivo com esse conteúdo e denomine usb-creator-cli; se você usar o bzr na última etapa, coloque-o no diretório usb-creator (raiz da ramificação do 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()

Tornar executável

$ chmod +x usb-creator-cli

Agora monte seu iso em / iso e monte seu dispositivo USB em / mnt

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

Se você deseja mensagens muito detalhadas no seu console, pode seguir ~ / .cache / usb-creator.log

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

Agora execute esse script usb-creator-cli

$ sudo ./usb-creator-cli

E observe todas as mensagens rolarem.

Quando você retornar ao prompt, não esqueça de desmontar / mnt antes de puxar seu dispositivo de armazenamento USB.

Jay _silly_evarlast_ Wren
fonte
-2

Você pode instalar um Ubuntu de linha de comando (CLI) usando o Alternate Install ou Mini iso (que deve caber no seu stick de 512mb)

Em seguida, instale o Crunchbang usando o método alternativo: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

Você também pode experimentar a versão Lite do CrunchBang, que é inferior a 512mb.

Você pode usar o Unetbootin para preparar o pen drive.

Sen
fonte
crunchbang? haha?
RolandiXor
Não tenho problema em ajustar o ISO no stick (é de 16 GB), é mais uma questão de como posso criar um stick USB que inicialize no ISO em primeiro lugar e crie-o usando nada além da CLI.
jg-faustus
E o unetbootin não funciona, infelizmente - parece exigir suporte gráfico, mesmo quando você o executa na linha de comando.
jg-faustus