Linux內核升級教程

萱蘇的運維日常 2024-03-31 11:53:38

日常工作中有時會遇到系統版本過舊,無法滿足安全掃描後的安全要求,或者在安裝一些應用時對內核版本有特定的要求,比如wireguard,這時,我們就需要升級OS或Linux內核版本;

Linux 內核版本分爲主線(mailine)、穩定版(stable )和長期版本(longterm或LTS)。所有內核版本都可以在內核開發官方網站上獲取。其中,rc版本爲候選版(RC),開發版本可供公衆測試

官網:The Linux Kernel Archives

內核升級通常存在兩種方法:ELRepo升級和編譯升級。建議使用ELRepo進行升級。在本文中會對這兩種方式都進行說明。

ELRepo更新升級小版本

小版本的升級直接使用命令yum update -y進行正常升級即可,就不進行詳細說明。

升級大版本

1. 獲取源

#獲取對應的yum源yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm#或者使用如下方法rpm-ivh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm#導入公鑰rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org

若因爲網絡問題無法直接通過命令安裝的話,則可以wget到本地,然後再進行。若還是因爲網絡問題無法下載或者下載慢,則可以訪問以下連接進行下載,然後上傳到對應的服務器上。若連接失效請評論或私聊找我獲取。

鏈接:https://pan.baidu.com/s/1bbj-HdginzTJLF5Yd-4A0Q 提取碼:ut1e --來自百度網盤超級會員V6的分享

2. 安裝對應的版本

#查看可進行安裝的版本[root@iZm5ebzoh3qa8egessx458Z~]#yum--disablerepo="*"--enablerepo="elrepo-kernel"list available#安裝lt版本[root@iZm5ebzoh3qa8egessx458Z~]#yum--disablerepo="*"--enablerepo="elrepo-kernel"install kernel-lt-y

3.  驗證安裝

[root@iZm5ebzoh3qa8egessx458Z~]#awk-F\''$1=="menuentry " {print i++ ":" $2}'/etc/grub2.cfg[root@iZm5ebzoh3qa8egessx458Z~]#cat/boot/grub2/grub.cfg|grep menuentry

前面的序號內核版本在系統內的代表。可以看到新的版本已經存在了

4. 設置從新內核啓動

#方法一#參數來源于cat/boot/grub2/grub.cfg |grep menuentry 執行結果[root@iZm5ebzoh3qa8egessx458Z~]#grub2-set-default"CentOS Linux (5.4.273-1.el7.elrepo.x86_64) 7 (Core)"#方法二#往/etc/default/grub 增加 GRUB_DEFAULT=0vim/etc/default/grub#編輯/etc/grub2.cfg,修改setdefault = 0vim/etc/grub2.cfg#生成grub啓動文件grub2-mkconfig-o/boot/grub2/grub.cfg#檢查是否修改grub2-editenv list

5. 重啓驗證

可以看到現在內核已經從3.10升級到5.4了。

編譯安裝

yum更新到5.4版本,使用編譯更新至ml-6.8版本

1. 獲取包

[root@iZm5ebzoh3qa8egessx458Z ~]# wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.6.23.tar.xz

若還因爲網絡問題無法下載或者下載慢,則可以訪問以下連接進行下載,然後上傳到對應的服務器上。若連接失效請評論或私聊找我獲取。

官網:ELRepo

鏈接:https://pan.baidu.com/s/1WwkdR6Bi4RirrOtyskT4zA 提取碼:pph8 --來自百度網盤超級會員V6的分享

2. 編譯安裝

#安裝對應依賴[root@iZm5ebzoh3qa8egessx458Z~]#yum install-y gcc make git ctags ncurses-devel openssl-devel bison flex elfutils-libelf-devel bc#解壓[root@iZm5ebzoh3qa8egessx458Z~]#tar-xvf linux-6.6.23tar.xz#進入目錄 複制原來的使用原來的配置文件[root@iZm5ebzoh3qa8egessx458Z~]#cp/boot/config-$(uname-r)linux-6.6.23/.config[root@iZm5ebzoh3qa8egessx458Z~]#cd linux-6.6.23#配置內核,使用config配置文件make olddefconfig#編譯內核make-j $(nproc)#安裝內核模塊make modules_instalmake install

配置內核命令說明:

• make defconfig 將創建一個基本的、針對目標架構優化過的默認配置。

• make olddefconfig 會基于當前目錄下的 .config 文件填充缺失的配置項,並保持已有的配置不變。

• make menuconfig 或 make xconfig(如果系統支持圖形界面)進行交互式的配置。如果需要個性化配置,可以使用

• make config 需要一行一行確認配置,不建議使用。

3. 設置從內核啓動

方法與之前一致,就不進行描述

4.  重啓驗證是否成功

異常

在執行make olddefconfig時會出現如下異常,改異常表示當前gcc版本太低,只需臨時使用高版本gcc即可。

#添加SCL倉庫yum install centos-release-scl-rh-y#安裝GCC組件yum install devtoolset-7-gcc devtoolset-7-gcc-c++devtoolset-7-gcc-gfortran-y#在當前終端開啓對應shell環境scl enable devtoolset-7bash

重啓或關閉shell後該配置將失效

問題反饋

若對文中有任何的疑問,或者需要幫助可以通過以下方式進行反饋

• 直接進行評論或者單獨私聊

• 發送郵件到:mr_xuansu@163.com

更多內容請關注微信公衆號:萱蘇的運維日常

0 阅读:4