1.解压
tar -xf linux-3.10.58.tar.xz
2.更新当前系统
sudo yum update
说明:执行此操作会升级系统版本,建议不要执行
3.安装编译内核所需要的软件包
sudo yum groupinstall "Development Tools"#
一口气安装编译时所需的一切工具
sudo yum install ncurses-devel#
必须这样才能让
make *config
这个指令正确地执行。
sudo yum install qt-devel#
如果你没有
X
环境,这一条可以不用
sudo yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel#
创建
CentOS-6
内核时需要它们
4.uname -r
2.6.32-358.11.1.el6.x86_64 #
查看当前系统内核
5.获取并解压内核源码,配置编译项,将当前系统的配置文件拷贝到当前目录。
tar -xf linux-3.10.58.tar.xz -C /usr/src/
cd /usr/src/linux-3.10.58/
cp /boot/config-2.6.32-358.11.1.el6.x86_64 ./.config #
此处
boot
下的这个
config
文件要根据实际,未必是这个文件名的文件。
6.使用旧内核配置,并自动接受每个新增选项的默认设置
sh -c 'yes "" | makeoldconfig' # make oldconfig
会读取当前目录下的.config
文件,在.config
文件里没有找到的选项则提示用户填写,然后备份.config
文件为.config.old
,并生成新的.config
文件
http://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-linux-kernel-makefile
7.编译
sudo make -j16 bzImage#
生成内核文件
sudo make -j16 modules#
编译模块
sudo make -j16 modules_install#
编译安装模块
要严格按照这个顺序进行编译,不能合并成一句,sudo make -j8 bzImage modules modules_install。
-j后面的数字是线程数,用于加快编译速度,一般的经验是,有多少G内存,就填写那个数字, free -m查看内存大小,我的设备是16G内存,则为-j16。
8.安装后重启
sudomake install #
如果弹出问题
1.
如下,需重新升级内核,升级成功。
如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,可以忽略。
9.修改Grub引导顺序
安装完成后,需要修改Grub引导顺序,让新安装的内核作为默认内核。
编辑 grub.conf文件:
sudovim /etc/grub.conf # 数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0。
10.重启
sudoreboot
uname–r #重启后,看一下当前内核版本号,
3.10.58