我已经将操作系统升级到 Ubuntu 16.04,并尝试使用我的KVM管理工具我已经在 Ubuntu 14.04 上成功使用了一段时间。不幸的是,virt-install 似乎已经发生了变化,不再接受--location
带有 ISO 映像的参数,因为它会输出以下错误:
Starting install...
ERROR Could not find an installable distribution at '/home/programster/apps/KVM-Command-Generator/installation_media/Ubuntu_14.04.iso'
The location must be the root directory of an install tree.
但是,如果我现在使用--cdrom
参数代替--location
它,我就不再喜欢这样一个事实:我有一个--extra-args
参数指定 kickstart/preseed 文件的位置,并且控制台要使用 ttyS0。
--extra-args "console=ttyS0 ks=http://pastebin.com/raw.php?i=SrTvbt6Z"
此时,我尝试从 CD 中删除 --extra-args 参数进行安装,但如果您这样做,您将无法在 CLI 中看到安装的任何输出。我猜它希望您通过 VNC 或其他不太理想的方式进行连接。
作为参考,原始安装命令是:
qemu-img create -f qcow2 -o preallocation=metadata,lazy_refcounts=on /home/programster/apps/KVM-Command-Generator/vms/ubuntu14.04.img 20G
virt-install --connect qemu:///system \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name ubuntu14.04 \
--os-variant=ubuntu14.04 \
--location /home/programster/apps/KVM-Command-Generator/installation_media/Ubuntu_14.04.iso \
--extra-args "console=ttyS0 ks=http://pastebin.com/raw.php?i=SrTvbt6Z" \
--disk /home/programster/apps/KVM-Command-Generator/vms/ubuntu14.04.img,bus=virtio,format=qcow2 \
--ram 512 \
--vcpus 2
新的命令如下:
qemu-img create -f qcow2 -o preallocation=metadata,lazy_refcounts=on /home/programster/apps/KVM-Command-Generator/vms/ubuntu14.04.img 20G
virt-install --connect qemu:///system \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name ubuntu14.04 \
--os-variant=ubuntu14.04 \
--cdrom /home/programster/apps/KVM-Command-Generator/installation_media/Ubuntu_14.04.iso \
--disk /home/programster/apps/KVM-Command-Generator/vms/ubuntu14.04.img,bus=virtio,format=qcow2 \
--ram 512 \
--vcpus 2
问题
我怎样才能让 virt-install 从本地 ISO 映像进行安装,并使用额外的参数来指定 kickstart/preseed 文件的位置,并允许我查看进度并可能通过 CLI 而不是使用 VNC 选择选项?
也许我必须指定一个 Web URL 而不是 ISO 映像--location
,但如果我可以传递本地位置,以防互联网质量不佳,我会更喜欢。
额外信息
- Virt-install 版本:1.3.2
- Ubuntu 16.04 4.4.0-24-通用
- 我下载的 ISO 映像链接(Ubuntu 迷你 iso)
答案1
@Programster - 我已向 virt-manager 维护人员的邮件列表报告了此问题。请参阅http://www.redhat.com/archives/virt-tools-list/2016-August/msg00009.html。您可以关注该主题了解更多详细信息。知道这在 Ubuntu 14.04 中有效,而在 Ubuntu 16.04 中无效是解决问题的关键。
最重要的是,这个问题现在已在https://github.com/virt-manager/virt-manager。
修复该问题的提交是:https://github.com/virt-manager/virt-manager/commit/3f15a489cda87f8028828d567848193dd2640a43
我不确定什么时候会将其添加到各种 virt-manager 软件包中。但您可以获取源代码并从那里运行 virt-install。(注意:您需要添加一些软件包,并且可能应该创建一个 Python 虚拟环境,因此您可能需要在 VM 上进行实验,然后再在需要保持稳定和清洁的系统上使用额外的软件包。)
答案2
在阅读了--location
virt-install 手册页中的相关部分后,它看起来像一个应该仍然能够用来location
指定 ISO 映像的路径,但对我来说不起作用。幸运的是,它给出了一些示例,其中列出了适用于 Ubuntu 的示例:
http://us.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64/
对我来说,使用它很有效,因此为了安装 Ubuntu 14.04,我所做的就是将其更改wily
为trusty
Bob's your uncle!我希望我可以从本地 mini.iso 安装,但与此同时,这对我和其他人应该都有效。
答案3
我今天遇到了同样的问题,以前的一些答案帮助我找到了解决方法。我的解决方案是在 virt-install 手册中关于 iso 安装的找到的,因为我使用的是 net install iso,所以需要指定额外的内核和 initrd 参数,指示 iso 中的路径来找到它们。多亏了这个--debug
选项,我找到了安装程序代码以便更好地了解发生了什么。因此,最终配置行变成了这样:
virt-install --name centos7 \
--virt-type kvm \
--memory 2048 \
--vcpus 2 \
--disk path='/path_to_isos/CentOS-7-x86_64-NetInstall-2003.iso',device=cdrom \
--disk path=centos7.qcow2,device=disk \
--location '/path_to_isos/CentOS-7-x86_64-NetInstall-2003.iso',initrd=isolinux/initrd.img,kernel=isolinux/vmlinuz \
--graphics none \
--os-type Linux \
--os-variant centos7.0 \
--network type=direct,source=enp3s0,source_mode=bridge,model=virtio \
--extra-args 'console=ttyS0,115200n8 serial' \
--console pty,target_type=serial \
--debug
这里的关键是位置上的附加参数,指定vmlinuz
为内核和initrd.img
。为了在 iso 中查找路径,我使用了isoinfo
以下命令:
$ isoinfo -J -i '/path_to_isos/CentOS-7-x86_64-NetInstall-2003.iso' -l
因此,在本例中,我在 isolinux 文件夹中找到了它们。此外,我还定义了 cdrom 设备的磁盘,以便在安装时可以访问它,但由于在本例中我使用的是网络存储库,因此我通过基于文本的安装菜单将源定义为 CentOS 7 的镜像之一。我猜如果需要,源可以是完整的 CD/DVD iso。使用位置可以启用额外参数,因此我可以在整个安装过程中使用文本控制台访问它。希望这有助于完成对原始问题的回答。
答案4
以下内容对我从 Ubuntu 16.04 主机系统安装 Debian 10 有用:
cd /usr/share/virt-manager/virtinst/
patch <<.
--- urlfetcher.py.orig 2019-07-25 13:54:37.496567791 +1200
+++ urlfetcher.py 2019-07-25 13:54:43.180373257 +1200
@@ -663,6 +663,8 @@
]
_hvm_paths = [("pxeboot/vmlinuz",
"images/pxeboot/initrd.img"), # Fedora
+ ("install.amd/vmlinuz",
+ "install.amd/initrd.gz"), # Debian
]
_iso_paths = ["images/boot.iso", # RH/Fedora
"boot/boot.iso", # Suse
.
virt-install --debug ... --location=/srv/software/Debian/debian-10.0.0-amd64-netinst.iso --extra-args='console=tty0 console=ttyS0,115200n8'