dmesg의 항목을 보는 것은 재미있지만, 그 항목이 무엇을 의미하는지 어떻게 알 수 있습니까? 해봤는데 man dmesg
메시지 자체를 해독하는 방법에 대한 정보를 찾을 수 없습니다.
나는 알고 싶다:각 항목의 의미와 출처를 자세히 알아볼 수 있는 방법이 있나요?예를 들어 어떤 운전자가 썼는지(운전자인 경우), 이 메시지의 자세한 의미는 무엇인가요?
dmesg 출력 예:
[101466.656676] Read(10): 28 00 00 07 c4 25 00 00 01 00
[101466.656706] end_request: I/O error, dev sr0, sector 2035860
[101466.656722] Buffer I/O error on device sr0, logical block 508965
[101471.444586] sr 1:0:0:0: [sr0] Unhandled sense code
[101471.444607] sr 1:0:0:0: [sr0]
[101471.444616] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[101471.444627] sr 1:0:0:0: [sr0]
[101471.444634] Sense Key : Medium Error [current]
[101471.444649] sr 1:0:0:0: [sr0]
[101471.444657] Add. Sense: No seek complete
[101471.444668] sr 1:0:0:0: [sr0] CDB:
[101471.444675] Read(10): 28 00 00 07 c4 24 00 00 01 00
[101471.444705] end_request: I/O error, dev sr0, sector 2035856
[101471.444721] Buffer I/O error on device sr0, logical block 508964
답변1
쉬운 방법은 없습니다. 이 메시지는 일반 사용자가 아닌 커널 개발자와 숙련된 시스템 관리자를 대상으로 합니다. 공통 구조가 없습니다(커널이 시작된 이후의 시간(초)을 나타내는 괄호 안의 숫자를 제외하고).
커널 소스 코드에서 메시지 텍스트를 찾을 수 있습니다. C 프로그래밍 언어를 모르더라도 이는 유용한 정보를 제공할 수 있습니다. 적어도 메시지가 어느 파일에 있는지 알아내면 어느 드라이버가 책임이 있는지 알 수 있습니다. 로컬 복사본을 보관하거나(대부분의 배포판에는 Debian 및 그 파생물과 같은 커널 소스 코드가 포함된 패키지가 있음) 온라인 브라우저를 사용하십시오.apt-get install kernel-source-X.XX && cd /usr/src && sudo tar xf linux-source-X.XX.tar.xz
자유 전자 LXR또는linux.no의 LXR(더 나은 검색이지만 종종 다운됩니다).
검색할 때 메시지가 소스 코드에 문자 그대로 표시되지 않는다는 점을 기억하세요. 일반적으로 템플릿과 매개변수로 구성됩니다. 예를 들어 두 번째 줄은blk_update_request
기능하다block/blk-core.c
:
printk_ratelimited(KERN_ERR "end_request: %s error, dev %s, sector %llu\n",
error_type, req->rq_disk ?
req->rq_disk->disk_name : "?",
(unsigned long long)blk_rq_pos(req));
%s
템플릿의 첫 번째 값은 값으로 대체되고 error_type
, 두 번째 값은 %s
(또는 설정되지 않은 경우 a req->rq_disk->disk_name
)로 대체된 다음 반환된 정수로 대체됩니다. 메시지가 있는 파일을 보면 블록 장치와 관련이 있습니다. 디스크 이름은 어떤 장치인지 알려줍니다: . 당신이 보면?
%llu
blk_rq_pos(req)
sr0
표준 장치 이름는 "최초의 SCSI CD-ROM"이었습니다(사실 대부분의 IDE/SATA 및 USB 드라이브를 포함하여 SCSI와 유사한 프로토콜을 사용하는 최초의 광학 드라이브).
이러한 메시지를 계속 탐색할 수 있지만 여기에는 명확한 패턴이 있습니다. 이 메시지는 모두 와 관련되어 있습니다 sr
. 모든 메시지는 동일한 문제로 인해 발생합니다. 즉, 섹터 2035860(약 1GB에 해당)에서 DVD를 읽는 동안 오류가 발생했습니다. 섹터는 512바이트입니다). 컴퓨터에 갑자기 디스크가 존재하지 않거나 읽을 수 없다는 메시지가 표시되고 다른 섹터로 이동하여 해당 섹터를 읽으려는 시도도 실패합니다.
이는 먼지 얼룩일 수도 있고 드라이브가 긁혔거나 손상된 것일 수도 있습니다. 다른 문제로 인해 드라이브 불량이나 케이블 불량 등 읽기 오류가 발생할 수 있지만 이러한 문제는 특정 디스크의 특정 영역뿐만 아니라 항상 읽기에 영향을 미칩니다.
답변2
표시되는 로그는 sr0
디스크 장치(아마도 CD 또는 DVD)에서 장치를 읽는 동안 I/O 오류를 나타냅니다.
다른 디스크를 사용할 때 문제가 발생하는지, 다른 컴퓨터에서는 해당 디스크가 작동하는지 확인하는 등 체계적인 접근 방식을 통해 원인을 찾아보세요.
긁힌 CD부터 결함이 있는 마더보드에 이르기까지 무엇이든 원인이 될 수 있습니다.
각 항목이 무엇을 참조하는지 정확히 알 수 있는 쉬운 방법은 없지만 dmesg
실제 오류 메시지(및 주변 줄)를 읽으면 문제가 무엇인지 잘 알 수 있습니다.