因为实验环境的不同,如果内核编译过程出现未知错误而造成编译失败,且破坏了系统文件,所导致的无法预料的损失,本人概不负责。因作者本人也只是初学者,此篇文章只适用于在初学者在做类似实验时使用,如果是商业用途,请在互联网上搜索专业实施方法与步骤,或者聘请专业从事人员。
给大家一个提醒,就是升级的跨度不要太大,不然实验失败率会很大。
言归正传,下面便进入我们的主题:
我们要先做好准备工作,
整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。
建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。
安装好xz解压工具。安装xz解压工具过程如下。
对xz包进行解压缩
tar -jxvf xz-5.0.3.tar.bz2 -C /usr/local/src/
解压完成后进入目录查看
接下来便可以执行安装了。默认安装路径在/usr/local/目录下
执行完./configure之后,执行make操作,最后再执行make install操作:
安装完成后,我们可以进入安装目录下查看:
查看环境变量,xz路径已经在PATH值里,我们已经可以直接使用xz加压缩工具了。
[root@localhost local]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost local]#
那么,接下来我们便可以正式进入内核编译过程了,
对新版本的linux内核进行解压
[root@localhost ~]# xz -d linux-3.8.4.tar.xz
加压缩完毕后,会创建一个.tar文件包裹:
[root@localhost ~]# tar -xvf linux-3.8.4.tar -C /usr/src/
对该包裹进行拆包操作
需要注意的是,拆包后的存放路径,内核的源代码我们一般都存放在/usr/src/目录下,而应用软件的则是存放在/usr/local/src/目录下。
然后我们切换到usr/src/目录下
进入我们的新内核目录下
[root@localhost src]# cd linux-3.8.4/
[root@localhost linux-3.8.4]# ls
arch Documentation init lib README sound
block drivers ipc MAINTAINERS REPORTING-BUGS tools
COPYING firmware Kbuild Makefile samples usr
CREDITS fs Kconfig mm scripts virt
crypto include kernel net security
[root@localhost linux-3.8.4]#
接下来,把旧版本的配置文件拷贝到当前目录下,以其为参照点,执行make操作:
[root@localhost linux-3.8.4]# cp /boot/config-2.6.18-164.el5 ./config
[root@localhost linux-3.8.4]# make menuconfig
执行完成后便打开如下图所示菜单,为我们新内核的配置菜单。
选择YES保存配置:
接下来便是执行make(会需要较长时间)及make install操作:
执行make操作时,会出现错误,这就需要我们打补丁:
查看我们的补丁包:
[root@localhost ~]# xz -d patch-3.8.4.xz
解压缩,
解压缩之后会形成一个patch-3.8.4文件,移动到新内核目录下
[root@localhost ~]# cp patch-3.8.4 /usr/src/linux-3.8.4/
[root@localhost ~]#
然后进入内核目录下,执行命令‘patch –p0’ 安装补丁
新内核打好补丁后,内核会放在/boot/目录下,我们可以直接查看,会有两个内核,包含新旧两个版本。
可以查看配置文件(vim /etc/grub.conf),会自动添加新内核信息,但是默认的还是会启用旧内核,我们需要把default改成1,这样就会开机器用我们的新内核了。