CentOS 7.6 ARM版本内核升级指导

举报
指示灯 发表于 2020/12/08 12:47:17 2020/12/08
【摘要】 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。如需使用Exagear在鲲鹏上运行x86程序,需要对内核升级

内核升级背景:

Centos 7.6默认内核版本4.18.0-80.7.2.el7.aarch64PAGESIZE64K,现在需调整为4K,通过升级内核到4.18.1,修改参数CONFIG_ARM64_PAGE_SHIFT16调整到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=yCONFIG_ARM64_VA_BITS=39修改成CONFIG_ARM64_VA_BITS_48=yCONFIG_ARM64_VA_BITS=48。修改完成后,重新编译,并按上面的流程重新执行。

方案2:编译完成后,如出现上述错误,可将Exagear的执行文件进行替换。(此文件是CONFIG_ARM64_VA_BITS_39=yCONFIG_ARM64_VA_BITS=39下的可运行文件)

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。