gol*_*cks 100 linux networking udev devices systemd
这是关于 linux,但如果有人知道一般的 *nix 方法会很好。
我昨天在插入以太网电缆的情况下启动了一个系统。“NetworkManager”没有安装,所以一旦它启动,我就去寻找以太网接口的名称ifconfig来手动启动一个 DHCP 客户端,但除了lo.
NIC 通过 列出lspci,并加载了适当的内核驱动程序。系统通常使用 wifi,我记得它的接口名称是wlan0. 当我尝试时ifconfig wlan0 up,wlan0出现了。但是我能记住的唯一以太网接口名称是eth[N]和em[N]- 两者都不起作用。
本文档提到了“可预测的接口名称”,但并没有很好地用简单的术语解释它们可能是什么。它确实引用了一段源代码,这意味着在这种情况下,名称可能是从 PCI 总线和插槽编号推断出来的,这似乎是一个不必要的复杂麻烦。
其他搜索使我相信这可能是由systemd与 一起确定的udev,但是有将近 100 个文件/usr/lib/udev/rules.d并且花了一个小时试图确定在哪里(以及是否)有一个 systemd 配置文件,这似乎也很荒谬。
这也将是不错的肯定知道,他们是可用的,不只是他们怎么可能被命名为,如果是这样,所以我可以排除硬件问题等是不是有一个简单的方法来找到可用的网络接口的名称在Linux上?
Ell*_*sch 100
我知道列出所有接口的最简单方法是
ifconfig -a
Run Code Online (Sandbox Code Playgroud)
编辑
如果你在一个已经过时的系统上,你可以使用
ip link show
Run Code Online (Sandbox Code Playgroud)
gol*_*cks 82
内核按名称/sys分别在(例如)PCI 设备树中列出它们——尽管如果您不知道它们从哪里开始,在那里找到它们并不简单——并且通过/sys/class/net. 例如:
> ls /sys/class/net
em1 lo wlp6so
Run Code Online (Sandbox Code Playgroud)
另一个例子:
> ls /sys/class/net
lo p6s1 wlan0
Run Code Online (Sandbox Code Playgroud)
如果您不确定哪个是哪个,您可以将它们全部放在一起:
ifconfig [name] up
Run Code Online (Sandbox Code Playgroud)
或者:
ip link set [name] up
Run Code Online (Sandbox Code Playgroud)
然后看看ifconfig(没有论据)列出的(相当清楚的)线索。从 Freedesktop.org 文档链接的 systemd 源代码也参考:
Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
Run Code Online (Sandbox Code Playgroud)
尽管在上述情况之一 ( p6s1) 中没有前缀。
小智 6
ifconfig= Solaris
ipconfig= Windows
ip= Linux
我知道,但我当然愿意添加和更正。