Ketika kernel saya melakukan booting, selain dari informasi penting yang bermanfaat, kernel ini mencetak banyak informasi debug, seperti
....
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)
dan masih banyak lagi.
Saya tidak melihat bagaimana ini bisa bermanfaat bagi siapa pun selain pengembang kernel / debugger.
Saya telah menemukan, bahwa saya dapat menyingkirkan ini dengan menggunakan loglevel=5
parameter boot. Log debugging tidak lagi dicetak pada terminal, tetapi mereka masih masuk dmesg
dan masuk syslog
.
Apakah mungkin untuk mengurangi verbositas log boot secara global, sehingga dmesg
dan syslog
tidak dibanjiri oleh informasi yang tidak berguna ini?
Saya menggunakan kernel yang dikompilasi sendiri 3.18
SOLUSI YANG DITERIMA
Ternyata, menempatkan baris berikut untuk /etc/rsyslog.conf
memecahkan masalah bagi saya:
kern.debug /dev/null
& ~
syslog
dandmesg
dibanjiri dengan log debug yang tidak berguna, dan dengan demikian membuat peringatan dan kesalahan yang nyata lebih mudah untuk diabaikan. Selain itu,dmesg
dansyslog
harus dibaca oleh manusia (yaitu administrator). Itulah seluruh tujuan mereka.Jawaban:
Untuk syslog Anda dapat menambahkan baris berikut ke
/etc/syslog.conf
:Ini akan membuang pesan kernel .info dan .debug (yang dibuang dengan loglevel = 5)
Juga,
dmesg
dapat digunakan dengan opsi-n
untuk menampilkan pesan dengan loglevel tertentu.sumber
Beberapa log dicetak dengan printk () yang tidak dapat Anda matikan. Dan beberapa dicetak oleh pr_debug () yang mungkin dimatikan tergantung pada konfigurasi kernel. Perilaku pr_debug () dikendalikan oleh fitur debug dinamis. Jika CONFIG_DYNAMIC_DEBUG diatur, maka semua panggilan pr_debug () dapat diaktifkan / dinonaktifkan secara dinamis per-panggilan-situs. Detail dari debug dinamis ada di sini . Jika CONFIG_DYNAMIC_DEBUG tidak disetel, tetapi DEBUG didefinisikan dalam file sumber, pr_debug () berfungsi seperti printk () . Jika keduanya tidak didefinisikan, pr_debug tidak akan melakukan apa pun.
Berikut ini definisi dalam kernel:
Jadi, periksa konfigurasi kernel Anda dan temukan dari mana log-log ini berasal. Maka Anda akan tahu cara menonaktifkannya.
sumber
echo 8 > /proc/sys/kernel/printk
: stackoverflow.com/questions/28936199/…Selain mengatur
loglevel
dari KCL, Anda juga dapat mengubahkernel.printk
sysctl sehingga tingkat maksimum mencerminkan apa yang Anda inginkan dan tetap ada di seluruh boot.Mengenai klarifikasi lebih lanjut ini dalam komentar:
Saya hanya akan menggunakan
logrotate
tugas cron untuk memindahkan file setelah reboot :Maka Anda mulai segar, dengan kata lain, dengan dumping data debug yang terbatas ke log.
sumber
logrotate
benar-benar melenceng. Masalah saya bukan karena file log saya terlalu besar, dan saya kehabisan ruang disk. Alih-alih, masalahnya adalah, informasi debug di file-file log membuat informasi yang berguna kurang diakses.