Aviso Legal :
Agora eu uso virt-manager
para criar e gerenciar minha VM e é realmente um salva-vidas. Pode ser usado remotamente (a partir de uma terceira máquina, geralmente a sua estação de trabalho) se o host não tiver exibição gráfica.
As ocorrências dos vnc
tutoriais de instalação que encontrei me fizeram pensar que o procedimento "recomendado" exigia itens X no host, no convidado ou em ambos. Absolutamente não. Meu erro. Se você estiver na mesma situação, pense duas vezes antes de tentar instalar a VM a partir da linha de comando.
Estou tentando instalar uma VM Debian em um host Debian usando virt-install
e não sei como passar a imagem .iso.
virt-install --connect qemu:///system --virt-type kvm --name prod --ram 6144 --disk /srv/vm/prod.qcow,format=qcow2,size=10 --location=/home/jerome/debian-8.0.0-amd64-netinst.iso --network bridge=br0 --os-type linux --os-variant debianwheezy --extra-args='console=tty0 console=ttyS0,115200n8 serial'
Starting install...
Retrieving file info... | 160 B 00:00 ...
ERROR Could not find an installable distribution at '/home/jerome/debian-8.0.0-amd64-netinst.iso'
The location must be the root directory of an install tree.
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start prod
otherwise, please restart your installation.
root@versailles:/etc#
As soluções que eu vi parecem bastante distorcidas, como usar o apache para servir localmente a imagem .iso como se fosse de um lugar distante.
- Linux Mint 14: instale o Ubuntu 12.10 Server no KVM via CLI (sem GUI)
- [Usuários Xen] instalando uma vm com virt-install (é o Xen, mas parece que é o mesmo problema de qualquer maneira.
Não acredito que é tão complicado. É isso?
man virt-install
diz:
If you want to use those options with CDROM media, you have a few options:
* Run virt-install as root and do --location ISO
* Mount the ISO at a local directory, and do --location DIRECTORY
* Mount the ISO at a local directory, export that directory over local http, and do --location http://localhost/DIRECTORY
Não é isso que estou fazendo?
Alguém diz que ele mudou o .iso para / cdrom e funcionou, mas eu não entendi exatamente o que ele fez e não consegui reproduzir.
Não posso usar em --cdrom
vez de --location
como nesta pergunta, porque --extra-args
só funciona se especificado com --location
.
virt-install --connect qemu:///system --virt-type kvm --name prod --ram 6144 --disk /srv/vm/prod.qcow,format=qcow2,size=10 --cdrom=/home/jerome/debian-8.0.0-amd64-netinst.iso --network bridge=br0 --os-type linux --os-variant debianwheezy --extra-args='console=tty0 console=ttyS0,115200n8 serial'
ERROR --extra-args only work if specified with --location. See the man page for examples of using --location with CDROM media
Editar:
Entrar com --debug
virt-install --connect qemu:///system --virt-type kvm --name prod --ram 6144 --disk /srv/vm/prod.qcow,format=qcow2,size=10 --location=/home/jerome/debian-8.0.0-amd64-netinst.iso --network bridge=br0 --os-type linux --os-variant debianwheezy --extra-args='console=tty0 console=ttyS0,115200n8 serial' --debug
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:187) Launched with command line: /usr/share/virt-manager/virt-install --connect qemu:///system --virt-type kvm --name prod --ram 6144 --disk /srv/vm/prod.qcow,format=qcow2,size=10 --location=/home/jerome/debian-8.0.0-amd64-netinst.iso --network bridge=br0 --os-type linux --os-variant debianwheezy --extra-args=console=tty0 console=ttyS0,115200n8 serial --debug
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:195) Requesting libvirt URI qemu:///system
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:199) Received libvirt URI qemu:///system
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (virt-install:193) Requesting virt method 'default', hv type 'kvm'.
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (virt-install:432) Received virt method 'kvm'
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (virt-install:433) Hypervisor name is 'hvm'
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:476) DISPLAY is not set: defaulting to nographics.
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (guest:208) Setting Guest.os_variant to 'debianwheezy'
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (diskbackend:171) Path '/srv/vm' is target for pool 'srv-kvm'. Creating volume 'prod.qcow'.
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (connection:228) Fetching volume XML failed: Storage volume not found: no storage vol with matching path '/media/cdrom0/debian-8.0.0-amd64-netinst.iso'
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (virt-install:551) Guest.has_install_phase: True
Starting install...
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (distroinstaller:417) Using scratchdir=/var/lib/libvirt/boot
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:204) Preparing mount at /var/lib/libvirt/boot/virtinstmnt.srz86f
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:214) mount cmd: ['/bin/mount', '-o', 'ro,loop', '/home/jerome/debian-8.0.0-amd64-netinst.iso', '/var/lib/libvirt/boot/virtinstmnt.srz86f']
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:302) Finding distro store for location=/home/jerome/debian-8.0.0-amd64-netinst.iso
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/.treeinfo
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:325) Prioritizing distro store=<class 'virtinst.urlfetcher.DebianDistro'>
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/current/images/MANIFEST
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/daily/MANIFEST
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/Fedora
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:99) Fetching URI: /var/lib/libvirt/boot/virtinstmnt.srz86f/.disk/info
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:110) Saved file to /var/lib/libvirt/boot/virtinst-info.lZMVqL
Retrieving file info... | 160 B 00:00 ...
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:1016) Regex didn't match, not a ALT Linux distro
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/current/images/MANIFEST
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/install/netboot/version.info
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/SL
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/directory.yast
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/CentOS
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/VERSION
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/Server
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/Client
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/RedHat
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/images/pxeboot/vmlinuz
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/images/boot.iso
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/boot/boot.iso
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/current/images/netboot/mini.iso
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:183) local hasFile: Couldn't find /var/lib/libvirt/boot/virtinstmnt.srz86f/install/images/boot.iso
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (urlfetcher:225) Cleaning up mount at /var/lib/libvirt/boot/virtinstmnt.srz86f
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:234) File "/usr/share/virt-manager/virt-install", line 876, in <module>
sys.exit(main())
File "/usr/share/virt-manager/virt-install", line 870, in main
start_install(guest, continue_inst, options)
File "/usr/share/virt-manager/virt-install", line 588, in start_install
fail(e, do_exit=False)
File "/usr/share/virt-manager/virtinst/cli.py", line 234, in fail
logging.debug("".join(traceback.format_stack()))
[mer., 03 juin 2015 17:46:12 virt-install 12991] ERROR (cli:235) Could not find an installable distribution at '/home/jerome/debian-8.0.0-amd64-netinst.iso'
The location must be the root directory of an install tree.
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:237)
Traceback (most recent call last):
File "/usr/share/virt-manager/virt-install", line 560, in start_install
dom = guest.start_install(meter=meter, noboot=options.noreboot)
File "/usr/share/virt-manager/virtinst/guest.py", line 384, in start_install
self._prepare_install(meter, dry)
File "/usr/share/virt-manager/virtinst/guest.py", line 277, in _prepare_install
util.make_scratchdir(self.conn, self.type))
File "/usr/share/virt-manager/virtinst/installer.py", line 201, in prepare
self._prepare(guest, meter, scratchdir)
File "/usr/share/virt-manager/virtinst/distroinstaller.py", line 444, in _prepare
self._prepare_kernel_url(guest, fetcher)
File "/usr/share/virt-manager/virtinst/distroinstaller.py", line 347, in _prepare_kernel_url
store = urlfetcher.getDistroStore(guest, fetcher)
File "/usr/share/virt-manager/virtinst/urlfetcher.py", line 346, in getDistroStore
fetcher.location))
ValueError: Could not find an installable distribution at '/home/jerome/debian-8.0.0-amd64-netinst.iso'
The location must be the root directory of an install tree.
[mer., 03 juin 2015 17:46:12 virt-install 12991] DEBUG (cli:248) Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start prod
otherwise, please restart your installation.
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start prod
otherwise, please restart your installation.
Ele funciona, --location http://ftp.us.debian.org/debian/dists/stable/main/installer-amd64/
mas não é uma pena fazer isso quando uma imagem .iso está disponível localmente?
Perda de rastreabilidade: você não pode reproduzir mais tarde, tendo certeza de obter exatamente a mesma fonte.
Uso multiplicado da largura de banda de servidores / espelhos.
Necessidade de acesso à Internet.
Mais devagar.
Respostas:
virt-install
tenta extrair arquivos do kernel e initrd da imagem ISO. Com--debug
você pode ver todas as atividades, incluindo montagem em loop, pesquisa desses arquivos, etc.Suponho
virt-install
que não suporte imagens ISO Netinst do Debian com--location
(mas de alguma forma o Ubuntu é compatível?).Para inicializar um kernel
--extra-args
, elevirt-install
precisa ter o kernel e os arquivos initrd correspondentes.--cdrom
simplesmente anexa o ISO à unidade de CD do hóspede, o que é insuficiente para trabalhar--extra-args
.Se você quiser usar
--extra-args
, eu recomendo que você use arquivos de kernel / initrd "netboot" especificando a URL do instalador Debian do seu espelho mais próximo, como--location http://ftp.us.debian.org/debian/dists/stable/main/installer-amd64/
descrito no manual.fonte
Este método funcionou para mim:
fonte
A diferença está nos arquivos iso usados.
Não está relacionado à maneira como
virt-install
é usado (--location
usado com URL http versus--location
usado com caminho para um arquivo iso local).Aqui está um comando que funciona ao usar os repositórios online da Debian como
--location
(incluindo obter saída para concluir a instalação até a primeira inicialização (duas outras etapas são necessárias para finalmente entrar na nova VM, mas isso é outra história):Você pode ter a exata mesmo comando, mas usando o acima mencionado arquivo Centos ISO como
--location
, e ele funciona bem (exceto que a conexão com o console serial não parece trabalho no início, mas, em princípio, as partidas de instalação usando --location e o arquivo ISO):A saída é:
Mas se você usar o arquivo Debian ISO para
--location
, você recebe o erro:IMHO isso prova que há algo faltando / algo "errado" com a ISO Debian (não tenho certeza no momento de onde eu o obtive, mas talvez alguém possa baixar um novo e repetir os testes ...)
fonte
virt-install
podem "percorrer" a estrutura de diretórios procurandoinitrd.img
ekernel.img
. Com um ISO local,virst-install
primeiromount
o ISO deve percorrer a estrutura de diretórios e, é claro,mount
requer acesso root para montar locais arbitrários (nãofstab
).--location
para todos 3. O Centos-6virt-install
não reconhece a estrutura de diretórios do Ubuntu e--debug
diz isso. O nível superior do Centos-7 inclui a.treeinfo
, que é uma das coisas quevirt-install
procura, por isso tenta inicializá-lo. Mas falha mais tarde de qualquer maneira. Estou surpreso com o que é um monte de merda esse software.O seguinte funcionou para mim, instalando o Debian 10 a partir de um sistema host Ubuntu 16.04:
fonte
É feio, especialmente se você quiser usar arquivos do kickstart, mas aqui está o que eu fiz para iniciar esse processo:
A diferença básica entre o que eu fiz e o que você fez é que eu usei a
--location
tag (-l
para abreviar) para apontar para o meu iso.fonte
RHCE2
.recentemente deparei com esse problema. Simplesmente usou um instalador remoto com --location. Devo enfatizar que, dependendo da sua versão virsh, os links para instaladores remotos podem estar desatualizados na página de manual.
Acabei de seguir este exemplo e tudo correu bem: https://www.packet.com/developers/guides/kvm-and-libvirt/
No meu caso, mudei 'xenial' para 'biion' em http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/ e a instalação foi concluída . De agora em diante, use esse método sempre.
fonte