1. 程式人生 > >CentOS7 更換內核

CentOS7 更換內核

內核 bbr

#使用cat /boot/grub2/grub.cfg |grep menuentry 查看系統可用內核

[root@bigapp-slave27 ~]# cat /boot/grub2/grub.cfg |grep menuentry

if [ x"${feature_menuentry_id}" = xy ]; then

menuentry_id_option="--id"

menuentry_id_option=""

export menuentry_id_option

menuentry 'CentOS Linux (3.10.0-514.16.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-6f5840d0-55ac-4d3b-899b-61c0297c5347' {

menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-6f5840d0-55ac-4d3b-899b-61c0297c5347' {

menuentry 'CentOS Linux (0-rescue-d57307c454c0437d91c309347178cdf5) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-d57307c454c0437d91c309347178cdf5-advanced-6f5840d0-55ac-4d3b-899b-61c0297c5347' {

#查看當前內核

[root@bigapp-slave27 ~]# uname -r

3.10.0-514.16.1.el7.x86_64

#修改開機時默認使用的內核

grub2-set-default 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)'

#查看內核修改結果

[root@bigapp-slave27 ~]# grub2-editenv list

saved_entry=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)

#查看系統安裝了哪些內核包

[root@bigapp-slave27 ~]# rpm -qa |grep kernel

kernel-3.10.0-327.el7.x86_64

kernel-headers-3.10.0-514.6.1.el7.x86_64

kernel-tools-libs-3.10.0-327.el7.x86_64

kernel-3.10.0-514.16.1.el7.x86_64

kernel-tools-3.10.0-327.el7.x86_64

#使用yum remove 或rpm -e 刪除無用內核

yum remove kernel-3.10.0-327.el7.x86_64


在 CentOS 7 中升級內核

大多數現代發行版提供了一種使用yum 等包管理系統和官方支持的倉庫升級內核的方法。

但是,這只會升級內核到倉庫中可用的最新版本 - 而不是在https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允許使用前者升級內核。

與 Red Hat 不同,CentOS 允許使用 ELRepo,這是一個第三方倉庫,可以將內核升級到最新版本。

要在 CentOS 7 上啟用 ELRepo 倉庫,請運行:


# 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 7 啟用 ELRepo

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


# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available


# 先卸載舊的內核包,主要是這些,保留內核

kernel-debug-devel

kernel-tools-libs

kernel-tools

kernel-headers


保留這個:

kernel

然後執行這個命令就是安裝最新的穩定版本。

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


接下來,安裝最新的主線穩定內核:

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

跟著再安裝kernel-ml-headers kernel-ml-tools kernel-ml-tools-libs


然後

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg


看看內核啟動順序,然後

grub2-set-default 0

把kernel-ml 4.13最新穩定版設為默認,重啟


步驟 3:設置 GRUB 默認的內核版本

為了讓新安裝的內核成為默認啟動選項,你需要如下修改 GRUB 配置:

打開並編輯 /etc/default/grub 並設置 GRUB_DEFAULT=0。意思是 GRUB 初始化頁面的第一個內核將作為默認內核。


GRUB_TIMEOUT=5

GRUB_DEFAULT=0

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="console"

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"

GRUB_DISABLE_RECOVERY="true"


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


# grub2-mkconfig -o /boot/grub2/grub.cfg


重啟並驗證最新的內核已作為默認內核。

# uname -sr


修改sysctl 開啟 BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf

echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf


# 加載 /etc/sysctl.conf 文件中的參數並顯示,主要看看有沒有報錯的設置(顯示的結果與你的配置文件內容有關)

sysctl -p


# 驗證 bbr 是否開啟,如果成功,應該會看到 net.ipv4.tcp_congestion_control = bbr

sysctl net.ipv4.tcp_available_congestion_control

# 依然是驗證,如果成功,應該會看到類似 tcp_bbr 16384 3 這樣的文字

lsmod | grep bbr


CentOS7 更換內核