我将运行 Ubuntu 服务器 15.04 的虚拟机更新为刚刚发布的新稳定版 15.10。
没有明显的问题,但重启后机器失去了网络连接。lspci
显示正确的卡并lsmod
证明驱动程序已加载。
关于编辑或删除的提示/etc/udev/rules.d/70-persistent-net.rules
没有成功(仍然没有网络,没有新文件),著名的/lib/udev/write_net_rules
甚至不存在。
我对 udev 和 systemd 没有太多线索,所以我花了一些时间在 /sys/class/net 中发现网络接口名称发生了变化。它变成了ens32
,从eth0
. 在我更改/etc/network/interfaces
网络通信后再次启用。
但是 - 为什么会发生这种情况?如果发生这种情况,接口文件不应该自动更新吗?
现在我把虚拟网卡删了又新建了,eth0
就变成了eno16777728
,不是这样,嗯,不错。
是否应将此行为(至少是升级过程的行为)报告为错误?
此外,现在/etc/udev/rules.d/70-persistent-net.rules
已经过时了吗?而且(虽然只是部分相关)呢/etc/udev/rules.d/70-persistent-cd.rules
?)
编辑 - 附加问题(在接受答案后)/etc/network/interfaces
从实际接口名称
的依赖困扰着我。我在另一台虚拟机中尝试了 *ubuntu 的新安装。令我惊讶的是,仅/etc/network/interfaces
包含对环回设备的引用。但是,对于我的原始 VM,此更改阻止了网络启动。那么我还需要改变什么?
编辑
好吧,从另一个测试中我发现一个新的 Ubuntu服务器在 中 具有网络接口卡/etc/network/interfaces
,而 XUbuntu 没有。也许它正在使用network-manager
或其他东西。
kyo*_*ake 58
在 Ubuntu 15.10 (Wily Werewolf) 中,从 systemd/udev 开始会自动为所有本地以太网、Wlan 和 Wwan 接口(源)分配可预测的、稳定的网络接口名称。
udev 现在原生支持以下不同的网络接口命名方案:
eno1
)ens1
)enp2s0
)enx78e7d1ea46da
)eth0
- 已弃用默认情况下,systemd 现在将按照策略命名接口:
你如何禁用这个?
您基本上有以下选择:
/etc/udev/rules.d/70-my-net-names.rules
cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules
,然后在那里编辑文件并根据需要更改行。net.ifnames=0
在内核命令行上传递。小智 40
ArchWiki 初学者指南提供了一种更简单的方法。
首先通过以下方式获取您的设备 MAC 地址
$ ip link
Run Code Online (Sandbox Code Playgroud)
输出显示为
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)
您的设备 MAC 地址是
20:68:9d:xx:xx:xx
Run Code Online (Sandbox Code Playgroud)
只需创建文件(只需在文本编辑器中使用 sudo 权限打开)
$ nano /etc/udev/rules.d/10-network.rules
Run Code Online (Sandbox Code Playgroud)
添加以下行
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
Run Code Online (Sandbox Code Playgroud)
将 name 替换为您想要的名称,将 aa:bb:cc:dd:ee:ff 替换为您的设备 MAC 地址。
现在只需重新启动计算机,设备名称应该已更改。
小智 18
试试这个:
编辑你的/etc/default/grub
. 改变线从
GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)
到
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Run Code Online (Sandbox Code Playgroud)
最后运行:
# update-grub
Run Code Online (Sandbox Code Playgroud)
以 root 身份,然后重新启动系统。
我知道这可能有点晚了,添加 10-network.rules 似乎有所帮助,但并不完全。我必须添加设备的内核名称才能重命名。这是我如何让 /etc/udev/rules.d/10-network.rules 工作......
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"
Run Code Online (Sandbox Code Playgroud)
并将 KERNEL=="" 更改为您的内核在启动时为设备命名的名称。
凯里
归档时间: |
|
查看次数: |
148972 次 |
最近记录: |