• 欢迎大家来访,希望积极评论哟
  • 网站更名"小鸟博客"。。。
  • 全站启用https,哇咔咔咔咔
  •    4年前 (2016-03-21)  C/C++ Linux 热门 |   抢沙发  11 
    文章评分 0 次,平均分 0.0

    一不留神archlinuxarm就略过kernel4.4直奔4.5了。真是要人命,在开发环境使用archlinux也是怪我自己作死。
    为了能留在kernel4.4,只能自己编译喽,可是内核配置信息怎么搞呢,谷大娘告诉我一下方法:
    1、在运行时通过/proc/config.gz获取:
    在控制台输入命令:cat /proc/config.gz | gzip -d > (你要保存配置的文件名)
    这个方法简单,但是也有他的局限性,首先必须配置CONFIG_IKCONFIG_PROC,其次必须在系统运行时进行获取。

    2、可以直接通过编译好的内核映像:vmlinux、zImage、uImage等直接获取
    这个方法其实也非常简单,内核黑客们已经帮我们做好了提取工具了:scripts/extract-ikconfig。使用起来超简单:
    (如果是交叉编译,那就在宿主机)输入如下命令:(内核源码路径)scripts/extract-ikconfig (内核映像路径) > (你要保存配置的文件名)
    这个工具对于gz压缩方式是支持一贯不错,从2.6.37开始支持bzip2、 lzma 和 lzo压缩方式,从2.6.39开始支持 xz压缩方式。这些从内核的git log中可以看出。

    3、从内核逻辑地址空间提取:
    从上面的的生成介绍中我们可以知道,配置文件的压缩文件其实就在内核映像的只读数据段中。如果内核在运行的时候,其实数据在内核逻辑地址空间中可以找到。方法概况如下:
    (1)通过/proc/kallsyms找到“kernel_config_data”这个符号对应的内核逻辑地址
    (2)通过/dev/kmem和上面得到的逻辑地址获取数据。压缩文件数据就在:"IKCFG_ST"与"IKCFG_ED"之间。
    这个步骤需要自己写一小段的C代码,可以参考devkmem的代码(《对于驱动调试有用的两个小工具(devmem2、devkmem)》)

    哈哈,获取信息后马上丢源码里编译去,然后在pacman里停掉kernel包的更新,从此,不再担心不小心离开LTS版内核了。

     

    除特别注明外,本站所有文章均为小鸟博客原创,转载请注明出处来自https://www.cba89.com/linux/354

    发表评论

    表情 格式

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册