在历经8个rc版本之后,Linux 4.9版本的内核于2016年12月11日如期与大家见面。根据Linux的创始人Linus Torvalds的声明,Linux Kernel 4.9分支会是一个重大的版本更新,其间会经过8个研发版本。Linus Torvalds 在2016年12月11日在内核邮件列表上宣布正式释出Linux Kernel 4.9,这一个全新的主线(mainline)版本,同时这也标志着与4.10版本合并窗口的开启
1. Linux介绍
如果问20世纪最伟大的软件是什么?笔者认为一定是Linux,如果没有Linux就没有今天的互联网、移动互联网、物联网,更没有占据超过87%市场份额的智能手机操作系统Android(数据来源:Strategy Analytics Q3季度数据)。
1.1 什么是Linux
Linux是Unix系统的一个克隆,由Linus Torvalds及一些组织松散的黑客从头编写。是一个基于POSIX标准的类UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它具有你所期望的UNIX系统的全部特征和功能,包括真正的多任务、虚拟内存、共享库、按需加载、共享的写时复制可执行文件、适当的内存管理、包括IPv4和IPv6的模块化网络。
Linux 基于GNU通用公共许可证发行。
1.2 Linux的内核(Lernel)
是一个一体化内核系统,从技术角度或者严格意义上来讲Linux这个词只表示Linux系统的内核。CentOS、Ubuntu、Red Hat、Debian、Fedora等发行版,都是基本这个Linux内核进一步开发和发行的。而Linux的创始人及其团队,也只负责内核的Linux内核的开发和维护。Linux内核源码托管于github,网址如下:
https://github.com/torvalds/linux
注:Git同样是由Linus Torvalds主导,为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。
1.3 Linux发行版
我们常会听到Linux发行版的概念。Linux发行版是指,由组织松散的团队、商业机构或志愿者组织编。通常会包括系统软件和应用软件,以及一个用于简化系统初始安装的安装工具,和让软件安装升级的软件管理器(如:RPM、DPKG)。
如,前文提到的CentOS、Ubuntu、Red Hat、Debian、Fedora等Linux系统,都是一个Linux发行版。它们都基于相同的Linux内核开发,但集成了不同的系统软件和应用软件,及系统初始化安装工具和软件管理器。
由于不同的发行版都使用了相同的Linux内核,所以使得Linux平台具有良好的兼容性和跨平台移植性,让相同的软件可以运行于不同的发行版中。也正因此,让Linux拥有了其它系统所无法比拟的,宠大的软件生态系统。
1.4 Linux内核(Lernel)的作用及构成
计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机包含处理器、内存、硬盘和其他外设的综合设备。但没有软件来操作和控制,其自身是不能工作的。
完成这个控制工作的软件就称为操作系统,在Linux中被称为Kernel(内核)。
Linux内核的组成
Linux内核由以下模块组成:
- 进程管理(Process Management)
- 定时器(Timer)
- 中断管理(Interrupt Management)
- 内存管理(Memory Management)
- 模块管理(Module Management)
- 虚拟文件系统接口(VFS Layer)
- 文件系统(File System)
- 设备驱动程序(Device Driver)
- 进程间通信(Inter-process Communication)
- 网络管理(Network Management)
- 系统启动(Iystem Init)
- 其它
Linux内核版本号
在Linux发展过程,先后使用过三种不同的版本命名方案:
- 早期版本 - 第一个版本为
0.01。其后是0.02、0.03、0.10、0.11、0.12(第一GPL版本)、0.95、0.96、0.97、0.98、0.991.0。 - 旧计划,数字由
A.B.C三部分表示(1.0和2.6版之间)-A表示主版本号;B表示次主版本号;C较小的末版本号。其间,
A只变化过两次,分别1994年的1.0和1996年的2.0B用于判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版C表示一些Bug修复、安全、新特性和驱动更新的次数 time-based表示方式 -2.6.0以后,人们觉得应该使用更短的发布周期。表示格式更新为A.B.C表示方式。其中,
A和B保持不变;C表示内核的版本;D表示Bug修复、安全补丁、新特性等,通常以'rc'表示
2. Linux 4.9内核有哪些更新

Linux Kernel 4.9的发布后,4.9将是最新的主干分支(mainline)。Linus 也表示4.9是一个重大的更新,该版本的发布,也标志着与4.10全并窗口的开启,合并周期约为两周,会在圣诞节前后关闭。
在4.9牌本的内核带来的改变有:
- 虚拟映射内核栈(virtually mapped kernel stacks)
- 内存保护键系统调用(Memory-protection keys system calls)
- BBR拥堵控制算法(BBR congestion-control algorithm)
- Greybus总线架构支持(Support for the Greybus bus architecture )
- 虚拟映射内核栈(virtually mapped kernel stacks)
- XFS文件系统共享扩展(Shared extents in the XFS filesystem)
- BUG修改及其它…
3. 升级Linux 4.9内核
接下来,笔者将基于CentOS,体验一下升级Linux Kernel 4.9。
3.1 查看当前系统版本
使用uname命令查看当前内核版本:
$ uname -r 2.6.32-042stab117.14
CentOS发行版的特点是:为了追求系统的稳定性,而使用较低版本的内核心。本文使用的CentOS 7.0版本的系统,其内核版本只有2.6.32。
3.2 使用ELRepo源升级内核
Linux内核升级有多种方式,比较通用的方式是使用源码编译安装,源码下载网址:
https://www.kernel.org/
由于源码安装时,配置项特别多,配置和编译时间较长。为了简单方便,本文将使用ELRepo源安装。ELRepo是一个企业版Linux RPM存放库,支持Red Hat Linux(RHEL)及其衍生版本。
导入公钥
首先,导入公钥:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELRepo库
根据自己的发行版本,选择安装ELRepo库:
RHEL-7、SL-7或CentOS-7使用以下命令:
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
RHEL-6、SL-6或CentOS-6使用以下命令:
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
RHEL-5、SL-5或CentOS-5使用以下命令:
rpm -Uvh http://www.elrepo.org/elrepo-release-5-5.el5.elrepo.noarch.rpm
安装内核
安装4.9版本的内核心使用以下命令:
yum --enablerepo=elrepo-kernel install kernel-ml
在以上命令中,kernel-ml表示主线版本(mainline)。
如果需要安装long-term使用以下命令:
yum --enablerepo=elrepo-kernel install kernel-lt -y
