我有以下问题。我的电脑很旧,它有一个内置的以太网端口无法正常工作,不是由于配置错误,我认为它是物理损坏的。它在Ubuntu甚至在Windows上都不起作用。我有一个以太网PCI卡,这是我使用的。问题是,由于一些奇怪的原因,有效的卡有时会从eth0
更改为eth1
而我必须运行dhcpd
,因为我并不总是通过DHCP获取IP。现在,实际的问题是,是否有某种方法可以禁用使用其MAC地址无效的卡?我无法停用eth0
或eth1
,因为我确信它并不总是“指向”同一张卡。
答案 0 :(得分:6)
它们是相同类型的芯片组还是不同的芯片组?
如果它们不同,那么最简单的解决方案可能就是将以太网芯片组的模块列入黑名单。
首先需要找到模块名称(这是针对eth0):
dmesg | grep eth0
看看你是否有以下内容:
[ 2.209295] r8169 0000:05:00.0: eth0: RTL8168d/8111d at 0xffffc90000c6e000, 00:24:1d:11:b6:64, XID 081000c0 IRQ 44
在我的情况下,'r8169'是模块名称。您还可以使用'lsmod'查看当前加载的模块列表,因此请检查它是否显示在那里。
接下来,您需要将模块列入黑名单。对此有一个entry on the Arch wiki。
答案 1 :(得分:6)
这里的弓箭手;我有一种方法可以根据硬件pci id禁用我的nVidia显卡的HDMI端口音频芯片;也许你可以对你的nic应用相同的方法:
找到以太网的pci id:
$ lspci | grep Eth
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 05)
找到相应的目录:
$ find /sys/devices -name *00:19.0
/sys/devices/pci0000:00/0000:00:19.0
该目录中应该有一个名为“remove”的文件。 您可以通过编辑/etc/rc.local
在启动时禁用该设备echo 1 > /sys/devices/pci0000:00/0000:00:19.0/remove
第二个想法;如果在/etc/rc.local完成之前加载了模块,那么这可能不适用于你的情况......在“错误”的顺序中分配/ dev / eth0和/ dev / eth1然后有一点好处/etc/rc.conf禁用其中一个...你仍然可以将你喜欢的nic作为eth1。这曾经是多声卡上的alsa的问题,因此设计了通过模块参数分配卡的编号的方法。也许模块本身允许这个?
答案 2 :(得分:4)
我正在通过板载网卡收集你的描述。最好的解决方案是在主板BIOS而不是操作系统中禁用它。这种方法因制造商而异,但我确信您可以在某处找到适合您的模型的手册。
答案 3 :(得分:0)