---
title: 编译准备
description: "Kbox云手机容器支持在openEuler 22.03 LTS SP4（对应内核版本5.10.0-216.0.0）操作系统下进行内核源码的编译。在编译开始前，请正确配置服务器的网络环境、软件源、同步服务器系统时间，以便下载相关的编译依赖包。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/armnative/kunpengcpskbox_20_0143.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/armnative/kunpengcpskbox_20_0143.html
indexId: ca3ab2c6815c0ef546ee14345ab99bb09405249169529db85509b68f681b18ab78
---
# 编译准备

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

- 手动编译内核章节中涉及的内核配置与修改仅做为功能性参考，不建议使用鲲鹏BoostKit云手机参考方案作为商用方案。若选择使用鲲鹏BoostKit云手机参考方案需自行承担安全风险，客户或ISV在商用前请进行必要的安全评估。
- openEuler操作系统的安装请参考openEuler官方网站的文档：《  openEuler 22.03 LTS SP4 安装指导(https://docs.openeuler.org/zh/docs/22.03_LTS_SP4/server/installation_upgrade/installation/installation_guide.html)
》


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

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

  a. 查看现有配置。
    1 cat /etc/default/grub | grep "cgroup_enable=memory swapaccount=1"

  b. 当以上指令回显为空时，执行下述命令配置内核启动项。
    1 sed -i '/GRUB_CMDLINE_LINUX/s/\"$//' /etc/default/grub; sed -i '/GRUB_CMDLINE_LINUX/s/$/ cgroup_enable=memory swapaccount=1\"/' /etc/default/grub

  c. 查看修改结果。
    1 cat /etc/default/grub | grep "GRUB_CMDLINE_LINUX"

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

    1 GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

  d. 更新grub配置文件。
    1 grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

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


2. 禁用SELinux。

  a. 配置SELinux。
    1 sed -i "s|^SELINUX=.*|SELINUX=disabled|g" /etc/selinux/config

  b. 查看修改结果
    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的上限。

  a. 查看现有配置。
    1 cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances=8192"

  b. 当以上指令回显为空时，执行下述命令配置inotify instances的上限。
    1 echo "fs.inotify.max_user_instances=8192" >> /etc/sysctl.conf

  c. 查看修改结果。
    1 cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances"

    确认回显如下。

    1 fs.inotify.max_user_instances=8192

  d. 使修改生效。
    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 dwarves

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

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/
