编译准备

Kbox云手机容器支持在openEuler 22.03 LTS SP1/SP3(对应内核版本5.10.0-136.12.0/5.10.0-182.0.0)操作系统下进行内核源码的编译。在编译开始前,请正确配置服务器的网络环境、软件源、同步服务器系统时间,以便下载相关的编译依赖包。

手动编译内核的主要操作以5.10.0-136.12.0内核版本为例;如您使用的是5.10.0-182.0.0版本的内核,请根据提示对操作指令进行相应的修改。

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

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

  1. 禁用警告“your kernel does not support swap memory limit...”,修改/etc/default/grub文件,在“GRUB_CMDLINE_LINUX”配置项的末尾添加参数“cgroup_enable=memory swapaccount=1”

    1. 查看现有配置。
      1
      cat /etc/default/grub | grep "cgroup_enable=memory swapaccount=1"
      
    2. 当以上指令回显为空时,执行下述命令配置内核启动项。
      1
      sed -i '/GRUB_CMDLINE_LINUX/s/\"$//' /etc/default/grub; sed -i '/GRUB_CMDLINE_LINUX/s/$/ cgroup_enable=memory swapaccount=1\"/' /etc/default/grub
      
    3. 查看修改结果。
      1
      cat /etc/default/grub | grep "GRUB_CMDLINE_LINUX"
      

      示例回显如下,若启动参数中存在其他固有参数为正常现象。

      1
      GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
      
    4. 更新grub配置文件。
      1
      grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
      

    该配置在系统重启后生效。重启步骤可以暂缓执行,待完成章节编译并安装Kernel后一并进行重启操作。

  2. 禁用SELinux。

    1. 配置SELinux。
      1
      sed -i "s|^SELINUX=.*|SELINUX=disabled|g" /etc/selinux/config
      
    2. 查看修改结果
      1
      cat /etc/selinux/config | grep "^SELINUX="
      

      确认指令回显如下

      1
      SELINUX=disabled
      
    • “/etc/selinux/config”文件不存在,则执行以下指令创建文件并写入SELinux规则。
      1
      echo "SELINUX=disabled" > /etc/selinux/config
      
    • 该配置在系统重启后生效。重启步骤可以暂缓执行,待完成章节编译并安装Kernel后一并进行重启操作。

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

    1. 查看现有配置。
      1
      cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances=8192"
      
    2. 当以上指令回显为空时,执行下述命令配置inotify instances的上限。
      1
      echo "fs.inotify.max_user_instances=8192" >> /etc/sysctl.conf
      
    3. 查看修改结果。
      1
      cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances"
      

      确认回显如下。

      1
      fs.inotify.max_user_instances=8192
      
    4. 使修改生效
      1
      sysctl -p
      

  4. 安装基础依赖包。

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

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

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

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

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

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

  6. (硬件配置方案一)使用硬件配置方案一时需要更新linux-firmware。若用户已升级过固件,可跳过此步骤。

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

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