Когда мое ядро загружается, помимо полезной важной информации, оно печатает много отладочной информации, такой как
....
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
& ~
syslog
иdmesg
залиты бесполезных журналов отладки, и , таким образом , делая реальные предупреждения и ошибки легче заметить. К тому жеdmesg
иsyslog
должен быть прочитан людьми (т.е. администратором). Это все их цель.Ответы:
Для системного журнала Вы можете добавить следующую строку
/etc/syslog.conf
:Это отбросит сообщения ядра .info и .debug (которые отбрасываются с loglevel = 5)
Кроме того,
dmesg
может использоваться с возможностью-n
показывать сообщения с определенным уровнем логирования.источник
Некоторые журналы печатаются с помощью printk (), который вы не можете отключить. И некоторые из них печатаются с помощью pr_debug (), который может быть отключен в зависимости от конфигурации ядра. Поведение pr_debug () контролируется функцией динамической отладки. Если установлено CONFIG_DYNAMIC_DEBUG , то все вызовы pr_debug () могут быть динамически включены / отключены для каждого места вызова. Деталь динамической отладки здесь . Если CONFIG_DYNAMIC_DEBUG не установлен, но DEBUG определен в исходном файле, pr_debug () работает как printk () . Если оба не определены, pr_debug ничего не сделает.
Вот определение в ядре:
Итак, проверьте конфигурацию вашего ядра и найдите, откуда эти журналы. Тогда вы узнаете, как его отключить.
источник
echo 8 > /proc/sys/kernel/printk
: stackoverflow.com/questions/28936199/…Помимо настройки
loglevel
из KCL, вы также можете настроитьkernel.printk
sysctl так, чтобы максимальный уровень отражал то, что вы хотите, и сохранялся при загрузке.Что касается этого дальнейшего разъяснения в комментарии:
Я бы просто использовал
logrotate
в работе cron, чтобы убрать файлы с пути после перезагрузки :Тогда вы начинаете, так сказать, с нуля, с ограниченным сбросом отладочных данных в журналы.
источник
logrotate
совершенно не суть. Моя проблема не в том, что мои файлы журналов слишком велики, а в том, что у меня недостаточно места на диске. Вместо этого проблема в том, что отладочная информация в этих лог-файлах делает полезную информацию менее доступной.