1. 程式人生 > >Centos7 核心編譯升級到指定的版本

Centos7 核心編譯升級到指定的版本

#如何編譯和安裝Linux Kernel 到指定的版本
#從原始碼構建(編譯)和安裝最新Linux核心的過程如下:

#1.從kernel.org獲取最新核心
#2.驗證核心
#3.Untar核心tarball
#4.複製現有的Linux核心配置檔案
#5.編譯並構建Linux核心4.19.6
#6.安裝Linux核心和模組(驅動程式)
#7. 更新Grub配置
#8.重啟系統

開啟https://www.kernel.org
檢視你想安裝的核心版本. 如果是產品部署建議用longterm版本.

在這裡插入圖片描述

前提條件: 已經安裝好Linux 作業系統,我安裝的是Redhat Centos7 1810 版本的,最小化安裝.

自動執行的升級指令碼如下:

#!/bin/bash
version=“4.14.89”
#編譯升級Linux核心
#使用代理速度會快一點,如果你在中國境內,因為編譯安裝需要先把環境部署好,需要用到國外的RPM源安裝,可以設定阿里的yum 源頭,或設定專門的代理.

#CentOS 6
#wget -O /etc/yum.repos.d/CentOS-Base.repo #http://mirrors.aliyun.com/repo/Centos-6.repo

#CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者設定自己的代理
Yum 代理設定 請檢視文章 https://blog.csdn.net/happyfreeangel/article/details/84998968

Yum 代理設定
在/etc/yum.conf後面新增以下內容:

如果代理不需要使用者名稱密碼認證:
proxy=http://代理伺服器IP地址:埠號
如果需要認證
proxy=http://代理伺服器IP地址:埠號
proxy_username=代理伺服器使用者名稱
設定wget,curl 代理,這個可以省略,之所以這樣設定是因為我們內部有一臺代理可以直達國外,可以提高下載速度,節省大量的時間. 如果你沒有,那就需要等一會兒了。
export http_proxy=http://10.20.1.1:8118
export https_proxy=https://10.20.1.1:8118

#先安裝基本工具,這些是編譯核心之前的準備工作
sudo yum install -y epel-release
sudo yum group install -y “Development Tools”
sudo yum install -y bc wget xz ncurses-devel bison flex elfutils-libelf-devel openssl-devel

export kernelfile=linux-${version}.tar.xz

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${version}.tar.xz #longterm kernel 4.14.89

xz -d -v ${kernelfile}

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${version}.tar.sign

result= ( g p g v e r i f y l i n u x (gpg --verify linux- {version}.tar.sign | grep ‘using RSA key’)
recv_keys=""
for word in r e s u l t d o r e c v k e y s = result do recv_keys= word #最後一個才是我們要的
done

echo $recv_keys
gpg --recv-keys r e c v k e y s g p g v e r i f y l i n u x recv_keys gpg --verify linux- {version}.tar.sign

tar xvf linux-${version}.tar

cd linux- v e r s i o n c p v / b o o t / c o n f i g {version} cp -v /boot/config- (uname -r) .config

#下面的make menuconfig 需要手動 干預, 我是選擇預設,直接儲存退出,什麼都沒改。就是為了生成一個標準的.config 檔案。

make menuconfig #這裡要特別注意,進去後退出必須儲存為.config 否則下面的執行每個都要確認.
#make xconfig # X windows (Qt) based configuration tool, works best under KDE desktop
#make gconfig #X windows (Gtk) based configuration tool, works best under Gnome Dekstop.

echo 開始編譯核心linux-${version} > 1.log
date>>1.log

#使用多個執行緒編譯,每個cpu 一個執行緒. 如果你是單個cpu,可以設定 make -j 2

make -j $(nproc)

sudo make modules_install

sudo make install

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grubby --set-default /boot/vmlinuz-${version}

sudo reboot
date >> 1.log
echo 核心linux-${version}編譯安裝完成 >>1.log
date>>1.log
#重新啟動之後
uname -mrs

如果舊的核心不想要了,可以執行:
yum remove kernel -y