我安装了一块新主板(以及 CPU 和 RAM)(ASRock H97 Pro4,板载 Intel 千兆以太网),并尝试让现有的 LMDE(Linux Mint Debian 版)与其配合使用。到目前为止一切顺利,但没有互联网。
互联网通过命令行进行管理,使用pon dsl-provider
。现在显示
Plugin rp-pppoe.so loaded.
/usr/sbin/pppd: In file /etc/ppp/peers/dsl-provider: unrecognized option 'eth1'
sudo pppoeconf
显示“抱歉,找不到可用的以太网卡。”
/sbin/ifconfig
显示根本没有 eth0 或 eth1。那里唯一的条目是lo
(Loopback)。
还有一些其他文章认为 eth0 或 eth1 可能只是被重命名为其他名称,例如enp0s10
。但重命名后的名称会显示在 ifconfig 中,但事实并非如此。
我也尝试了sudo service networking stop
(works) 和sudo service networking start
。第二条命令给出:
[....] Configuring network interfaces...eth1: ERROR while getting interface flags: No such device
Failed to bring up dsl-provider.
done.
并且仍然仅lo
在 ifconfig 中。
ip addr show eth0
(和 eth1 类似)显示:
dig: couldn't get address for 'resolver1.opendns.com': not found
lspci -v
显示:
[..]
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (2) I218-V
Subsystem: ASRock Incorporation Device 15a1
Flags bus master, fast devsel, latency 0, IRQ 5
Memory at f7200000 (32-bit, non-prefetchable) [size=128K]
Memory at f7238000 (32-bit, non-prefetchable) [size=4K]
I/O ports at f040 [size=32]
Capabilities: <access denied>
[..]
编辑 I:有趣的是,我以为我已经写了关于该/etc/udev/rules.d/70-persistent-net.rules
文件的一些内容。也许我在写帖子时把它删除了。
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:52:fe:13", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.5/0000:04:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:d0:91:e1:68", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x1814:/sys/devices/pci0000:00/0000:00:1e.0/0000:05:01.0 (rt61pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:21:29:66:32:7a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
# USB device 0x:0x (r8712u)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:5c:8b:db:40", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
我猜想与以太网相关的两条线都来自旧主板。因此,如果我移除它们,就什么也不剩了。
此外,该文件表示它将使用 重新生成/lib/udev/write_net_rules
。根据网络上的其他文章,如果文件被删除/重命名/丢失,这可能会在重新启动时手动或自动发生。但是,就我而言,重新启动时不会重新生成任何内容。/lib/udev/write_net_rules
首先手动运行显示“缺少 $INTERFACE”。当执行以下操作时这些说明,这ip addr show $INTERFACE
就是失败的地方。这就是我ip addr show eth0
上面发布的原因。以不同的方式执行(不记得了)显示输出文件被锁定(我不认为这与文件写入权限有关)。
编辑 II:我安装了额外的 PCI 以太网卡,看看是否可行。起初,这在 lspci 中添加了一行,但在 ifconfig 中没有任何新内容。现在,经过多次重启并安装额外的 HD(副作用?),我eth2
在 ifconfig 中得到了一个。我不知道这是 PCI 卡还是板载卡。
sudo pppoeconf
确实接收了 eth2,但随后无法配置互联网连接,并提示“您的提供商的访问集中器没有响应”。
无论如何,我应该尝试将其重命名为 eth0 / eth1,而不是 eth2。正在努力。
答案1
好吧,这只是猜测,但我希望我猜对了。
一些背景知识
如今,设备命名和/dev
文件系统中的条目创建由守护进程管理udev
,该守护进程必须安装在现有 Debian 中。为了使网卡接口名称可预测,udev
将它们绑定到其 MAC 地址(低级硬件地址,对于以太网卡,仅在以太网层上可见)。当udev
观察到网络接口出现时首次,它会etnN
为其生成一个名称,并更新包含网络接口命名规则的文件,在 Debian 中,该文件是
% ls -1 /etc/udev/rules.d/*net*
/etc/udev/rules.d/70-persistent-net.rules
顺便说一句,我相信实际上并不是它
udev
本身更新了这个文件,而是当 Debianudev
看到网络接口卡的设备出现时调用的一些脚本,但确切的机制与我们的情况无关。
更换主板的问题在于新卡的 MAC 地址与旧主板上的卡的 MAC 地址不同,因此为新卡创建的接口的名称与“规则”文件中已有的名称不同。
怎么修
我只需使用任何文本编辑器打开该规则文件,删除与旧主板上的卡有关的所有行,然后编辑仅剩下的行以读取eth0
接口名称。
保存文件后你可以运行
# udevadm trigger
看到您的网卡重新出现在名称下eth0
。(如果这没有帮助,请运行service udev restart
或重新启动作为最后的手段。)
附注:ip addr ...
对于您的情况来说,它并不是很有用,因为它处理的是 IP 级别,而您正在努力配置链接级别 — 较低的级别。因此,您可以尝试使用命令ip link
列出可用的网络“链接”,这通常意味着网络接入卡。
答案2
这是我所做的,它(某种程度上)解决了我的问题。我不会说这是一个通用的解决方案。尤其是因为不是每个人都有备用的 PCI 以太网卡。
- 安装 PCI 以太网卡(除板载卡外)。 在我的情况下,这是旧的 Realtek RTL-8139。
- 重命名
/etc/udev/rules.d/70-persistent-net.rules
。 - (可能做一些不相关的事情,例如连接新的 HD,或者围着火跳舞)
- 重启。
- 运行
sudo pppoeconf
。如果它要求您进行备份,请执行备份。然后按照步骤操作。
结果(对我而言):
- ifconfig 将添加的 PCI 以太网卡显示为 eth0,但是除此之外没有其他 eth* 条目(只有
lo
和ppp0
)。 - 文件
/etc/udev/rules.d/70-persistent-net.rules
尚未重新生成。它不存在。 - 互联网工作。
我猜这意味着板载以太网仍然没有被识别。我猜想新的板载以太网在技术上比旧的 PCI 卡要好一些。但我不知道这会带来多大的实际差异。