准备

准备

我正在努力使用ubuntu 最小图像创建 libvirt/KVM VM。我启动了 VM-Manager 向导,选择“导入现有磁盘映像”,将其指向下载的映像并确保网络适配器使用 virtio 驱动程序。我为 VM 分配了 2 个虚拟核心和 4GB RAM。所有其他设置都保留为默认值。不幸的是,VM 在启动时冻结,紧接着显示 BIOS 信息和“从硬盘启动...”消息。我尝试了 16.04 和 18.04 映像。对于 16.04,会显示附加消息“错误:没有这样的设备:root”。

任何关于如何使其工作的提示都将不胜感激:)

我的主机正在运行 ubuntu-16.04,有 2 个 CPU 核心(4 个带超线程的虚拟核心)和 16GB RAM。

答案1

最小镜像是云镜像的一个子类型,因此需要使用紫外线工具正如解释的那样这个答案。然而,有几个关键细节缺失:

--source1)要下载最少的图像,必须在选项中指定特殊的URL uvt-simplestreams-libvirt

 uvt-simplestreams-libvirt sync --source https://cloud-images.ubuntu.com/minimal/daily/ release=bionic arch=amd64

上述 URL 使用每日构建的最小映像,其中已应用所有更新。如果出于某种原因,您想从未更新的 vanilla 版本映像开始,则可以使用https://cloud-images.ubuntu.com/minimal/releases/

2)如果您下载了其他图像(例如从默认源下载),则可能需要label在创建最小虚拟机时指定适当的过滤器:

uvt-kvm create --memory 4096 --cpu 2 myminimalvm release=bionic arch=amd64 "label=minimal daily"

--ssh-public-key-file根据您的 ssh 设置,您可能还需要/想要使用选项。
如果您在上一步中使用了release而不是image,则请相应地调整过滤器。dailylabel

3)创建虚拟机后,你应该确保Cloudinit 工具已完成其工作:

uvt-kvm wait --insecure myminimalvm

--ssh-private-key-file(您可能还需要根据您的 ssh 设置使用选项)

此时,VM 已准备就绪:)您现在可以使用标准 libvirt 工具(包括 virt 管理器 GUI)来操作它(启动/停止、暂停/恢复等)。

但请注意,如果你打开它的控制台,你将只看到 BIOS 启动信息(如问题中所述),因为最小图像不会输出任何事物在控制台上,也不启动登录服务。您只能通过 ssh 访问它们:要么使用

uvt-kvm ssh --insecure myminimalvm  # again, --ssh-private-key-file may be needed

或者在您确定虚拟机的 IP 后直接使用 ssh(使用 virt manager,或者,uvt-kvm ip myminimalvm并且它通常在 的输出中uvt-kvm wait):

ssh [email protected]

答案2

准备

看看硬件是否支持硬件虚拟化...

$ egrep -c '(vmx|svm)' /proc/cpuinfo 
2                // A result of '0' means no. '1' or higher means yes

...然后重新启动进入 BIOS 并将其打开。

创建第一个虚拟机:

一旦开启虚拟化,从零到完全运行只需三个命令。主机是 Ubuntu 18.04。客户机也将是 18.04,但那只是因为我缺乏想象力。

1) 安装 KVM、qemu、virt-manager 和您需要的所有其他工具。它们都是单个包的依赖项:

$ sudo apt install uvtool

2) 下载 Ubuntu 18.04 的云镜像。云镜像是无头的 - 只有外壳。下载需要几分钟(大约 350 MB),所以不要惊慌:

$ uvt-simplestreams-libvirt sync release=bionic arch=amd64

3)创建并启动虚拟机客户机“test1”

$ uvt-kvm create test1 release=bionic

从主机启动、停止、暂停和恢复 VM GUEST

$ virsh list              // Check status
 Id    Name                           State
----------------------------------------------------
 1     test1                          running

$ virsh suspend test1
Domain test1 suspended

$ virsh resume test1
Domain test1 resumed

$ virsh shutdown test1
Domain test1 is being shutdown

$ virsh list --all        // Use --all to show inactive VMs
 Id    Name                           State
----------------------------------------------------
 -     test1                          shut off

$ virsh start test1
Domain test1 started

$ virsh list
 Id    Name                           State
----------------------------------------------------
 2     test1                          running

登录至访客

host$ uvt-kvm ssh test1

相关内容