安装centos系统;
系统镜像下载地址http://mirrors.163.com/centos/6.5/isos/i386/
下载的是32为的centos6.5;
从linux kernel官网https://www.kernel.org/ 上下载linux内核源码;
我下载的版本是longterm: 2.6.32.61;
解压源码文件压缩包后,进入内核文件夹;
make menuconfig 出现错误 提示没有ncurses库;
yum search ncurses 搜索一下ncurse库:
ncurses.i686 : Ncurses support utilities
ncurses-devel.i686 : Development files for the ncurses library
ncurses-libs.i686 : Ncurses libraries
ncurses-static.i686 : Static libraries for the ncurses library
ncurses-base.i686 : Descriptions of common terminals
ncurses-term.i686 : Terminal descriptions
ocaml-curses.i686 : OCaml bindings for ncurses
然后yum install ncurses-devel.i686
make menuconfig 成功
然后开始编译
make -j4 //开四个线程编译
出现/home/linux/linux-2.6.32.61/usr/include/asm/ptrace.h:5: included file 'linux/linkage.h' is not exported 错误
解决方法:编辑linux-2.6.32.61/arch/x86/include/asm/ptrace.h,注释掉以下三行:
#include<linux/linkage.h>
extern asmregparm long syscall_trace_enter(struct pt_regs *); (146行处)
extern asmregparm void syscall_trace_leave(struct pt_regs *);
注意此处是c语言的头文件,注释方法为/*......*/。
增加以下两行:
extern long syscall_trace_enter(struct pt_regs *);
extern void syscall_trace_leave(struct pt_regs *);
通过修改syscall_trace_enter和syscall_trace_leave函数的类型而解决问题。
然后重新make -j4
make modules
make modules_install
make install
再修改/boot/grub/menu.lst
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32.61)
root (hd0,0)
kernel /vmlinuz-2.6.32.61 ro root=UUID=eda1d174-c336-4bed-89a3-270e8473fc70 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32.61.img
title CentOS (2.6.32-431.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.i686 ro root=UUID=eda1d174-c336-4bed-89a3-270e8473fc70 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.i686.img
通过default的值选择启动的内核,现在defaut=1,选择的内核是2.6.32-431;
而卧们最新编译并安装的内核是2.6.32.61,所以修改defaut=0;
选择最新编译的内核2.6.32.61作为启动项。
最后重新启动系统,就进入了刚才编译安装的内核版本为2.6.32.61的系统。
未完待续。。。。。。