在内核 3.15.6 上加载/编译虚拟化模块的新内核中似乎不存在设备 eth0

在内核 3.15.6 上加载/编译虚拟化模块的新内核中似乎不存在设备 eth0
cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:15:5D:02:14:22", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisk noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00: brd 00:00:00:00:00:00

cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:15:5D:02:14:22
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

我一直收到这个错误Device eth0 does not seem to be present

这是在 Hyper-V 机器上,我还安装了最新的集成服务。HWADDR 与我为 Hyper-V 机器设置的一致。

编辑:我编译并启动了内核 3.15.6,并在内核中启用了 KVM/XEN 支持。启用这些选项会不会有问题?我从默认的 CentOs 6.5 内核加载了配置,因此一切启动正常,但没有网络。

如果我启动默认的 2.6.32 内核,eth0 就会返回。

我需要做什么?

我启用了以下选项:在处理器类型和功能-->Linux 客户支持下:

--- Linux guest support
[*]   Enable paravirtualization code
[ ]     paravirt-ops debugging (NEW)
[*]     Paravirtualization layer for spinlocks
[*]     Xen guest support (NEW)
[*]   KVM Guest support (including kvmclock) (NEW)
[ ]     Enable debug information for KVM Guests in debugfs (NEW)
[*]   Paravirtual steal time accounting (NEW)

在虚拟化下:

--- Virtualization
<M>   Kernel-based Virtual Machine (KVM) support
<M>     KVM for Intel processors support
<M>     KVM for AMD processors support
[*]     KVM legacy PCI device assignment support
<M>   Host kernel accelerator for virtio net

答案1

您的虚拟 NIC 完全缺失。由于您说您编译了自己的内核,我认为您很可能忘记包含 Hyper-V 半虚拟驱动程序。您使用的是 Hyper-V,而不是 KVM,因此 KVM 和 Xen 的那些选项无关紧要。

具体来说,您正在寻找CONFIG_HYPERV_NETHyper-V 虚拟网络接口。您可能还想包括用于 SCSI 磁盘、动态内存等的其余 Hyper-V 驱动程序。

在我自己的 3.15.6 系统上,我有:

CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_KEYBOARD=m
CONFIG_FB_HYPERV=m
CONFIG_HID_HYPERV_MOUSE=m
CONFIG_HYPERV=m
CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_BALLOON=m

相关内容