1. 程式人生 > >linux 實現centos7在線升級最新版本內核

linux 實現centos7在線升級最新版本內核

init進程 config 安裝 希望 repo lis 開機 計算 grub

Kernel (內核)是操作系統的核心,掌握所有硬件設備的控制權,也就是說,你所希望計算機幫你完成的各項工作,都需要通過內核的幫助才能完成,當然,如果我們想完成的某個功能是內核沒有的,則內核不會操控計算機來幫你完成這項工作,如果我們想讓內核去完成這個功能,那麽我們就必須將該功能的模塊添加到內核當中,這就類似於驅動程序,有了這樣一個“驅動程序”的支持後,我們的硬件才能完成之前所不能完成的功能。

那麽內核到底是什麽呢?其實內核就是系統上面的一個文件而已,這個文件包含了驅動主機各項硬件的檢測程序和驅動模塊,在系統啟動過程中,我們知道,系統讀完BIOS並加載MBR中的Boot Loader之後,就能夠加載內核到內存當中了,然後就去開始檢測硬件設備,掛載根目錄來獲取內核模塊來驅動所有的硬件設備,之後就開始讓/sbin/init進程來完成系統的啟動,同時講到了內核文件就是在/boot 目錄下的一個以vmlinuz 開頭的文件,有時候我們會發現,/boot目錄下有好幾個以vmlinuz 開頭的文件,也就是說主機可以有多個內核,但是啟動後,只能選擇一個來加載,所以說linux系統是單內核,模塊化體系。

模塊化可以這樣理解,一個程序可以完成很多功能,那麽每個獨立的功能就可以稱之為模塊,這些獨立的功能模塊組合起來就可以完成一系列大的功能,內核也是一樣。

當我們需要實現的功能內核不能提供時,這時我們就需要對內核進行更新升級,來實現滿足我們要有功能需要,下面我就演示一下在centos7中升級最新版本內核步驟:

使用 uname -sr 查看自己內核版本號:

1 [[email protected] ~]# uname -sr
2 Linux 3.10.0-862.el7.x86_64

然後我們在瀏覽器中輸入 www.kernel.org,查看centos,最新內核版本為:4.18

一:、安裝elrepo的yum源
elrepo是CentOS十分有用的穩定的軟件源,這是一個第三方倉庫,可以將內核升級到最新版本。我們可以在命令行中輸入:

首先導入public key:

1 [[email protected] ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2 [[email protected] ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3 Retrieving http://
www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm 4 Retrieving http://elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 5 Preparing... ################################# [100%] 6 Updating / installing... 7 1:elrepo-release-7.0-3.el7.elrepo ################################# [100%]

倉庫啟用後,我們可以使用下面的命令列出可用的內核相關包:

 1 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
 2 
 3 Loaded plugins: fastestmirror, langpacks
 4 Repository QJC is missing name in configuration, using id
 5 Loading mirror speeds from cached hostfile
 6 * elrepo-kernel: hkg.mirror.rackspace.com
 7 elrepo-kernel | 2.9 kB 00:00:00 
 8 elrepo-kernel/primary_db | 1.8 MB 00:00:00 
 9 Available Packages
10 kernel-lt.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
11 kernel-lt-devel.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
12 kernel-lt-doc.noarch 4.4.152-1.el7.elrepo elrepo-kernel
13 kernel-lt-headers.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
14 kernel-lt-tools.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
15 kernel-lt-tools-libs.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
16 kernel-lt-tools-libs-devel.x86_64 4.4.152-1.el7.elrepo elrepo-kernel
17 kernel-ml.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
18 kernel-ml-devel.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
19 kernel-ml-doc.noarch 4.18.5-1.el7.elrepo elrepo-kernel
20 kernel-ml-headers.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
21 kernel-ml-tools.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
22 kernel-ml-tools-libs.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
23 kernel-ml-tools-libs-devel.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
24 perf.x86_64 4.18.5-1.el7.elrepo elrepo-kernel
25 python-perf.x86_64 4.18.5-1.el7.elrepo elrepo-kernel

二:升級內核
在yum的elrepo源中有ml和lt兩種內核,其中ml(mainline)為最新版本的內核,lt為長期支持的內核。

如果要安裝ml內核,使用如下命令:

yum --enablerepo=elrepo-kernel -y install kernel-ml

如果要安裝lt內核,使用如下命令:

yum --enablerepo=elrepo-kernel -y install kernel-lt

在此我們安裝的是ml內核,如下:

 1 yum --enablerepo=elrepo-kernel install kernel-ml
 2 Loaded plugins: fastestmirror, langpacks
 3 Repository QJC is missing name in configuration, using id
 4 Loading mirror speeds from cached hostfile
 5 * elrepo: hkg.mirror.rackspace.com
 6 * elrepo-kernel: hkg.mirror.rackspace.com
 7 file:///media/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn‘t open file /media/repodata/repomd.xml"
 8 Trying other mirror.
 9 elrepo | 2.9 kB 00:00:00 
10 elrepo/primary_db | 469 kB 00:00:00 
11 Resolving Dependencies
12 --> Running transaction check
13 ---> Package kernel-ml.x86_64 0:4.18.5-1.el7.elrepo will be installed
14 --> Finished Dependency Resolution
15 
16 Dependencies Resolved
17 
18 =====================================================================================
19 Package Arch Version Repository Size
20 =====================================================================================
21 Installing:
22 kernel-ml x86_64 4.18.5-1.el7.elrepo elrepo-kernel 45 M
23 
24 Transaction Summary
25 =====================================================================================
26 Install 1 Package
27 
28 Total download size: 45 M
29 Installed size: 203 M
30 Is this ok [y/d/N]: y
31 Downloading packages:
32 kernel-ml-4.18.5-1.el7.elrepo.x86_64.rpm | 45 MB 00:00:04 
33 Running transaction check
34 Running transaction test
35 Transaction test succeeded
36 Running transaction
37 Warning: RPMDB altered outside of yum.
38 Installing : kernel-ml-4.18.5-1.el7.elrepo.x86_64 1/1 
39 Verifying : kernel-ml-4.18.5-1.el7.elrepo.x86_64 1/1 
40 
41 Installed:
42 kernel-ml.x86_64 0:4.18.5-1.el7.elrepo 
43 
44 Complete!

內核升級完畢後,不會立即生效,還需要我們修改grub.conf文件。

三:修改grub.conf文件
內核升級完畢後,需要我們修改內核的啟動順序,默認啟動的順序應該為1,升級以後內核是往前面插入為0,打開並編輯 /etc/default/grub並設置GRUB_DEFAULT=0。一般新安裝的內核在第一個位置,所以設置default=0,意思是 GRUB 初始化頁面的第一個內核將作為默認內核。

接下來運行下面的命令來重新創建內核配置。

 1 grub2-mkconfig -o /boot/grub2/grub.cfg 
 2 Generating grub configuration file ...
 3 Found linux image: /boot/vmlinuz-4.18.5-1.el7.elrepo.x86_64
 4 Found initrd image: /boot/initramfs-4.18.5-1.el7.elrepo.x86_64.img
 5 Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
 6 Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
 7 Found linux image: /boot/vmlinuz-0-rescue-619aa3de60a746919cbffe30b3f3329b
 8 Found initrd image: /boot/initramfs-0-rescue-619aa3de60a746919cbffe30b3f3329b.img
 9 done
10 [[email protected] ~]# 


然後reboot系統

再次查看內核版本號:

[[email protected] ~]# uname -sr
Linux 4.18.5-1.el7.elrepo.x86_64
[[email protected] ~]# 

內核升級完成!

當我們想開機手動選擇內核版本時候,將上一步的0改為1,1 是手動選擇在開機時候按方上下方向鍵 界面會停留在選擇內核的界面如圖所示:

完畢!

linux 實現centos7在線升級最新版本內核