今天忽然看到自己的/lib/modules/?kernel/build的符号链接是内核代码头文件,不符合ldd3中所说:先前的内核只需要一套内核头文件就够了,而2.6的内核模块需要和内核源码树中的目标文件连接,通过这种方式可得到一个更加健壮的模块转载器。我简单介绍下自己构建内核源码树的过程。
首先,在终端执行:
apt-cache search linux-source (寻找相关内核)
可以看到结果:
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.24 - Linux kernel source for version 2.6.24 with Ubuntu patches
然后:
sudo apt-get install linux-source-2.6.24(下载内核)
tar jxvf linux-source-2.6.24.tar.bz2
这是下载完成,并加压后的/usr/src目录中的内容。
linux (符号链接) linux-headers-2.6.24-29-generic
linux-headers-2.6.24-26 linux-source-2.6.24(解压后)
linux-headers-2.6.24-26-generic linux-source-2.6.24.tar.bz2(下载得到)
linux-headers-2.6.24-29 rpm
然后进入新内核的目录,准备配置,编译。
在终端中以此执行如下命令:
make oldconfig //从目前正在运行的系统中生成一份.config文件,以此替代make config后生成.config的工作。当然,也可手动从目前运行内核中拷贝.config到新内核目录中。
make menuconfig
make make bzImage
make modules
make modules_install //安装外挂模块
make install //安装新内核
这时/boot目录中存在:
initrd.img-2.6.24-26-generic vmlinuz-2.6.24-26-generic
initrd.img-2.6.24-26-generic.bak vmlinuz-2.6.24-29-generic
initrd.img-2.6.24-29-generic vmlinuz-2.6.24.6
initrd.img-2.6.24-29-generic.bak
没有自动生成: initrd.img-2.6.24.6(后面制作的)
然后调用mkinitramfs命令制作initrd.img文件,mkintramfs /lib/modules/2.6.24.6 -o /boot/initrd.img-2.6.24.6
最后,我们需要更新menu.lst文件启动我们的新内核。进入此文件,遵照里面已有的内容写一个关于新内核的启动引导,我只进行了简单的替换,就不贴出了。
完成后重新启动, uname -r
2.6.24.6,新内核成功启动。
阅读(904) | 评论(0) | 转发(0) |