CentOS 7.6 ARM版本内核升级指导
内核升级背景:
Centos 7.6默认内核版本4.18.0-80.7.2.el7.aarch64的PAGESIZE是64K,现在需调整为4K,通过升级内核到4.18.1,修改参数CONFIG_ARM64_PAGE_SHIFT从16调整到12,实现PAGESIZE调整为4K。
升级步骤如下:
- 安装依赖
yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel
- 下载内核版本解压并进入解压目录
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.1.tar.gz
tar -zxvf linux-4.18.1.tar.gz
cd linux-4.18.1
- 清理内核源目录
make mrproper
- 使用make menuconfig菜单来修改内核参数
make menuconfig
备注:如果在执行此命令时提示有/bin/bash:flex command not found的错误,请先安装完成红色部分的组件。
选择“Kernel Features”->“Page szie”调整为4K
- 完成上一步之后,会在目录下生成.config文件
- 注释.config文件中的参数CONFIG_SYSTEM_TRUSTED_KEYS
vim .config
在CONFIG_SYSTEM_TRUSTED_KEYS参数前面添加#,将参数这行注释掉
- 修改.config文件中的参数CONFIG_ARM64_VA_BITS。
vim .config
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VA_BITS=48
- 编译内核
make -j8
编译完成之后,运行如下命令
make modules_install
make install
- 生成系统启动引导配置参数
grub2-mkconfig -o /boot/grub2/grub.cfg
- 修改默认内核启动项
运行如下命令查看系统可用内核
cat /boot/grub2/grub.cfg | grep menuentry
运行如下命令修改开机默认使用内核
grub2-set-default 'CentOS Linux (4.18.1) 7 (AltArch)'
- 重启验证
reboot
uname -r
getconf PAGESIZE
问题与解决方案:
问题:由于云上CentOS7.6内核版本由4.14切换到4.18,编译时.config文件里CONFIG_ARM64_VA_BITS这个参数默认值和Exagear本身的参数设置存在冲突,虚拟空间地址发生了变化,进而导致Exagear安装完成后,无法正常申请内存,运行报错。
解决方案:此问题有两种解决方案。
方案1:内核编译之前,修改CONFIG_ARM64_VA_BITS参数。将原有的CONFIG_ARM64_VA_BITS_39=y、CONFIG_ARM64_VA_BITS=39修改成CONFIG_ARM64_VA_BITS_48=y、CONFIG_ARM64_VA_BITS=48。修改完成后,重新编译,并按上面的流程重新执行。
方案2:编译完成后,如出现上述错误,可将Exagear的执行文件进行替换。(此文件是CONFIG_ARM64_VA_BITS_39=y、CONFIG_ARM64_VA_BITS=39下的可运行文件)
- 点赞
- 收藏
- 关注作者
评论(0)