CentOS7 更換內核
[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 更換內核