sysfs에서 읽으면 EINVAL이 반환됩니다.

sysfs에서 읽으면 EINVAL이 반환됩니다.
box101:~ # cat /sys/class/net/eno1/carrier
cat: /sys/class/net/eno1/carrier: Invalid argument

무엇……? 알았어, 그럼 뭐라고 strace하겠니?

...
open("/sys/class/net/eno1/carrier", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
read(3, 0x19c8000, 65536) = -1 EINVAL (Invalid argument)
...

분명히 말씀드리자면...파일은 완벽하게 열리지만 내용을 읽는 데 오류가 발생합니까?

더욱 짜증나는 점은 box103에서도 똑같은 명령이 실행된다는 것입니다.완벽하게 작동! box101에서는 해당 디렉토리의 모든 파일을 읽을 수 있습니다.와는 별개로 carrier.

누구든지 그것이 무엇인지 설명할 수 있습니까?지옥어떻게 되어가나요?

답변1

위에서 언급한 하드웨어/드라이버에 몇 가지 문제가 있습니다.이 LKML철사. 답장 이메일의 일부를 인용해 보세요.

그 이유는 대부분의 드라이버가 장치가 부팅될 때까지 링크를 조사하거나 링크 속도 및 흐름 제어를 협상하지 않기 때문입니다. 전력을 절약하기 위해 많은 사람들은 장치가 꺼져 있을 때 PHY에 전원을 공급하지도 않습니다.

따라서 관찰한 동작은 완전히 예상된 것입니다.

링크(케이블 연결)가 있더라도 -EINVAL오류 메시지가 표시됩니다. 전원 관리 구성으로 인해 연결되어 켜져 있는 인터페이스에서도 이 오류가 발생할 수 있습니다.

mii-toolethtool이더넷 인터페이스의 링크 상태에 대한 정보를 보다 안정적으로 제공해야 합니다(아마도 ) ip l l.

관련 정보