欢迎,来自IP地址为:35.171.164.77 的朋友
虽然很多人都认为Linux是一个完整的操作系统,但是确切的来讲,Linux仅仅指的是内核本身。另一方面,不同的发行版本是在内核基础上提供不同应用软件及库文件的完整功能系统。
在操作系统的全部操作中,内核主要负责以下两项重要任务:
- 充当系统应用软件和硬件的接口
- 尽可能有效的管理系统资源
为此,内核可以通过现有驱动程序或特定模块来同主机硬件进行通信。例如,主机的某一个应用需要使用无线网络,那么这个应用会发送请求给内核,而内核则会使用正确的驱动程序来控制硬件连接网络。
随着新的设备和技术周期性地出现,如果我们想充分利用我们的内核,那么保持内核的更新是很重要的。此外,更新内核将帮助我们利用新的内核函数,并保护我们自己不受以前版本中发现的漏洞的攻击。
最新版的Linux 4.14内核已经发布,CentOS以及类似的RHEL用户都准备好更新了么?好,马上开始。
1、查看现有系统内核版本
我们安装的不同Linux发行版中,都对应于一种内核,使用如下命令可以查看现有系统的内核版本
# uname -sr
如果我们访问linux的内核网站kernel.org就会发现,目前最新的内核版本为4.14,该版本为长期支持版本,相较于其它内核,这个版本将有长达6年的支持期,比原来的2年大为延长,可见开发者对于此版本内核的信心。对于将Linux主机部署为代理的用户,更新内核并开启BBR功能就成为一项基本操作。
2、CentOS系统更新内核
目前大多数Linux发行版都提供了官方软件库包管理工具来更新内核的功能,但对于内核的更新,官方软件库的策略就比较保守。Red Hat发行版一般采用与其软件配合最好,工作最为稳定的内核,这就造成yum管理工具不能第一时间更新内核。
与Red Hat相对应的是,CentOS允许使用第三方软件库的软件来随时保持内核版本为最新,最为出名的第三方软件库当然就是elrepo.org。其实这个软件库的所有软件包对于Red Hat同样适用,只是官方不推荐使用罢了。使用elrepo软件库,要安装一个软件库的key,并且将该软件库添加至yum软件源。CentOS 7系统下使用以下命令:
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
对于CentOS 6则为:
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
一旦elrepo的软件源安装成功了,就可以使用以下命令来查看所有elrepo的可用软件源:
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
命令会显示出所有可用的内核,如下图所示:
可以看到,软件源中已经包含了4.14的ml版本(就是主线版本),CentOS 6和7都可以使用如下命令安装内核:
# yum --enablerepo=elrepo-kernel install kernel-ml
命令执行完后,4.14内核就已经安装成功了。
3、更改启动菜单以最新版内核启动
内核安装成功并不代表内核更换了,因为如果不修改启动菜单,那么系统将会使用原来的内核启动。现在就要修改启动菜单,来达到以新版内核启动的目的。这里CentOS 7和CentOS 6的做法有些区别,将分别讲解。
首先来讲CentOS 7,修改这个启动项的方法很多,这里只介绍一种比较直观的。首先用如下命令查看一下启动菜单项的内容:
# cat /boot/grub2/grub.cfg | grep menu
命令会显示目前主机的所有的可用启动项,如下图所示:
可以看到,’CentOS Linux (4.14.0-1.el7.elrepo.x86_64) 7 (Core)’是一个menuentry,现在使用如下命令将其设置为默认启动项即可:
# grub2-set-default 'CentOS Linux (4.14.0-1.el7.elrepo.x86_64) 7 (Core)'
设置完成后,可以reboot主机,然后用uname -sr命令查看是否以新版内核启动。
对于CentOS 6,则需要直接编辑启动菜单文件/boot/grub/menu.lst,以达到更改启动项的目的:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,0) # kernel /boot/vmlinuz-version ro root=/dev/vda1 console=ttyS0 console=tty0 printk.time=1 panic=5 # initrd /boot/initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=3 serial console title CentOS (4.14.0-1.el6.elrepo.x86_64) root (hd0,0) kernel /boot/vmlinuz-4.14.0-1.el6.elrepo.x86_64 ro root=/dev/vda1 console=ttyS0 console=tty0 printk.time=1 panic=5 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=C rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM crashkernel=auto rd_NO_DM initrd /boot/initramfs-4.14.0-1.el6.elrepo.x86_64.img title CentOS (2.6.32-696.13.2.el6.x86_64) root (hd0,0) kernel /boot/vmlinuz-2.6.32-696.13.2.el6.x86_64 ro root=/dev/vda1 console=ttyS0 console=tty0 printk.time=1 panic=5 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=C rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM crashkernel=auto rd_NO_DM initrd /boot/initramfs-2.6.32-696.13.2.el6.x86_64.img
可以看到,每个内核启动项对应于一个title,第一个为0,以后依次加1,然后根据此数值修改“default=”的值。若启动CentOS (4.14.0-1.el6.elrepo.x86_64)则设置为0,设置为1则启动CentOS (2.6.32-696.13.2.el6.x86_64)。修改完成保存后,重新启动主机,就会发现内核已经变成自己想要的内核了。
总体来说,CentOS/RHEL更换内核并不复杂,采用elrepo第三方软件源,一切就都简单了