zoukankan      html  css  js  c++  java
  • Linux修改dmesg 显示大小

    背景

    由于在调试的时候没有串口,而通过dmesg打印的内容发现其中有截断的现象。

    因此为了方便调试。将有关的缓冲区加大。

    原理

    Linux内核中打印内核消息时用到了一个环形缓冲区。

    这个缓冲区的大小由 CONFIG_LOG_BUF_SHIFT 控制,规律为:

    [size = 2^{CONFIG\_LOG\_BUF\_SHIFT} ]

    因此,需要修改 Linux 内核源码中的一个控制 log buffer size 的宏:CONFIG_LOG_BUF_SHIFT。

    方法1:配置

    make menuconfig
    
    General setup
     (18)Kernel log buffer size (16 => 64KB,17 => 128KB)
    

    限制

    init/Kconfig
    
    config LOG_BUF_SHIFT
     int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
     range 12 21
     default 17
     help
     Select kernel log buffer size as a power of 2.
     Examples:
     17 => 128 KB
     16 => 64 KB
     15 => 32 KB
     14 => 16 KB
     13 => 8 KB
     12 => 4 KB
    

    可以看到 shift 最大值限制到了 21,也就是:2 M

    方法2:源码中修改

    路径:kernel/printk.c

    #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
    static char __log_buf[__LOG_BUF_LEN];
    

    可以看到,是已经在编译时定死的一块静态空间,不能动态调整了。

    只需要修改__LOG_BUF_LEN即可。

    最大不超过31或者63(CPU位数-1)

    如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
    若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
    博客地址:https://www.cnblogs.com/schips/
  • 相关阅读:
    People Picker 处理过程
    DC与GC的区别
    说明DOS命令格式的语法
    SQL Server Express的Limitation
    关于IE缓存的一些基础
    Content Deployment入门(上)
    Microsoft SQL Server版本号小结
    要研究一下的技术要点
    区分斜杠与反斜杠
    Windows Virtual PC的虚拟机与宿主机共享文件
  • 原文地址:https://www.cnblogs.com/schips/p/change_dmesg_log_buffer_size_in_linux.html
Copyright © 2011-2022 走看看