编译准备
Kbox云手机容器支持在openEuler 24.03 LTS SP1(对应内核版本6.6.0-72.0.0)操作系统下进行内核源码的编译。在编译开始前,请正确配置服务器的网络环境、软件源、并同步服务器系统时间,以便下载相关的编译依赖包。
编译时请使用root账号登录和操作。
- 禁用警告“your kernel does not support swap memory limit...”,并生效cgroup v2。修改“/etc/default/grub”文件,在“GRUB_CMDLINE_LINUX”配置项的末尾添加参数“cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=1”。
- 查看现有配置。
1cat /etc/default/grub | grep "cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=1"
- 当以上指令回显为空时,执行下述命令配置内核启动项。
1sed -i '/GRUB_CMDLINE_LINUX/s/\"$//' /etc/default/grub; sed -i '/GRUB_CMDLINE_LINUX/s/$/ cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=1\"/' /etc/default/grub
- 查看修改结果。
1cat /etc/default/grub | grep "GRUB_CMDLINE_LINUX"
示例回显如下,若启动参数中存在其他固有参数为正常现象。
1GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=1"
- 更新grub配置文件。
1grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
- 查看现有配置。
- 禁用SELinux。
- 配置SELinux。
1sed -i "s|^SELINUX=.*|SELINUX=disabled|g" /etc/selinux/config
- 查看修改结果。
1cat /etc/selinux/config | grep "^SELINUX="
确认指令回显如下。
1SELINUX=disabled
- 若“/etc/selinux/config”文件不存在,则执行以下指令创建文件并写入SELinux规则。
1echo "SELINUX=disabled" > /etc/selinux/config
- 该配置在系统重启后生效。重启步骤可以暂缓执行,待完成章节编译并安装Kernel后一并进行重启操作。
- 配置SELinux。
- 启动多路Kbox容器时,主机侧文件访问量大,需调整用户可创建的inotify instances的上限。
- 查看现有配置。
1cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances=8192"
- 当以上指令回显为空时,执行下述命令配置inotify instances的上限。
1echo "fs.inotify.max_user_instances=8192" >> /etc/sysctl.conf
- 查看修改结果。
1cat /etc/sysctl.conf | grep "fs.inotify.max_user_instances"
确认回显如下。
1fs.inotify.max_user_instances=8192
- 使修改生效。
1sysctl -p
- 查看现有配置。
- 安装基础依赖包。
1yum install -y make dpkg dpkg-devel openssl openssl-devel ncurses ncurses-devel bison flex bc libdrm build elfutils-libelf-devel patch gcc
如果安装过程中有获取包失败的情况,请根据提示中的网址,手动获取安装包进行安装,安装成功后,继续安装尚未安装的依赖包。
- 安装Docker组件与lxcfs,并启动lxcfs服务,设置lxcfs为开机自启动。如已自定义安装Docker与lxcfs,可跳过此步骤。
1 2
yum install -y docker lxc lxcfs lxcfs-tools systemctl start lxcfs && systemctl enable lxcfs
如遇到lxcfs启动报错,请尝试重启服务,或者联系华为技术支持工程师协助解决。
- Docker升级到24.0.0版本。若yum安装的Docker版本低于24.0.0版本,则需要升级版本。
请参见软件环境中的下载链接,下载docker-24.0.0.tgz文件。在任意目录下,解压,并将二进制包中的文件拷贝到“/usr/bin”下。
1 2 3
tar -xvf docker-24.0.0.tgz cp docker/* /usr/bin systemctl restart docker
- (可选)(硬件配置方案二、三)容器密度较大时,由于需要处理loop设备,宿主机上的udev-worker进程可能有周期性CPU占用冲高现象,可通过以下命令禁用udev功能以规避。
1 2 3
sudo systemctl disable systemd-udevd.service sudo systemctl disable systemd-udevd-control.socket sudo systemctl disable systemd-udevd-kernel.socket
父主题: 编译内核