cat: 읽기 오류: /sys/class/net/eth0/phys_* 작업이 지원되지 않습니다.

cat: 읽기 오류: /sys/class/net/eth0/phys_* 작업이 지원되지 않습니다.

phys_Kernel 6.4.0 및 Busybox를 사용하여 시스템을 사용자 정의했는데 왜 같은 폴더에 있는 다른 파일에 액세스할 수 있는데 로 시작하는 세 파일에 액세스할 수 없는지 모르겠습니다 .

# 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()기능리눅스 커널에서.

EOPNOTSUPP네트워크 인터페이스의 드라이버가 작업을 구현하지 않으면 를 반환하는 것을 볼 수 있습니다 ndo_get_phys_port_id. ndo_get_phys_port_id디렉토리를 살펴보면 이를 drivers/net/ethernet구현하는 이더넷 드라이버(Broadcom bnx2x, Intel i40e 및 기타 몇 가지)가 많지 않다는 것을 알 수 있습니다(아마도 해당 정보를 제공하는 이더넷 하드웨어 장치가 많지 않기 때문일 것입니다)@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_idand 의 관련 부분은 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.

위에서 언급한 것처럼 이 두 값은 여러 포트가 있는 카드의 물리적 포트 식별을 제공합니다(예: "4-port NIC" 검색).

관련 정보