所以我看了
/etc/networks/interfaces
并看到了以下一行:不幸的是,调用ifup eth0
会显示以下消息:auto eth0
iface eth0 inet dhcp
所以我检查了
ifconfig -a
并看到了一个奇怪的设备: br />尝试将/etc/networks/interfaces
更改为名称会导致网络正常运行。我如何将设备名称改回eth0
?PS:我没有任何
70-persistent-net.rules
文件。操作系统是Ubuntu MATE 15.10 感谢。
#1 楼
在Raspberry Pi 2上运行Debian armhf时确实遇到了这个问题,您可以通过创建文件/etc/udev/rules.d/70-persistent-net.rules来更改接口名称,并将其放在SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
用您的eth0 MAC地址替换b8:ac:6f:65:31:e5,重新启动,它将变成eth0,重新启动后您可能无法访问Internet,因为在/ etc / network / interfaces定义了错误的接口,只需将enx *更改为eth0
编辑:这不是问题,而是新的接口命名方案“ Predictable Interface Names”,您应该适应并使用它而不是尝试还原到老了。
评论
感谢@UnSined,我进一步查找并发现必须添加:ln -s / dev / null /etc/udev/rules.d/80-net-name-slot.rules。基本上是禁用对事物的命名。现在工作..谢谢!
–汤姆·西维克(Tom Siwik)
16-3-30在21:07
用户现在是@Ficertyn ...为红帽文档的快乐读者提供了清晰的信息
–汤姆·西维克(Tom Siwik)
17年9月1日在11:47
我必须删除KERNEL ==“ eth *”条目才能起作用。
–罗杰·迪克(Roger Dueck)
19年1月4日在21:38
#2 楼
仅当在运行env{hwdaddress}
而不是$ ifconfig -a
时看到奇怪的网络接口设备(例如eth0
)时,此解决方案才有效。我尝试了有关添加规则的所有常见答案,但只有此修复程序有效。长话短说,运行$ apt-get update
已添加可预测的网络接口名称编辑以下文件:
$ vim /lib/udev/rules.d/73-usb-net-by-mac.rules
您应该看到:
ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{address}=="?[014589cd]:*", \
TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"
按如下所述在结尾处更改名称:假设一切都指向eth0,现在一切都应该可以正常工作。
ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{address}=="?[014589cd]:*", \
TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
IMPORT{builtin}="net_id", NAME="eth0"
评论
我花了很长时间来尝试使Ubuntu Server 16.04的Pi拥有稳定的eth0。谢谢。对您的答案进行一个小的修改,我建议您尝试,实施然后添加到答案中:将73-usb-net-by-mac.rules文件复制到/etc/udev/rules.d/目录中并进行修改那个;如果您在/lib/udev/rules.d中更改了一个,则在以后的操作系统更新中它可能会被覆盖。
–凯文·泰勒(Kevin Teljeur)
16-10-8在9:47
感谢您的注意。我还花了整整2天的时间对问题进行故障排除。我将pi全部设置为与Python3和OpenCV一起使用,只是因为更新导致以太网在重启时停止工作。很高兴看到我的回答有用。
–路易斯·戈迪尼斯(Luis Godinez)
16-10-9在16:06
我花了一段时间才弄清楚为什么会发生,然后需要弄清楚该怎么办以及为什么(Ubuntu错误-提交的修复似乎不起作用,这是对同一文件的编辑)。这是正在进行的战斗:bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379-但是,您的修复程序似乎无法在我的Raspberry Pi 2上正常工作。这一点。
–凯文·泰勒(Kevin Teljeur)
16-10-11在18:30
#3 楼
raspi-config是最简单的方法。如果您在Raspbian上,则默认情况下已安装。 br />
sudo apt-get install raspi-config
然后可以使用raspi-config对其进行配置。
sudo raspi-config
选择“ 2.网络选项“
选择” N3网络接口名称“
选择”否“。现在已禁用可预测的网络接口名称。
单击“确定”并“完成”。然后它将重新启动您的树莓派。
完成。
评论
Ubuntu Mate(OP正在使用)是否具有raspi配置?
–史蒂夫·罗比拉德(Steve Robillard)
18年3月29日在22:56
因此,您的答案不适用。
–史蒂夫·罗比拉德(Steve Robillard)
18年3月31日,1:11
但是,如果您用Raspbian搜索相同的问题,则首先发现此问题。我这样做了,花了一些时间进行研究并找到解决方案。我认为这可以帮助一些人。好的,我现在编辑答案。
– Almas Dusal
18年3月31日,1:17
看到人们在“研究”,而答案却清楚地写在批准的答案中,这使我感到困惑。 Ubuntu,debian,raspbian都一样。在Ubuntu Mate上安装该工具也没有问题(即使默认情况下也已安装)raspberrypi.stackexchange.com/a/67084/42528。但是,这是一个答案,没有任何解释。在解决问题的同时,它却使人们不敢真正了解正在发生的事情。我将为那里所有的懒惰者+1。
–汤姆·西维克(Tom Siwik)
18-4-5在8:11
凉!这个答案绝对是最简单的,解决了我建立为工作静态IP地址的问题
–vinyll
19年1月21日,11:57
#4 楼
这不是“错误”,而是“功能”“一致的网络设备命名”。 (我看不出有任何不一致的地方。)要恢复以前的行为,请在cmdline.txt
的末尾添加“ net.ifnames = 0 biosdevname = 0”。评论
尽管该功能很好,但是它的行为方式是一个错误-特别是udev如何处理USB以太网设备。它忽略net.ifnames = 0。我不认为任何人都应该关注bug报告讨论以使流行的OS与通用的硬件配置一起工作,但这就是生活。 bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379
–凯文·泰勒(Kevin Teljeur)
16-10-16在10:00
@KevinTeljeur和我的评论很讽刺-这是计算机系统上的常见问题。
–地铁
16-10-16在11:11
哈哈,对不起-经过这么多小时的浪费,然后发现它是一个静默记录的错误,我无法接受任何一致的网络设备命名嘲讽。我确实拿了你的引号,但是在config.txt中添加这些魔咒实际上并没有在Pi上作为记录的bug起作用(也许现在有了最新的udev构建,它终于可以了)。这是一个令人惊讶的未知错误,它会影响USB上所有带有以太网的系统。
–凯文·泰勒(Kevin Teljeur)
16-10-16在21:44
#5 楼
我还没有遇到Mac地址作为名称的一部分的问题,但是您遇到的情况称为一致的网络设备命名。进行了更改是因为有可能,甚至在某些具有多个网卡的系统上,网卡可能会出现混乱,并使用eth0,eth1等命名方案。最终,您将最终将路由规则和诸如此类的东西应用于错误的接口。 >许多Linux发行版已迁移到某种一致的网络设备命名方式,通常看起来像
enp0s1
,它标识PCI总线和总线的连接点(分别为0和1)。您可以从https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Consistent_Network_Device_Naming.html获取更多信息,以及如何将系统更改为旧的工作方式如果您仍然想这样做。
评论
尽管这是一个有用的评论,但它无助于解决问题,也没有回答问题(请阅读手册的答案)。但是,它有助于找到上述解决方案的较小解决方案。这就是为什么获得upvote并致谢的原因:)
–汤姆·西维克(Tom Siwik)
16-3-30在21:10
#6 楼
对于在Raspberry Pi 2中运行的Ubuntu Server 16.04,我也遇到了同样的问题,这(请参阅下面的链接)帮助我解决了问题。https://bugs.launchpad.net/ubuntu-pi-flavor- maker / + bug / 1585335
#7 楼
简单:sudo ln -s /dev/null /etc/systemd/network/99-default.link
和
sudo reboot
。来源:https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
#8 楼
使用odroid创建此文件解决了我的问题root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
#9 楼
我在使用Ubuntu 16.04的Raspberry Pi 2上遇到了相同的问题,有效的方法是跟随#goutam的链接,并添加/etc/udev/rules.d/70-persistent-net.rules并添加以下内容:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
#10 楼
我在这里找到了这个建议:将70-persistent-net.rules中的一行更改为
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="98:90:96:e0:3c:e9", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME:="eth0"
并将NAME从=更改为:=
似乎会将找到的任何MAC地址强制为eth0。
在Raspberry Pi和uboot引导系统上工作。
#11 楼
对我而言,在Raspberry Pi 2上运行Debian Unstable,注释中提到的第一个答案的符号链接也是正确的主意,但其名称必须不同:ln -vis /dev/null /etc/udev/rules.d/80-net-setup-link.rules
评论
不,您确实提到了该文件名,但注释中使用了另一个文件名,这就是为什么我提到该注释并提到它对我来说必须是一个不同的文件名。
–阿克塞尔·贝克特(Axel Beckert)
16-4-20在10:40
我懂了。请注意raspberry pi 3和raspberry pi 2之间的差异。尽管它们在技术上几乎相同,但这种命名差异可能是误导人们的原因之一。不过感谢您的澄清。
–汤姆·西维克(Tom Siwik)
16-4-20的11:58
我认为文件名的这种差异来自Debian 8 Jessie与Debian Unstable以及较新的systemd / udev版本。实际上,没有此符号链接的接口的实际名称可能确实比仅MAC地址有所不同。但是至少对于以太网接口,我想我记得在Raspi 2和3上都看到过这些enx接口名称。尽管我目前不记得WLAN接口在Raspi 3上的命名方式。
–阿克塞尔·贝克特(Axel Beckert)
16年4月22日在1:22
enx
–汤姆·西维克(Tom Siwik)
16 Apr 25 '13:35
在Raspi 3B上对我不起作用。
–明仁
20年7月15日在10:55
#12 楼
只需停用负责接口重命名过程的udev规则,即sudo ln -s /dev/null /etc/udev/rules.d/73-usb-net-by-mac.rules
或
sudo touch /etc/udev/rules.d/73-usb-net-by-mac.rules
编辑: thx @ sparkie指出错误。我总是把订单弄混。 :)
评论
第一个提到的命令不起作用。至少src和dst混合在一起。
–sparkie
17年9月20日在9:58
#13 楼
我意识到这个问题很旧,但是我遇到了这个问题,到目前为止,本页上没有提出的解决方案能够解决我的问题。对我来说,rules.d文件夹的技巧似乎没有任何作用。名字。这很重要,因为我有几个Raspberry Pi单元,而它们都因同一问题而失败。 (非常令人沮丧)我的问题更加复杂,因为我有一个在启动过程中需要挂载的网络存储文件夹。因为没有显示接口,所以挂载失败,对我来说情况越来越糟。
这是我的解决方案。我希望这对使用上述答案找不到连接的其他人有所帮助。
使用您喜欢的文本编辑器创建文件/etc/init.d/raspi-init-network。我喜欢使用vi。
cd /etc/init.d
sudo vi raspi-init-network
这是文件中的代码
#!/bin/sh
### BEGIN INIT INFO
# Provides: boot-identify-myself
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: identify-myself
# Description: identify this computer to the main server upon
### END INIT INFO
#
# when using predictible network names for the interfaces,
# the pi doesn't seem to activate the interface correctly so
# this script will force the issue.
#
# it works by getting the interface name of the wired network
# device and using that to initialize dhcp
start()
{
interface=`ifconfig -a | grep "encap:Ethernet" | grep -oh -E "^[^ ]+"`
dhclient $interface
mount -a
}
stop()
{
: # do nothing
}
uninstall()
{
: # do nothing
}
case "" in
start)
start
;;
stop)
stop
;;
uninstall)
uninstall
;;
retart)
stop
start
;;
*)
echo "Usage: sudo chmod 755 raspi-init-network
{start|stop|restart|uninstall}"
esac
制作确保脚本是可执行的
sudo update-rc.d raspi-init-network defaults 90
激活代码,以使其在引导过程中通过执行update-rc.d命令执行。
q4312078q
此后,我再也没有遇到任何问题,因此能够将代码复制到所有Pi单元上,并获得相同的稳定结果。
注意:如果不安装驱动器,则可以省略“ mount -a”行。
TWEAKS:如果您使用的是wifi,则可以更改以“ interface =”开头的行,并编辑第一个“ grep”段。第一个grep抓取您要使用的界面的整个行。第二个grep接受该行,仅返回接口名称。
评论
请检查文件> / etc / iftab我的状态:enxb827 .... mac xx:xx:xx:xx:xx:xx arp 1 wlan0 mac xx:xx:xx:xx:xx:xx:xx arp 1