在以前的一篇博文《编译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. 从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named

    这一章节我们来讨论一下基于java的标准注解装配标签@Inject的限定器@Named. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_s ...

  2. executable null\bin\winutils.exe in the Hadoop binaries.

    在windows 使用eclipse远程调用hadoop集群时抛出下面异常 executable null\bin\winutils.exe in the Hadoop binaries. 这个问题 ...

  3. spring+springMVC+hibernate整合

    首先我们要知道hibernate五大对象:,本实例通过深入的使用这五大对象和spring+springMVC相互结合,体会到框架的好处,提高我们的开发效率 Hibernate有五大核心接口,分别是:S ...

  4. ES 31 - 从0开始搭建Elasticsearch生产集群

    目录 1 配置环境 1.1 服务器IP映射 1.2 配置各节点的ssh免密通信 1.3 安装JDK并配置环境变量 2 部署单节点服务 3 部署集群服务 4 启动集群中的所有节点 4.2 启动各个节点中 ...

  5. Swing实现右下角消息框

    package com.ui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impo ...

  6. udp广播和多播

    使用UDP协议进行信息的传输之前不需要建立链接, 客户端向服务器发送信息时,客户端只需要给出服务器的ip地址和端口号,可以发送信息.至于服务器端是否存在,是否能够收到该报文,客户端根本不用管. 广播( ...

  7. Robot Motion - poj 1573

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11269   Accepted: 5486 Description A ...

  8. python的list求和与求积

    python中,无论是对的list求和还是求积,我都给出了两种方法. 1.对list求和 1.1 s=0 for i in range(10): s+=i 1.2 s=sum(range(10)) 2 ...

  9. js判断对象的属性是原型的还是实例的

    一些情况下,我们需要知道对象的属性是原型的还是实例的,如果看代码的话比较繁琐,下面讲解下如何可以直接判断 1.hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的 ...

  10. Linux mail发送邮件

    发送前一天的监控日志#!/bin/bash source /etc/profile time=`date -d '-1 day' "+%Y%m%d"` #判断服务是否已经启动 se ...