编译内核——升级安装内核
2016-09-19 08:52
375 查看
很多时候我们使用别人已经编译好的linux发行版,并不一定符合我们的实际生产环境需求,可能我们我们需要的功能内核并没有编译进来,而我们用不到的功能,又被编译进内核了,加上如果当前系统存在较大BUG时,发行商还没得及重新发布修复过漏洞后的发行版系统时,就需要我们使用内核发行官网所提供的源码包自行编译并升级内核了。当然自行编译内核首先需要对自己的硬件特性有一个比较详细了解,与此同时,要对自己生产环境所需要的功能有一个详细的规划,否则我们盲目的去编译内核是存在很大风险的,所以我们在做此工作之前,需要做好充分的准备工作。
一、准备工作:
(1)准备好开发环境
(2)获取目标主机上硬件设备的相关信息
(3)获取目标主机系统功能的相关信息
(4)获取内核源代码包:www.kernel.com
1、准备开发环境:
需要安装的包组:
Development Tools
Server Platform Developmnet
需要安装的包:ncureses—devel
2、获取目录主机上的硬件设备的相关信息
cpu:
cat /proc/info
lscpu
x86info -a(需要自行安装)
PCI:lsPCI -v|-vv 查看PCI设备
USB:lsusb -v|-vv 查看usb设备
块设备:lsblk
Centos 6查看全部硬件信息:hal-device
二、内核编译步骤:
(1)tar xf linux-version.tar.xz -C /usr/src
(2)cd /usr/src
(3)ln linux-version linux
(4)cd linux
(5)make menuconfig 配置内核编译选项
(6)make -j # 指定CPU的线程数
(7)make modules_install 安装内核模块
(8)make install 安装内核
(9)reboot 重启系统选择使用新内核
三、远程终端上编译内核时最好使用screen拨离,以防终端连接断开导致前功尽弃
screen命令:
打开screen:screen
拨离screen:ctrl+a,d
列出screen:screen -ls
连接至指定screen:screen -r screenID
关闭screen:切换到准备关闭的screen,执行exit
四、编译过程详细说明:
1,配置内核选项:
支持“更新模式”进行配置:在已有的config文件的基础上进行修改配置
(a)make config:基于命令行遍历的方式配置内核中的每个选项
(b)make menuconfig:基于cureses的文本配置界面
(c)make gconfig:基于GTK开发环境的窗口界面
(d)make xconfig:基于QT开发环境的窗口界面
支持“全新配置”模式进行配置
(a)make defconfig:基于内核为目标平台提供的默认配置
(b)make allnoconfig:所有选项都不编译(最小化编译)
2、编译:
(a)多线程编译:make -j #
(b)只编译某子目录中的相关代码
cd /usr/src/linux
make path/to/dir
(c)只编译指定的模块
cd /usr/src/linux
make path/to/dir_file.ko(即将生成的模块名称)
(d)如何交叉编译:目标平台与当前编译所在的平台不同
make arch=arch_name
make arch=arch_name help获取指定平台的编译使用帮助
编译过程的时间长短视机器性能而定,I7八核全开的话10分钟也就编译完了,I3四核全开少说也得1一个小时吧,差距还是比较大的,编译过程是相当耗费CPU性能以及内存资源的,所以要看你的具体配置了。由于编译过程比较长,所以也就无法给大家展示过程详图了,只要你按着上面的详细步骤操作,是没有问题的,笔者在Centos7.2系统上成功编译安装并能正常使用的是当前kernel最新版4.7.3
![](http://s5.51cto.com/wyfs02/M02/87/65/wKiom1ffM5KiLHffAAAQ91b8Nw8143.png)
![](http://s1.51cto.com/wyfs02/M01/87/61/wKioL1ffM9mTzEPlAAAKb0ESHyI121.png)
一、准备工作:
(1)准备好开发环境
(2)获取目标主机上硬件设备的相关信息
(3)获取目标主机系统功能的相关信息
(4)获取内核源代码包:www.kernel.com
1、准备开发环境:
需要安装的包组:
Development Tools
Server Platform Developmnet
需要安装的包:ncureses—devel
2、获取目录主机上的硬件设备的相关信息
cpu:
cat /proc/info
lscpu
x86info -a(需要自行安装)
PCI:lsPCI -v|-vv 查看PCI设备
USB:lsusb -v|-vv 查看usb设备
块设备:lsblk
Centos 6查看全部硬件信息:hal-device
二、内核编译步骤:
(1)tar xf linux-version.tar.xz -C /usr/src
(2)cd /usr/src
(3)ln linux-version linux
(4)cd linux
(5)make menuconfig 配置内核编译选项
(6)make -j # 指定CPU的线程数
(7)make modules_install 安装内核模块
(8)make install 安装内核
(9)reboot 重启系统选择使用新内核
三、远程终端上编译内核时最好使用screen拨离,以防终端连接断开导致前功尽弃
screen命令:
打开screen:screen
拨离screen:ctrl+a,d
列出screen:screen -ls
连接至指定screen:screen -r screenID
关闭screen:切换到准备关闭的screen,执行exit
四、编译过程详细说明:
1,配置内核选项:
支持“更新模式”进行配置:在已有的config文件的基础上进行修改配置
(a)make config:基于命令行遍历的方式配置内核中的每个选项
(b)make menuconfig:基于cureses的文本配置界面
(c)make gconfig:基于GTK开发环境的窗口界面
(d)make xconfig:基于QT开发环境的窗口界面
支持“全新配置”模式进行配置
(a)make defconfig:基于内核为目标平台提供的默认配置
(b)make allnoconfig:所有选项都不编译(最小化编译)
2、编译:
(a)多线程编译:make -j #
(b)只编译某子目录中的相关代码
cd /usr/src/linux
make path/to/dir
(c)只编译指定的模块
cd /usr/src/linux
make path/to/dir_file.ko(即将生成的模块名称)
(d)如何交叉编译:目标平台与当前编译所在的平台不同
make arch=arch_name
make arch=arch_name help获取指定平台的编译使用帮助
编译过程的时间长短视机器性能而定,I7八核全开的话10分钟也就编译完了,I3四核全开少说也得1一个小时吧,差距还是比较大的,编译过程是相当耗费CPU性能以及内存资源的,所以要看你的具体配置了。由于编译过程比较长,所以也就无法给大家展示过程详图了,只要你按着上面的详细步骤操作,是没有问题的,笔者在Centos7.2系统上成功编译安装并能正常使用的是当前kernel最新版4.7.3
![](http://s5.51cto.com/wyfs02/M02/87/65/wKiom1ffM5KiLHffAAAQ91b8Nw8143.png)
![](http://s1.51cto.com/wyfs02/M01/87/61/wKioL1ffM9mTzEPlAAAKb0ESHyI121.png)
相关文章推荐
- 编译升级内核时需要安装的六个包
- VMware安装Fedora18,升级3.8.2内核,导致hgfs无法编译安装,无法共享文件夹的问题解决方法
- centos 升级内核(编译安装)
- 编译安装新内核后无法进入系统提示Kernel Panic
- Linux 2.6内核编译安装全景体验(下)
- 编译ubuntu 7.1内核和顺带安装无线网卡[zt]
- Linux 2.6内核编译,内核升级
- 编译和安装linux内核2.6.x,一个简单的内核驱动测试
- 从硬盘安装Red Hat linux9(和升级内核)(原创)
- 编译和安装linux内核2.6.24,并且写一个简单的内核驱动测试之
- FreeBSD下编译升级内核的不同操作手法[zt]
- Linux内核升级&补丁安装手册(一)
- 编译升级linux由2.4.20-8到2.6.10内核时,遇到的错误,以及解决方法
- 我的Ubuntu 5.10光盘安装流程(包括编译内核)
- 2.4.7内核升级2.4.18网桥所需要的内核编译!!
- 如何编译升级ubuntu内核
- Linux 2.6内核编译安装全景体验(中)
- 在Suse10.1下编译内核+安装perfctr
- Linux系统下编译安装支持NTFS的内核模块
- 升级与编译内核