yum方式升级内核
查看当前内核版本
uname -r
3.10.0-957.el7.x86_64
导入仓库源
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
查看可以升级的版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装稳定版本
yum --enablerepo=elrepo-kernel install kernel-ml -y
- kernel-ml 稳定版本
- kernel-lt 最新版本
设置内核启动顺序
查看grub
$ egrep ^menuentry /boot/grub2/grub.cfg | cut -f 2 -d \'
CentOS Linux (5.19.1-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (5.19.1-1.el7.elrepo.x86_64) 7 (Core) with debugging
CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64
CentOS Linux 7 (Core), with Linux 0-rescue-ab3296544be34fd4a74420112c3aac69
传统启动方式配置
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
grubby --default-kernel
UEFI启动方式
egrep ^menuentry /etc/grub2-efi.cfg | cut -f 2 -d \'
grub2-set-default 0
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
查找清除旧内核
rpm -qa | grep kernel
yum remove x.x.x
下载rpm升级内核
因elrepo源都是最新版本,4.19找不到了。 kernel rpm 历史归档版本
# wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm
# wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-4.19.12-1.el7.elrepo.x86_64.rpm
wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
grubby --default-kernel
reboot
编译内核
yum groupinstall -y "Development Tools"
yum install -y ncurses-devel qt-devel
下载解压内核
cd /usr/src
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.12.tar.xz
tar xf linux-4.19.12.tar.xz
cd linux-4.19.12
vim Makefile
594 ifeq ($(dot-config),1)
595 -include include/config/auto.conf
596 endif
生成编译配置
kernel 在编译时需要一个配置文件(.config),用于描述开启哪些特性等,该文件一般可通过一下四种途径获得:
- 使用 make menuconfig 命令开启交互模式,然后根据提示生成编译配置表
- 复制当前系统编译配置表,即 cp /boot/config-xxx .config;如果系统有多个内核,那么根据版本号选择最新的即可
- 使用 make defconfig 命令获取当前系统编译配置表,该命令会自动写入到 .config 中
- 使用 make oldconfig 命令根据旧的编译配置表生成新的编译配置表,并在以前没有设定过的配置时会自动开启交互模式
cp /boot/config-3.10.0-957.1.3.el7.x86_64 .config
make -j 48
## 安装内核模块
make modules_install
## 安装内核
make install
安装完内核之后,会在/boot/路径下生成一个内核文件vmlinuz-4.19.12和其他几个文件。
设置启动项
这里是UEFI引导
egrep ^menuentry /etc/grub2-efi.cfg | cut -f 2 -d \'
grub2-set-default 0
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
make mrproper && make clean
卸载编译的内核
rm -rf /lib/modules/4.19.12
rm -rf /boot/initramfs-4.19.12.img
rm -rf /boot/vmlinuz-4.19.12
rm -rf /boot/System.map-4.19.12
异常解决
R730XD 显示异常 R730XD 使用UEFI启动方式安装CenntOS 7。yum 升级4.x内核,启动卡在 pstore: No deflate compression,显示器无法正常显示画面,但可以ssh连接。
[ 3.489762] fb: switching to mgag200drmfb from simple
[ 3.489787] Console: switching to colour dummy device 80x25
[ 3.490140] [drm:mgag200_driver_load [mgag200]] *ERROR* can't reserve VRAM
[ 3.490145] mgag200 0000:0b:00.0: Fatal error during GPU init: -6
添加 “mgag200.modeset=0” 到内核启动参数/etc/default/grub 生成grub配置 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg https://elrepo.org/bugs/view.php?id=668
GRUB_CMDLINE_LINUX="crashkernel=512M rd.md.uuid=8c4d9234:625591a0:e08b42e3:8b268148 rd.md.uuid=663bfa47:46d6759b:dc98c056:74407409 quiet elevator=noop numa=off mgag200.modeset=0"
curl不兼容
报错: curl :(35)Peer reports incompatible or unsupported protocol version
原因:curl 不兼容或不支持的协议版本
解决:yum update -y nss curl libcurl