CPU 주파수를 변경하기 위해 시스템 파일에 쓰려고 할 때 멈췄습니다.
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
<unsupported>
$ echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
1600000
tee: /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed: Invalid argument
사용자를 루트로 변경하면 동일한 문제가 발생합니다.
$ sudo su
# echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
bash: echo: write error: Invalid argument
다음은 아마도 관련이 없을 것입니다. 이전에는 위의 명령이 모두 작동했지만 한 시간 전에 노트북 쿨러의 USB 플러그를 노트북의 USB 포트 중 하나에 꽂았을 때 Ubuntu가 멈춰서 노트북의 전원 버튼을 눌러 다시 시작해야 했습니다. 위의 문제에 직면했습니다.
이전에는 작동하면 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
대신 일부 값이 출력되는데 <unsupported>
, 위의 오류로 여러 번 시도한 후 invalid argument
이제 echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
다시 실행하면 오류 없이 잘 작동합니다 invalid argument
. 비슷한 시기에 우분투에서는 제가 기억하지 못하는 일부 CPU 주파수 유틸리티 오류를 보고했습니다.
답변1
파일은 다음 위치에 있습니다.시스템 파일 시스템그리고프로세스 파일 시스템커널의 인터페이스입니다. 이러한 파일을 읽고 쓰는 것은 커널의 드라이버에서 코드를 호출합니다. "권한 거부"(EACCESS) 오류가 발생하는 경우 오류는 파일 권한 때문입니다. 그러나 "Invalid Parameter"(EINVAL)와 같은 오류가 발생하면 드라이버가 이 응답을 보냈다는 의미입니다.
"잘못된 인수"의 가장 확실한 원인은 잘못된 값을 쓰려고 한다는 것입니다. 예를 들어, 숫자 설정을 수정하기 위해 숫자가 아닌 다른 것을 쓰거나, 허용 범위를 벗어난 숫자를 쓰세요.
<unsupported>
읽기가 당시 컴퓨터에서 문자열을 반환한다는 점을 고려하면 드라이버는 하드웨어가 이 기능을 지원하지 않는다고 생각합니다. 이전에는 작동했으므로 이는 드라이버의 버그나 하드웨어 오류를 나타냅니다.
이제 다시 작동한다는 것을 보여주셨습니다. 따라서 이는 재부팅하면 해결되는 단기적인 문제입니다. 내 대답의 나머지 부분은 비슷한 문제에 직면한 사람을 위한 조언입니다.
최근에 커널을 업그레이드했다면 이전 버전으로 되돌려보세요.
문제는 커널에 있거나 적어도 커널이나 하드웨어 사이에 있으므로 더 많은 정보를 찾으려면 커널 로그를 조사해야 합니다. systemd가 있는 최신 시스템에서는 다음을 실행 sudo journalctl -k
하여 커널 로그를 확인하세요. 또는 /var/log/kern*
이전 저장 내용이 포함된 로그를 확인하세요.
올바른 로그 메시지를 찾는 것이 어려울 수 있습니다. 일이 시작된 대략적인 시간을 알 수 있다면 그 시간 주변의 로그 메시지를 찾아보세요. 이제 파일에 액세스해 보십시오 /sys
. 드라이버 작동 방식에 따라 매번 새 로그 메시지가 생성될 수도 있고 생성되지 않을 수도 있습니다.
하드웨어 관련 오류가 발생하여 재부팅하는 경우 일부 펌웨어(컴퓨터의 보조 칩 중 하나에서 실행되는 소프트웨어)에 여전히 잘못된 데이터가 포함될 수 있습니다. 모든 펌웨어를 전원이 켜진 상태로 완전히 재설정하려면 시스템 전원을 완전히 꺼야 합니다. 노트북에서는 전원 공급 장치를 완전히 분리해야 하는 경우도 있습니다(전원 플러그와 배터리를 분리한 후 다시 조립).