Linux 커널 default_console_loglevel의 의미

Linux 커널 default_console_loglevel의 의미

default_console_loglevel리눅스의 요점은 무엇입니까? 저는 보통 의 기본값으로 설명합니다 console_loglevel. 그러나 이것이 의미하는 바는 어디에서도 설명된 것을 본 적이 없습니다.

게다가 저와 제가 확인한 대부분의 다른 시스템에서 4개의 로그 변수의 값은 다음과 같습니다.

 [root@localhost printk]# cat /proc/sys/kernel/printk
4   4   1   7

아무것도 변경하지 않았기 때문에 console_loglevel(4)는 (7)과 같아야 default_consolle loglevel하지만 그렇지 않습니다. 그렇다면 용도/의미는 정확히 무엇입니까 default_console_loglevel?

답변1

짧은 대답: loglevel=4커널 명령줄에서 설정했거나( 확인 ) cat /proc/cmdline실행되는 echo 4 > /proc/sys/kernel/printkinit 스크립트(또는 이에 상응하는 스크립트)가 있습니다.

두 경우 모두 default_console_loglevel덮어쓰게 됩니다.


긴 답변:

을 읽으면 /proc/sys/kernel/printk4개의 숫자가 반환됩니다. 이는 커널에 정의되어 있습니다.printkhint console_printk[4]배열의 요소로초기화됨컴파일 타임에(printkc), 그러나 이 배열은 런타임에 수정될 수 있습니다.

이 값은 다음과 같습니다.

  • console_loglevel(또는 console_printk[0]).

  • default_message_loglevel(또는 console_printk[1]).

  • minimum_console_loglevel(또는 console_printk[2]).

  • default_console_loglevel(또는 console_printk[3]).

console_loglevel( console_printk[0])가 가장 중요하다.현재의콘솔 메시지 우선순위의 값입니다.

이는 언제든지 printk커널 코드에서 호출이 이루어진다는 것을 의미합니다(이는 다음에도 적용됩니다).pr_warn, pr_info,등.), 런타임 시 해당 우선순위를 비교하고, 현재 우선순위보다 엄격히 낮은 경우 console_loglevel콘솔에 인쇄됩니다. 예를 들어 5로 설정하면(예:KERN_경고), KERN_ERR값이 4( ) 이하인 우선순위만 콘솔에 직접 인쇄됩니다.

이 값은 수정해야 하는 유일한 값이므로 예를 들어 를 사용하여 쓸 때는 이 값을 5로 echo 5 > /proc/sys/kernel/printk설정합니다 .console_loglevel

console_loglevelCONSOLE_LOGLEVEL_DEFAULT(or)와 정확히 동일하며 컴파일 타임에 초기화됩니다 . 따라서 시작 시 기본값입니다. 이는 커널 컴파일 타임 구성(Kconfig)을 통해 설정됩니다.default_console_loglevelconsole_printk[3]default_console_loglevelconsole_loglevelCONFIG_CONSOLE_LOGLEVEL_DEFAULT

이 런타임을 구성 가능하게 만들기 위해(커널을 다시 컴파일할 필요 없음) 이 부팅 시간 기본값을 설정하는 또 다른 메커니즘이 있습니다. (여기서 숫자는) 커널 명령줄의 일부로 전달되면 로 초기화됩니다. 이는 수정되지 않으므로 이 경우에는 자동으로 무시되고 덮어쓰여집니다.loglevel=xxconsole_loglevelxdefault_console_loglevel

완전성을 위해 다른 두 값은 다음과 같습니다.

  • default_message_loglevel(또는): 지정된 우선순위가 없는 명령의 기본값입니다 console_printk[1]. printk이는 CONFIG_MESSAGE_LOGLEVEL_DEFAULTKconfig()를 통해 설정됩니다. 컴파일 후에는 수정할 수 없습니다.

  • minimum_console_loglevel(또는 console_printk[2]): 최소 우선순위 값입니다. 1로 하드코딩되어 있으며 수정할 수 없습니다.


참고: 이 답변은 4년 동안 답변이 없는 질문에 대한 답변으로, 질문 작성자에게는 더 이상 유용하지 않을 수 있습니다. 하지만 제 첫 번째 Google 검색 결과이므로 다른 사람에게도 도움이 되기를 바랍니다.

관련 정보