Como posso descobrir o que significam as entradas no dmesg?

3

É interessante ver as entradas no dmesg, mas como posso descobrir o que elas significam? Eu fiz man dmesg , mas não consigo encontrar nada sobre a decodificação das mensagens em si.

Eu me pergunto: Existe uma maneira de detalhar e descobrir o significado e a origem de cada entrada? Por exemplo, qual driver escreveu (se era um driver) e qual a mensagem significa em detalhes?

Exemplo de saída do 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
    
por PetaspeedBeaver 14.12.2016 / 00:50

2 respostas

3

Não há um caminho fácil. Essas mensagens são destinadas a desenvolvedores de kernel e administradores de sistemas experientes, não para usuários comuns. Não há estrutura geral para eles (além do número entre parênteses, que é o número de segundos desde que o kernel inicializou).

Você pode procurar o texto da mensagem no código-fonte do kernel. Isso pode fornecer informações úteis, mesmo se você não souber a linguagem de programação C - pelo menos, encontrar em qual arquivo a mensagem é capaz de dizer qual driver é responsável. Ou mantenha uma cópia local (a maioria das distribuições tem um pacote com a origem do kernel, por exemplo, apt-get install kernel-source-X.XX && cd /usr/src && sudo tar xf linux-source-X.XX.tar.xz no Debian e derivados), ou use um navegador online como LXR em Free Electrons ou LXR em linux.no (melhor pesquisa, mas muitas vezes abaixo).

Ao pesquisar, tenha em mente que as mensagens não aparecem literalmente no código-fonte. Eles geralmente são compostos de um modelo e parâmetros. Por exemplo, a segunda linha vem da função blk_update_request em 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));

O primeiro %s no modelo é substituído pelo valor de error_type , o segundo %s é substituído por req->rq_disk->disk_name (ou um ? se isso não estiver definido) e o %llu é substituído pelo inteiro retornado por blk_rq_pos(req) . Dado o arquivo em que a mensagem está, trata-se de um dispositivo de bloco. O nome do disco informa qual dispositivo: sr0 . Se você olhar para os nomes de dispositivos padrão , este é o “Primeiro CD-ROM SCSI” (na verdade, primeiro unidade que fala de um protocolo semelhante a SCSI, incluindo a maioria das unidades IDE / SATA e USB).

Você pode continuar explorando as mensagens, mas há um padrão evidente aqui: elas estão todas relacionadas a sr . Todos eles são causados pelo mesmo problema: um erro ao ler o DVD, em torno do setor 2035860 (ou seja, cerca de 1 GB em - um setor é 512 bytes). De repente, o computador foi avisado de que não havia nenhum disco presente (ou um disco ilegível) e tentou mudar para outro setor e ler esse disco também falhou.

Isso pode ser uma partícula de poeira ou um disco riscado ou danificado. Outros problemas podem causar erros de leitura, como uma unidade danificada ou um cabo defeituoso, mas esses afetariam a leitura o tempo todo, não apenas uma área específica de um determinado disco.

    
por 14.12.2016 / 01:57
1

O log que você mostra indica que há erros de E / S na leitura do dispositivo sr0 , que é um dispositivo de disco, provavelmente um CD ou DVD.

Use uma abordagem metódica para esclarecer sua causa, verificando se isso acontece quando você usa outros discos e se o disco funciona em outra máquina.

Pode ser causado por qualquer coisa, desde um CD riscado a uma placa-mãe defeituosa.

Não existe uma maneira simples de saber exatamente o que cada entrada de dmesg se refere exatamente, mas a leitura da mensagem de erro real (e linhas adjacentes) deve fornecer uma indicação muito boa de qual é o problema.

    
por 14.12.2016 / 01:41