Ubuntu12.04 内核树建立

时间:2023-03-09 03:15:11
Ubuntu12.04  内核树建立

先查看自己使用的内核版本

lin@lin-virtual-machine:~$  uname -r
3.2.--generic

如果安装系统时,自动安装了源码。在 /usr/src 目录下有对应的使用的版本目录。

lin@lin-virtual-machine:~$ cd /usr/src
lin@lin-virtual-machine:/usr/src$ ls
linux-headers-3.2.- linux-headers-3.2.--generic

查看一下可一下载的源码包

lin@lin-virtual-machine:/usr/src$ apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-3.2. - Linux kernel source for version 3.2. with Ubuntu patches

我这里选择所以“linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches”直接 install

lin@lin-virtual-machine:/usr/src$ sudo apt-get install linux-source-3.2.

下载完成后,在/usr/src下,文件名为:linux-source-3.2.0.tar.bz2,是一个压缩包,解压缩既可以得到整个内核的源代码。

使用pwd来查看当前路径

ls来查看文件夹中有哪些文件

lin@lin-virtual-machine:/usr/src$ pwd
/usr/src
lin@lin-virtual-machine:/usr/src$ ls
linux-headers-3.2.- linux-source-3.2.
linux-headers-3.2.--generic linux-source-3.2..tar.bz2

解压缩

lin@lin-virtual-machine:/usr/src#sudo tar jxvf linux-source-3.2.0.tar.bz2

进入该目录(cd linux-source-3.2.)

lin@lin-virtual-machine:/usr/src$ cd linux-source-3.2./
lin@lin-virtual-machine:/usr/src/linux-source-3.2.$ pwd
/usr/src/linux-source-3.2.

开始配置内核 选择最快的原版的配置(默认)方式

lin@lin-virtual-machine:/usr/src/linux-source-3.2.$ sudo make oldconfig

make需要等一个小时多。。。

lin@lin-virtual-machine:/usr/src/linux-source-3.2.$ sudo make

数小时后

...
System is kB
CRC d5a51584
Kernel: arch/x86/boot/bzImage is ready (#)
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] Error
make: *** [modules] Error

解决方法:来自http://ubuntuforums.org/showthread.php?t=1931029

lin@lin-virtual-machine:/usr/src/linux-source-3.2.$ sudo gedit .config

估计是RTS5139驱动的问题.反正没有使用这个驱动,不要加入编译, 编辑.config, 将

CONFIG_RTS5139=m

修改成如下的形式:

CONFIG_RTS5139=n

继续make

编译压缩形式的内核

make bzImage

编译模块:

make modules

安装模块:

make modules_install

执行结束之后,会在/lib/modules下生成新的目录

lin@lin-virtual-machine:/lib/modules$ ls
3.2.--generic 3.2.

成功后重启。