编译准备

本文是在默认操作系统openEuler 22.03 LTS(内核版本5.10.0)下进行编译内核源码编译。

openEuler操作系统的安装请参考openEuler官方网站:openEuler 22.03 LTS 安装指导

在编译开始前,请正确配置服务器的网络环境、软件源、同步服务器系统时间,以便下载相关的编译依赖包。

解压Kbox-AOSP11.zip压缩包后,在“Kbox-AOSP11/deploy_scripts/openEuler_android11_deploy”目录下有一键式内核安装脚本:kbox11_install_kernel.sh,该脚本包含了编译内核的全部操作步骤,可通过执行该脚本快速地编译和安装内核。

脚本的具体使用方法请参见脚本开头处的注释说明内容。

编译时请使用root账号登录和操作。

  1. 禁用警告“your kernel does not support swap memory limit...”

    1. 打开“/etc/default/grub”文件。
      vim /etc/default/grub
    2. “i”进入编辑模式,在文件中修改参数“GRUB_CMDLINE_LINUX”的值为如下。
      1
      GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。

    如果文件中“GRUB_CMDLINE_LINUX”已有参数,请在末尾追加上述设置值。

  2. 禁用SELinux。

    1. 打开“/etc/selinux/config”文件,若没有该文件就创建后再进行编辑。
      vim /etc/selinux/config
    2. “i”进入编辑模式,在文件中修改参数“SELINUX”的值为“disabled”。
      1
      SELINUX=disabled
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  3. 启动多路Kbox容器时,主机侧文件访问量大,需调整用户可创建的inotify instances的上限。

    1. 打开“/etc/sysctl.conf”文件。
      vim /etc/sysctl.conf
    2. “i”进入编辑模式,在文件末尾添加“fs.inotify.max_user_instances”参数的值。
      1
      fs.inotify.max_user_instances=8192
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  4. 更新引导项。

    grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

  5. 安装基础依赖包。

    yum install -y make dpkg dpkg-devel openssl openssl-devel ncurses ncurses-devel bison flex bc libdrm build elfutils-libelf-devel patch make gcc

    如果安装过程中有获取包失败的情况,请根据提示中的网址,手动获取安装包进行安装,安装成功后,继续安装尚未安装的依赖包。

  6. 安装Docker组件与lxcfs,如已自定义安装Docker与lxcfs,可跳过此步骤。

    使用如下命令安装Docker与lxcfs,并启动lxcfs服务,设置lxcfs为开机自启动。

    yum install -y docker lxc lxcfs lxcfs-tools 
    systemctl start lxcfs && systemctl enable lxcfs

    如遇到lxcfs启动报错,请尝试重启服务,或者联系技术支持工程师协助解决。

  7. 更新linux-firmware。若用户已升级过固件,可跳过此步骤。

    请参见软件环境中的下载链接,下载linux-firmware-20210919.tar.gz文件。

    将下载后的安装包上传至服务器,以“/root”路径为例,并解压。
    cd ~ && tar -xvpf linux-firmware-20210919.tar.gz
    解压后,“root”路径下会多出一个“linux-firmware-20210919”文件夹,将firmware拷贝Linux标准固件目录下。
    cp -ar linux-firmware-20210919/*gpu /usr/lib/firmware/

  8. 重启系统,使上述配置生效。

    reboot

    该步骤可以暂缓执行,待完成章节编译及安装内核后一并重启生效。