커널 부팅 로그 상세 수준 감소


9

유용한 중요한 정보를 제외하고 커널이 부팅되면 다음과 같은 많은 디버깅 정보가 인쇄됩니다.

....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000]   0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000]  [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000]  [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000]  [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL CBX3 01072009 AMI 10013)
....
kernel: [0.00000] Early memory node ranges
kernel: [0.00000]   node   0: [mem 0x00001000-0x0009cfff]
kernel: [0.00000]   node   0: [mem 0x00100000-0xcf414fff]
kernel: [0.00000]   node   0: [mem 0xcf41c000-0xcfdfcfff]
....
kernel: [0.00000] ACPI: Local APIC address 0xfee00000
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)

그리고 훨씬 더.

커널 개발자 / 디버거 이외의 다른 사람에게 이것이 어떻게 유용한 지 알 수 없습니다.

loglevel=5부팅 매개 변수 로 사용하여 이들을 제거 할 수 있음을 발견했습니다 . 디버깅 로그는 더 이상 터미널에 인쇄되지 않지만 여전히 dmesgsyslog있습니다.

그것은 너무, 전 세계적으로 부팅 로그 상세를 감소하는 것이 가능 dmesg하고 syslog,이 쓸모없는 정보에 의해 침수되지 않습니까?

자체 컴파일 커널을 사용하고 있습니다 3.18

수용 솔루션

/etc/rsyslog.conf나에게 문제 를 해결하기 위해 다음 줄을 넣는 것으로 나타났습니다 .

kern.debug   /dev/null
& ~

실제로 해결하려는 문제는 무엇입니까? 너무 큰 로그 파일? 일반적으로 사람이 읽지 않고 크기 증가가 사소한 로그 에이 정보를 갖는 데 아무런 문제가 없음을 묻습니다.
Hennes

@Hennes - 문제가 있다는 것입니다 syslog그리고 dmesg쓸모 디버깅 로그를 홍수, 따라서 간과하기 쉬운 실제 경고 및 오류를하고 있습니다. 게다가, dmesgsyslog(관리자, 즉) 인간이 읽을 수 있어야합니다. 그것이 그들의 전체 목적입니다.
Martin Vegter

중요한 정보의 홍수에 대한 우려는 좋은 지적입니다.
Hennes

1
Superuser Stack-Exchange 웹 사이트에서이 질문에 관심이있을 수 있습니다. 커널 메시지가 콘솔에 넘치지 않게하려면 어떻게해야합니까?
perror

답변:


5

syslog의 경우 다음 행을 추가 할 수 있습니다 /etc/syslog.conf.

kern.info; kern.debug   /dev/null

커널 .info 및 .debug 메시지를 버립니다 (loglevel = 5로 버림)

또한 특정 로그 수준의 메시지를 표시 dmesg하는 옵션과 함께 사용할 수 있습니다 -n.


4

일부 로그는 printk () 로 인쇄되어 해제 할 수 없습니다. 그리고 일부는 pr_debug ()에 의해 인쇄되며 커널 구성에 따라 꺼질 수 있습니다. pr_debug () 의 동작은 동적 디버그 기능에 의해 제어됩니다. 경우 CONFIG_DYNAMIC_DEBUG이 설정되어, 모든 pr_debug () 호출을 동적으로 할 수 있습니다 활성화 / 당 callsite 사용할 수 없습니다. 동적 디버그의 세부 사항은 여기에 있습니다 . 경우 CONFIG_DYNAMIC_DEBUG가 설정되지 않으며 DEBUG가 소스 파일에 정의되어, pr_debug ()가 같은 작품 의 printk () . 둘 다 정의되지 않은 경우 pr_debug 는 아무 작업도 수행하지 않습니다.

커널의 정의는 다음과 같습니다.

#include <linux/dynamic_debug.h>

/* If you are writing a driver, please use dev_dbg instead */
#if defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
    dynamic_pr_debug(fmt, ##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) \
    printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
    no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif

따라서 커널 구성을 확인하고 이러한 로그의 출처를 찾으십시오. 그런 다음 비활성화하는 방법을 알게됩니다.



0

loglevelKCL에서 설정하는 것 외에도 kernel.printksysctl을 조정 하여 최대 수준이 원하는 것을 반영하고 부팅 전체에 지속되도록 할 수 있습니다 .

의견 에서이 추가 설명에 관해서 :

문제는 syslog와 dmesg에 쓸모없는 디버깅 로그가 넘쳐서 실제 경고와 오류를 간과하기 쉽다는 것입니다.

재부팅logrotate 후 파일을 방해하지 않기 위해 cron 작업을 사용 합니다 .

root ~ $ crontab -l
@reboot /usr/sbin/logrotate --force /root/rotate-boot-messages
@reboot /bin/dmesg -c

root ~ $ cat /root/rotate-boot-messages
"/var/log/dmesg" {
  copytruncate
  notifempty
  missingok
  dateext
}
"/var/log/syslog" {
  copytruncate
  notifempty
  missingok
  dateext
}

그런 다음 로그에 대한 디버그 데이터 덤프가 제한되어 새로 시작됩니다.


죄송 합니다만, 제안을 logrotate완전히 놓치면됩니다. 내 문제는 내 로그 파일이 너무 커서 디스크 공간이 부족하다는 것이 아닙니다. 대신 문제는 해당 로그 파일의 디버깅 정보가 유용한 정보의 액세스 가능성을 떨어 뜨리는 것입니다.
Martin Vegter

권리. logrotate를 사용하여 모든 크랩이있는 로그를 방해하지 않도록하여 부팅 후 빈 로그 파일을 가지므로 중요한 사항을 확인할 수 있습니다. 여기서 logrotate를 사용하는 것은 정식이 아닙니다. 원한다면 mv를 사용하십시오. 요점은 부팅 후 가능한 빨리 쓰레기를 없애는 것입니다.
감독

이 메시지가 부팅 시간 문제를 모호하게하지 않는 한? 이 경우 허용되는 솔루션이 이상적입니다.
감독
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.