debian下配置dynamic printk以及重新编译内核
2014-06-20 10:47
295 查看
在以前的一篇博文《编译debian内核》已经提过了重新编译内核的方法,但是整个过程花费时间较长,并且生成deb包。
这里我采用稍微简单一些的方法,因为我并没有对内核或者驱动代码做任何修改,仅仅是在内核中选中一些未被选中的调试选项(以便于查看log信息)
先获取内核源码:
会在当前文件夹下得到几个文件:
查看当前内核配置:
查看当前系统中存在的内核配置文件:
当前采用的内核是3.2.0-4.686-pae,其配置文件是/boot/config-3.2.0-4-686-pae。
进入linux-3.2.57,拷贝内核配置文件:
然后使用make menuconfig对当前配置进行修改:
选择Enable dynamic printk() support(使用该选项可以进行控制代码中的pr_debug和dev_dbg信息输出):
然后选择Exit,再选择Exit,选择Yes保存即可。
然后进行编译内核和驱动:
在编译过程中出现了一个编译错误,如下所示:
重新编译:
但是编译过程中系统出现了死机现象(与内核代码无关,似乎是我的电脑其他部分出现问题,导致当cpu占用率长期过高时会死机)。
后来我又重新编译,但是多次出现了编译失败的现象,貌似是因为我同时打开了火狐狸,导致系统cpu利用率过低,从而引发了这个问题。
每次编译时使用sudo来进行编译有点怪异(因为默认解压后文件夹是root权限,对该文件夹下文件的操作都需要root权限),
先修改用户以及用户组(我的用户和用户组名称都是host,可以根据需要修改成自己的用户以及用户组名称):
重新编译:
安装时默认会将内核镜像以及initrd文件还有驱动模块都安装到系统文件夹下,并自动在/boot/grub/grub.cfg中添加新的内核选项。
重启电脑后选择新的内核选项(我编译版本是linux-3.2.57,所以新选项是“Debian GNU/Linux,Linux 3.2.57”,默认光标也会停留在这个选项上),
按下回车键进入系统即可。
控制台下查看当前内核版本:
当前内核版本是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大小。
这里我采用稍微简单一些的方法,因为我并没有对内核或者驱动代码做任何修改,仅仅是在内核中选中一些未被选中的调试选项(以便于查看log信息)
先获取内核源码:
sudo apt-get source linux-source-3.2
会在当前文件夹下得到几个文件:
$ ls linux-3.2.57 linux_3.2.57-3+deb7u2.debian.tar.xz linux_3.2.57-3+deb7u2.dsc linux_3.2.57.orig.tar.xz
查看当前内核配置:
$ uname -a Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686 GNU/Linux
查看当前系统中存在的内核配置文件:
$ ls /boot/config-3.2.0-4-* /boot/config-3.2.0-4-486 /boot/config-3.2.0-4-686-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 2. MODPOST 3052 modules ERROR: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined! WARNING: modpost: Found 10 section mismatch(es). To see full details build your kernel with: 'make CONFIG_DEBUG_SECTION_MISMATCH=y' make[1]: *** [__modpost] 错误 1 make: *** [modules] 错误 2
重新编译:
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.57 #1 SMP Fri Jun 20 10:02:51 CST 2014 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大小。
相关文章推荐
- [Allwinner编译内核二]默认make menuconfig后,在mklichee时需重新配置的原因
- 一篇编译内核的详细配置文章[3]
- Debian内核编译手记
- 一篇编译内核的详细配置文章
- Code maturity level options 代码成熟度选项 [*]Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 我是开发者,所以选[*] Loadable module support 可加载模块支持 [*]Enable loadable module support 内核编译配置选项简介 (2.4.20-8
- Linux 2.6.19.x 内核编译配置选项简介
- 一篇编译内核的详细配置文章[1]
- Linux 内核配置及编译简介
- Debian 总结 安装 和使用 内核编译(三)
- Linux 2.6.20.x内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- linux配置、编译内核实用工具
- Debian内核编译参考(基于2.6.15-6)
- Linux下配置交叉编译环境,配置编译内核及uboot安装
- [Linux]内核编译与配置管理零星拾遗
- 一篇编译内核的详细配置文章[4]
- 编译升级linux由2.4.20-8到2.6.10内核时,遇到的错误,以及解决方法
- DEBIAN 下安装nfs服务器以及配置简单方法(做了些修改)
- Debian中安装内核以及头文件