在以前的一篇博文《编译debian内核》已经提过了重新编译内核的方法,但是整个过程花费时间较长,并且生成deb包。

这里我采用稍微简单一些的方法,因为我并没有对内核或者驱动代码做任何修改,仅仅是在内核中选中一些未被选中的调试选项(以便于查看log信息)

先获取内核源码:

 sudo apt-get source linux-source-3.2

会在当前文件夹下得到几个文件:

$ ls
linux-3.2. linux_3.2.57-+deb7u2.debian.tar.xz linux_3.2.57-+deb7u2.dsc linux_3.2.57.orig.tar.xz

查看当前内核配置:

$ uname -a
Linux debian 3.2.---pae # SMP Debian 3.2.- i686 GNU/Linux

查看当前系统中存在的内核配置文件:

$ ls /boot/config-3.2.--*
/boot/config-3.2.-- /boot/config-3.2.---pae

当前采用的内核是3.2.0-4.686-pae,其配置文件是/boot/config-3.2.0-4-686-pae。

进入linux-3.2.57,拷贝内核配置文件:

sudo cp /boot/config-3.2.0-4-686-pae .config

然后使用make menuconfig对当前配置进行修改:

sudo make menuconfig

选择Enable dynamic printk() support(使用该选项可以进行控制代码中的pr_debug和dev_dbg信息输出):

 Kernel hacking --->
[*] Enable dynamic printk() support

然后选择Exit,再选择Exit,选择Yes保存即可。

然后进行编译内核和驱动:

sudo make

在编译过程中出现了一个编译错误,如下所示:

  Building modules, stage .
MODPOST modules
ERROR: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined!
WARNING: modpost: Found section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
make[]: *** [__modpost] 错误
make: *** [modules] 错误

重新编译:

sudo make CONFIG_DEBUG_SECTION_MISMATCH=y

但是编译过程中系统出现了死机现象(与内核代码无关,似乎是我的电脑其他部分出现问题,导致当cpu占用率长期过高时会死机)。

后来我又重新编译,但是多次出现了编译失败的现象,貌似是因为我同时打开了火狐狸,导致系统cpu利用率过低,从而引发了这个问题。

每次编译时使用sudo来进行编译有点怪异(因为默认解压后文件夹是root权限,对该文件夹下文件的操作都需要root权限),

先修改用户以及用户组(我的用户和用户组名称都是host,可以根据需要修改成自己的用户以及用户组名称):

chown -R host:host .

重新编译:

make CONFIG_DEBUG_SECTION_MISMATCH=y
sudo make modules_install
sudo make install

安装时默认会将内核镜像以及initrd文件还有驱动模块都安装到系统文件夹下,并自动在/boot/grub/grub.cfg中添加新的内核选项。

重启电脑后选择新的内核选项(我编译版本是linux-3.2.57,所以新选项是“Debian GNU/Linux,Linux 3.2.57”,默认光标也会停留在这个选项上),

按下回车键进入系统即可。

控制台下查看当前内核版本:

# uname -a
Linux debian 3.2. # SMP Fri Jun :: CST i686 GNU/Linux

当前内核版本是3.2.57了。

后注:

在家里的电脑上按照上面的步骤重新编译了linux内核,最后编译时忘记执行sudo make modules_install,

导致驱动程序没有安装到/lib/modules/linux-3.2.57下,使用新的菜单项进入系统时无法进入系统,

并且此时的/boot/initrd.img-3.2.57只有2M大小。

我重新执行了sudo make modules_install后再执行sudo make install,得到的/boot/initrd.img-3.2.57有100M大小。

debian下配置dynamic printk以及重新编译内核的更多相关文章

  1. debian下使用dynamic printk分析usb网卡驱动

    在<debian下使用dynamic printk分析usb转串口驱动执行流程>中使用了usb转串口,当前例子使用usb网卡分析驱动(dm9601芯片). 仍然需要使能dynamic pr ...

  2. debian下使用dynamic printk分析usb转串口驱动执行流程

    看了一篇文章<debug by printing>,文中提到了多种通过printk来调试驱动的方法,其中最有用的就是"Dynamic debugging". “Dyna ...

  3. Debian下配置防火墙iptables

    debian下iptables输入命令后即时生效,但重启之后配置就会消失,可用iptables-save快速保存配置,因为Debian上iptables是不会保存规则的,然后在开机自动的时候让ipta ...

  4. debian下配置keepalived ha

    抄袭自http://blog.51yip.com/server/1417.html,做了一些修改 可以参考http://blog.linuxphp.org/archives/1615/ 备注:NAT模 ...

  5. debian下配置nginx缓存

    root权限下 新建/usr/nginx/cache/webpages目录 在/etc/nginx/sites-available下找到自己所需配置的文件,打开文件后在开头加上proxy_cache_ ...

  6. Win7平台下配置Sublime Text2 的C++编译环境

    Sublime Text 是一个跨平台的编辑器,之前在 Mac 上成功配置了 C++ 在 Sublime Text 的编译环境,接下来介绍下载 windows 平台下的环境配置. 1. 首先判断机器上 ...

  7. Debian下配置SSH服务器的方法

    Debian 503版本中实现的,Debian默认好像是没有ssh支持的. SSH的安装apt-get install openssh-serverapt-get install sshSSH的配置O ...

  8. debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列

    解决方案来自于debian官网  https://wiki.debian.org/wl 1.加入源 deb http://http.debian.net/debian/ wheezy main c ...

  9. Debian下配置网络的方法

    1.网络配置 配置网卡修改 /etc/network/interfaces 添加如下 # #号后面是备注,不要添加哦! auto eth0 #开机自动激活 iface eth0 inte static ...

随机推荐

  1. 【JQuery Easy UI】后台管理系统的简单布局分享

    重要说明:本博已迁移到 石佳劼的博客.有疑问请到 文章新地址 留言..! 近期做的一个简单的后台管理系统,当中用到了JQuery Easy UI框架,对于撸主这样的把控件能摆整齐就谢天谢地的码农来说, ...

  2. requests ssl 报错

    使用requests下载日志出现HTTPSConnectionPool(host='***', port=443): Max retries exceeded with url: ******(Cau ...

  3. python socket编程(socket)

    代码如下: server端: import sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostnam ...

  4. MySQL四-1:数据类型

    阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 ...

  5. .net之Ajax获取接口数据并实现循环播放

    <script type="text/javascript"> var xhr; ; var res; window.onload = function () { xh ...

  6. ckediter一些小的问题解决办法

    上传图片后,不能看到缩略图. 解决的方法是: BaseDir = "";Thumbnails.Dir = BaseDir + "_thumbs/"; 改为 Th ...

  7. 苹果mac shell 终端 命令行快捷键——行首行尾

    ctrl+a //移到行首 ctrl+e //移到行尾 http://blog.csdn.net/hherima/article/details/47083739

  8. python selenium2示例 - email发送

    前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录.结果等等等相关信息通过自动的手段发送给相关人员.python的smtplib.email模块为我们提供了很好的email发送等功能的 ...

  9. 查找 TextBox 对象中非法数据的示例

    private void GetErrors(StringBuilder sb, DependencyObject obj){ foreach (object child in LogicalTree ...

  10. getMeasuredHeight(),getScrollY(),getHeight()的区别和联系

    前言:关于控件的高度有两种获取方式,一个是获得控件的实际大小(getMeasuredHeight),就是包含显示部分和已显示的部分: 而getHeight是获得控件的显示的大小,如果控件大小超出的屏幕 ...