phys_
Kernel 6.4.0とBusyboxを使用してシステムをカスタマイズしましたが、なぜ同じフォルダ内の別のファイルにアクセスできるのかで始まる3つのファイルにアクセスできないのかわかりません。
# pwd
/sys/class/net/eth0
# ls
addr_assign_type carrier_up_count gro_flush_timeout napi_defer_hard_irqs proto_down tx_queue_len
addr_len dev_id ifalias netdev_group queues type
address dev_port ifindex operstate speed uevent
broadcast device iflink phys_port_id statistics
carrier dormant link_mode phys_port_name subsystem
carrier_changes duplex mtu phys_switch_id testing
carrier_down_count flags name_assign_type power threaded
#
#
#
# cat dev_
dev_id dev_port
# cat dev_port
0
# cat phys_port_id
cat: read error: Operation not supported
#
# ls -lt dev_port
-r--r--r-- 1 root root 4096 Oct 27 14:50 dev_port
# ls -lt phys_port_id
-r--r--r-- 1 root root 4096 Oct 27 15:36 phys_port_id
答え1
ファイルの内容は、phys_port_id
(プロセスがファイルを読み取るとき)次のように要求されます。phys_port_id_show()
機能Linuxカーネルから。
EOPNOTSUPP
ネットワークインタフェースのドライバがアクションを実装していない場合は、を返すことがわかりますndo_get_phys_port_id
。ndo_get_phys_port_id
ディレクトリを見ると、それをdrivers/net/ethernet
実装するイーサネットドライバ(Broadcom bnx2x、Intel i40eなど)があまりないことがわかります(おそらくその情報を提供するEthernetハードウェアデバイスはあまりありません)。@ChrisDaviesの詳細複数のポートを持つNICにのみ適用されます。
eth0
次の方法でイーサネットデバイスを駆動するドライバについて学びます。
readlink /sys/class/net/eth0/device/driver
またはあなたのbusyboxバージョンでアプレットが有効になっていないls -l /sys/class/net/eth0/device/driver
場合。readlink
答え2
以下のファイルのうち、/sys
実際のファイルはありません。すべてカーネルに保持される値を表現したものです。
/sys/class/net
これらのリストは以下で確認できます。https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
phys_port_id
and の関連部分はphys_port_name
次のとおりです。
What: /sys/class/net/<iface>/phys_port_id Date: July 2013 KernelVersion: 3.12 Contact: [email protected] Description: Indicates the interface unique physical port identifier within the NIC, as a string. What: /sys/class/net/<iface>/phys_port_name Date: March 2015 KernelVersion: 4.0 Contact: [email protected] Description: Indicates the interface physical port name within the NIC, as a string.
上記のように、これら2つの値は複数のポートを持つカードの物理ポート識別を提供します(たとえば、「4-port NIC」の検索)。