问题描述

  • 我在VMware上创建了两台虚拟机,一台用作PXE服务器,一台空的windows虚拟机,在PXE服务器的DHCP服务器正常的情况下,为什么我启动了Windows虚拟机后,报错找不到文件,而且页面不会显示任何获取到的IP信息?而Linux在启动后可以直接显示IP信息?

Linux和Windows的网络驱动在哪里?

在Linux系统中,网络驱动通常被编译到内核中,这种配置称为内核编译进模块(built-in)。因此,在Linux系统引导时,即使在加载文件系统之前,内核就已经包含了网络驱动程序,使得系统能够在PXE引导过程中直接与DHCP服务器通信,获取IP地址等信息。

相比之下,Windows系统的网络驱动通常是作为模块(或称为驱动程序)的形式存在的,这些模块在系统启动过程的某个时候被加载。在PXE引导过程中,Windows PE(Preinstallation Environment)可能需要首先加载适当的网络驱动程序,以便系统能够与网络通信,获取IP地址等信息。

是因为网络驱动的问题导致Windows获取不到IP地址嘛?

  • 不是

VMware的虚拟机通过PXE启动时,是怎么获取IP的?

在 VMware 虚拟机中,当你启动一台空虚拟机,并准备通过 PXE 安装 Windows 操作系统时,虚拟机的网络是通过 VMware 虚拟网络适配器来进行模拟的。

VMware 使用自己的虚拟网络驱动程序来模拟网络适配器,这些驱动程序在虚拟机启动时会被加载。这个虚拟网络适配器会在虚拟机的启动过程中与 DHCP 服务器进行通信,获取虚拟网络中的 IP 地址。

这里的关键点在于,VMware 在虚拟机启动时会自动加载所需的虚拟网络驱动程序,而这一过程是自动完成的,无需用户手动配置。因此,即使在空虚拟机中,VMware 已经为你提供了虚拟网络适配器并加载了相应的虚拟网络驱动程序,使虚拟机能够通过 DHCP 获取 IP 地址。

那为什么Windows看不到获取到的IP信息?Linux可以?

  • Windows 虚拟机:

当 Windows 虚拟机通过 PXE 引导时,它会与 VMware 虚拟网络适配器进行通信,并向 DHCP 服务器发出 DHCP 请求。这时,虚拟机获取到了 DHCP 分配的 IP 地址。如果在 PXE 引导过程中未找到引导文件(例如 boot.wim),Windows 虚拟机可能无法顺利引导,并在屏幕上显示相关信息。在这种情况下,虚拟机获取到了 IP 地址,但由于引导文件的问题,无法继续引导和显示。

  • Linux 虚拟机

类似地,Linux 虚拟机也通过 VMware 虚拟网络适配器获取 DHCP 分配的 IP 地址。由于在典型的 Linux 内核中,许多网络驱动程序是作为内核模块编译进内核的,因此虚拟机在 PXE 引导时可以直接使用这些驱动程序。即使在引导过程中还没有加载具体的文件系统,虚拟机仍然可以通过内核模块支持的网络驱动程序与网络通信。因此,Linux 虚拟机可以顺利显示获取到的 IP 地址。

总体来说,关键在于虚拟机是否能够通过虚拟网络适配器与虚拟网络正常通信,并通过 DHCP 获取到 IP 地址。Linux 在这个阶段能够顺利显示 IP 地址,部分原因是因为它的网络驱动程序通常是在内核中的,而 Windows 由于一些特殊的设计和引导文件的依赖,可能在引导文件未找到的情况下无法顺利显示获取到的 IP 地址。

VMware中的Linux虚拟机在还未安装操作的时候,也有内核?

是的,虚拟机在创建时,即使操作系统尚未安装,也已经有了一个基本的内核。这个内核通常称为"裸机内核"(Bare-metal Kernel)或"裸金属内核",是虚拟机监视器(如VMware、VirtualBox、Hyper-V等)提供的虚拟化环境的一部分。

这个裸机内核主要负责虚拟机的基本硬件访问和虚拟设备的管理。它允许虚拟机在没有安装操作系统的情况下启动,以及在操作系统未加载的情况下执行一些基本的操作,如 PXE 引导等。这样,在虚拟机中可以进行操作系统的安装过程。

当你启动虚拟机并进行操作系统安装时,实际上是在裸机内核的基础上运行一个操作系统的安装程序。一旦操作系统安装完成,虚拟机就可以运行操作系统的完整内核,而不再依赖于裸机内核。

最后修改:2024 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏