2012-01-12 135 views
3

我有以下问题。我的电脑很旧,它有一个内置的以太网端口不工作,不是由于配置错误,我认为它的物理损坏。它在Ubuntu甚至Windows上都不起作用。我有一个以太网PCI卡,这是我使用的。问题是,出于某种奇怪的原因,执行工作的卡有时会从eth0更改为eth1,并且我必须运行dhcpd,因为我并不总是通过DHCP获取IP。现在,真正的问题是,是否有某种方法可以禁用无法使用其MAC地址或卡的卡?我不能禁用eth0eth1,因为我确定它并不总是“指向”同一张卡。在Arch Linux中禁用网络接口

回答

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

这个技巧。非常感谢你。 – Heldraug 2012-01-12 05:12:48

4

我从你的描述中收集了一个板载NIC。最好的解决方案是在主板BIOS而不是操作系统中禁用它。这种方法对于制造商而言有所不同,但我相信您可以在某处找到适合您型号的手册。

+0

我没有考虑将它从BIOS中禁用。其他回答解决了我的问题,但我认为你是对的。谢谢您的回答。 – Heldraug 2012-01-12 05:13:39

6

在这里的同伴射手;我有一种方法用于禁用基于其硬件pci id的nVidia显卡的HDMI端口音频芯片;也许你可以采用同样的方法来你的网卡:

找到以太网的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 

应该有一个文件名为“删除”的该目录。 您可以通过编辑/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在多声卡上的一个问题,所以方法被设计为通过模块参数分配卡的编号。也许模块本身允许这样做?

+0

我再也没有那台电脑了,所以我害怕我再也不能测试了,但实际上它是有道理的。非常感谢你。 – Heldraug 2012-02-15 04:19:06