分类: LINUX
2010-07-17 22:09:56
1、下载源码
从上下载标准的Linux内核源码。通常有xxx.tar.gz和xxx.tar.bz2两种压缩包可以选择。我下载的是linux-2.6.34.1.tar.bz2
2、拷贝源码
切换到root权限,然后把linux-2.6.29.4.tar.bz2 文件复制到/usr/src/目录下
#su root
#cp 源码压缩包所在目录/ linux-2.6.34.1.tar.bz2 /usr/src
3、解压源码
#tar -jxvf linux-2.6.34.1.tar.bz2
4、进入/usr/src目录
#cd /usr/src/linux-2.6.34.1.tar.bz2
5、配置内核
# make oldconfig
一路回车
6、编译安装内核
Step1: #make
所花时间很长,可以去跟MM聊聊天,看看电影啥的。
Step2: #make bzImage
生成一个名字为bzImage的内核镜像文件
Step3: #make modules
生成*.ko9(模块化的内核驱动)等
ps: 在在'make modules"时,出现:
WARNING: modpost: Found 2 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
解决方法:
执行命令:'make CONFIG_DEBUG_SECTION_MISMATCH=y && make modules'
Step4: #make modules_install
安装内核模块到/lib/modules/2.6.34.1目录下
Step5: make install
完成内核(bzImage)和System.map的拷贝到/boot目录的工作。在ubuntu下,查看/boot/下已经有vmlinuz-2.6.34.1了,但是没有对应的initrd.img
首先,安装kernel-package和initramfs-tools;
#apt-get install kernel-package
#apt-get install initramfs-tools
然后,
mkinitramfs -o /boot/initrd.img-2.6.34.1 /lib/modules/2.6.34.1/
当前目录下生成一个名字为initrd.img-2.6.34.1的initrd 镜像文件。
在执行命令’ mkinitramfs -o /boot/initrd.img-2.6.34.1 /lib/modules/2.6.34.1/
’出现错误:
gzip: stdout: No space left on device
此提示表明:/boot分区空间不够。
解决方法:
一。查看内核
#dpkg --get-selections | grep linux-image
命令结果如:
linux-image-2.6.28-11-generic install
linux-image-2.6.28-16-generic install
linux-image-2.6.28-18-generic install
linux-image-2.6.28-19-generic install
linux-image-generic install
二。查看现在使用的内核
#uname -r
命令结果如:
2.6.28-19-generic
三。把不再使用的内核用apt-get purge命令卸载掉。如前面的例子,则用:
#sudo apt-get purge linux-image-2.6.28-11-generic
在执行这条命令的时候,又出现错误:
Errors were encountered while processing:
linux-restricted-modules-2.6.28-11-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决方法是执行命令:
#dpkg --configure –a
同样,卸载2.16 linux-image-2.6.28-16-generic
最后,再执行命令’ mkinitramfs -o /boot/initrd.img-2.6.34.1 /lib/modules/2.6.34.1/’,成功。
7、检查/boot/grub/menu.lst文件内容是否多出类似如下的信息即可。
title Ubuntu 9.04, kernel 2.6.34.1
uuid 2dd48e47-3376-480f-b212-bc8144b54610
kernel /vmlinuz-2.6.34.1 root=UUID=8ea2a2a3-68e0-4e59-bc5e-ef9f0c34db50 ro quiet splash
initrd /initrd.img-2.6.34.1
quie
我的里面有,所有安装成功了!