在 Windows 10 Pro PC(Win10ProPC#1)中,我有一个 Ubuntu 18.04.02 LTS VM,创建于很久以前。从那时起,我也一直在使用以下命令作为脚本的一部分。因此,在 Win10ProPC#1 中运行以下命令
Get-vm -Name Ubuntu18.04.2LTS | Select -ExpandProperty NetworkAdapters
返回
VMName IPAddresses
------ -----------
Ubuntu18.04.2LTS {172.17.199.244, ffff::ffff:ffff:ffff:ffff}
我最近在另一台具有类似规格的 PC 上重新创建了相同的环境(Win10ProPC#2)。有一个小变化,Ubuntu VM 现在是 Ubuntu18.04.3LTS。但是在 Win10ProPC#2 中运行以下命令
Get-vm -Name Ubuntu18.04.3LTS | Select -ExpandProperty NetworkAdapters
返回
VMName IPAddresses
------ -----------
Ubuntu18.04.3LTS {}
在这两种情况下,虚拟机 (Guest) 都可以访问互联网,我可以从客户操作系统内部找到 IP 地址。 (虽然这证实了有一个 IP,但这不是我想要的。我需要从上面的命令中获取 IP。)
问题是 Win10ProPC#2 中的网络适配器中没有报告 IP 地址,而 Win10ProPC#1 中有一些。我需要让 Win10ProPC#2 能够获取虚拟机的 IP 地址。
两台计算机均使用最新的 Windows 10 Pro 版本(64 位)。此外,两台虚拟机均具有动态 IP 并使用“默认交换机”网络配置。在两种情况下,脚本均由 Powershell“以管理员身份”运行。
我担心我遗漏了某个设置或配置,但我已经仔细检查了 HyperV 的所有设置,发现它们完全相同。有什么想法吗?
答案1
要充分利用 Hyper-V,请安装适当的 linux-tools 和 linux-cloud-tools 包来安装可与您的 Ubuntu 虚拟机一起使用的工具和守护程序。
sudo apt-get update
sudo apt-get install linux-image-virtual linux-tools-virtual linux-cloud-tools-virtual
sudo reboot now
负责hv-kvp-daemon
将 IP 信息从客户机共享给虚拟机管理程序,因此请确保它正在运行
sudo systemctl status hv-kvp-daemon
本文提供有关检查 状态的信息hv-kvp-daemon
。尝试确定 是否hv-kvp-daemon
正在运行。有可能 已linux-image-virtual linux-tools-virtual linux-cloud-tools-virtual
安装但服务未处于活动状态。例如,当尝试启动 时,hv-kvp-daemon
我收到以下响应。
ubuntu@LinuxVM:~$ sudo hv_kvp_daemon
WARNING: hv_kvp_daemon not found for kernel 5.0.0-36
You may need to install the following packages for this specific kernel:
linux-tools-5.0.0-36-generic
linux-cloud-tools-5.0.0-36-generic
You may also want to install one of the following packages to keep up to date:
linux-tools-generic
linux-cloud-tools-generic
安装正确的版本解决了我的问题。
$ sudo apt-get install linux-tools-5.0.0-36-generic linux-cloud-tools-5.0.0-36-generic linux-tools-generic linux-cloud-tools-generic
之后就可以hv_kvp_daemon
按如下方式启动。
sudo hv_kvp_daemon
之后可以从 powershell 中获取 IP。