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


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부팅 매개 변수 로 사용하여 이들을 제거 할 수 있음을 발견했습니다 . 디버깅 로그는 더 이상 터미널에 인쇄되지 않지만 여전히 dmesg에 syslog있습니다.

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

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

수용 솔루션

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

kern.debug   /dev/null
& ~

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

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