为什么要自己编译Linux内核呢?不要误会,没有任何geek的目的,我只是为了获取具有调试信息的vmlinux文件,方便在oprofile工具上使用,用来跟着程序的CPU耗费在哪个函数环节.

首先通过apt-get获取内核代码,当然你可以直接从kernel.org上Git获取代码.

sudo apt-get install linux-source

然后是一些编译需要的包

sudo apt-get install libncurses5-dev

将linux-source-3.5.0.tar.bz2解压到/tmp目录下

tar -jxf /usr/src/linux-source-3.5.0/linux-source-3.5.0.tar.bz2 -C /tmp/

后面通常就会在tmp下进行编译,我的tmp是挂载到内存中的,这个样子可以加快编译速度,同时减少SSD的磨损,但是一直由于空间不足而失败,事后计算了编译文件共有9G大小,所以说内存小的电脑还是放在硬盘上执行吧.

先清理一下代码遗留文件

make mrproper

获取配置文件

cp /boot/config-<code>uname -r</code> ./.config

编译配置文件,确保CONFIG_DEBUG_INFO=y选项存在,也可以通过make menuconfig更改选项

然后进行编译

sudo make -j4

OK,这个样子可以等着了

oen@oen ~/code/src/linux-source-3.5.0 $ ls vmlinux*
vmlinux vmlinux.o

vmlinux便是我想要的文件,参与oprofile的内核调试过程.
如果你想说如何安装内核,恩,我后面会写的

make -j8 && make modules -j8 && make modules-install -j8 && make install -j8

 


ubuntu编译linux内核来自于OenHan

链接为:http://oenhan.com/ubuntu-vmlinux-kernel

发表回复