首页 > 其他分享 >RK3568------Openharmony 4.0-Release Docker移植、部署

RK3568------Openharmony 4.0-Release Docker移植、部署

时间:2024-09-05 15:26:17浏览次数:11  
标签:Openharmony 4.0 鸿蒙 RK3568 内核 cgroup Docker 移植

RK3568------Openharmony 4.0-Release Docker移植、部署

文章目录


前言

Openharmony 也搞了有一段时间了,我感觉大部分朋友都是临时被指派过来,负责把公司现有的产品迁移至Openharmony的操作系统中。在这个过程中可能会有各种各样的制约因素,例如项目工期比较短,公司资源受限或者说现有产品的体量比较大,做迁移耗费的时间比较久。针对以上情况,我个人认为一个很好的解决方案就是将Docker容器移植至Openharmony的操作系统中,所以本篇通过参考网络上其他大神的文章,详细解说如何在Openharmony 4.0-Release Docker移植、部署


一、Docker简述

Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术

它具有以下几个重要特点和优势:

1.1 轻量级虚拟化

Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启动和停止,节省系统资源。
例如,启动一个 Docker 容器可能只需要几秒钟,而启动一个虚拟机则可能需要几分钟。

1.2 一致性

确保应用程序在不同的环境中(如开发、测试、生产)具有一致的运行表现。
无论在本地还是云端,应用的运行环境都能保持相同,减少了因环境差异导致的问题。

1.3 可移植性

可以轻松地将 Docker 容器从一个平台迁移到另一个平台,无需担心依赖和环境配置的差 异。
比如,在本地开发的容器可以无缝部署到云服务器上。

1.4 高效的资源利用

多个 Docker 容器可以共享主机的操作系统内核,从而更有效地利用系统资源。

1.5 易于部署和扩展

能够快速部署新的应用实例,并且可以根据需求轻松地进行水平扩展。

注:以上几点也解释了在前言中提到的为什么采用Docker的方案

二、移植思路

本篇文章的整体移植思路参考以下文章:

  1. Docker官方文档
  2. @鸿蒙小王
  3. @小蜜蜂~嗡嗡嗡~

三、移植实例

按照@鸿蒙小王的文章进行内核检查和SD卡制作文件系统分区即可,不在此复制粘贴浪费篇幅,重点分析移植过程遇到的问题和解决的思路

四、遇到的问题

  1. 内核检测报错

    按照@鸿蒙小王的文章,将Dokcer运行需要的内核配置选项添加到内核配置中,进行检查后发现以上报错,进行如下分析:
    首先检查内核配置项中实际有没有将missing项宏定义打开(=y),在内核配置文件中发现已经全部打开了。接下来就是怀疑相关宏定义可能有依赖项,但是问题是我不知道依赖项是什么,这个时候就要引入一个内核工具“menuconfig”
    这里简单说一下menuconfig,menuconfig是一套图像化配置工具,通过他可以菜单化的查看内核配置项,具体使用他的命令是
apt-get install libncurses-dev -y

make ARCH=arm64 menuconfig

打开后就可以通过menuconfig中命令<?>来查询上述相关宏的依赖与具体配置位置信息

相关信息如下:

通过上述menuconfig查询,可以知道缺少的依赖宏为

CONFIG_NET_SCHED=y
CONFIG_VLAN_8021Q=y
  1. CONFIG_MEMCG_SWAP_ENABLED missinng(本问题由群友提出)
    在上一步操作后会发现,这个宏不在内核配置中,即使手动自己将该宏添加,也无法在内核配置检查中通过,此时我的思路就是查看check-config.sh,看一下这个内核配置检查脚本他检查内核配置的逻辑到底是什么

    通过阅读可以这段脚本,可以发现此选项是对内核版本做了区分,根据打印提示可以判断在执行check-config时的内配版本是5.8以下。那么问题来了,我的Openharmony内核是5.10的版本,但是为什么在做检查的时候,会判断为5.8以下
    我的思路就是深入分析check-config脚本的检查逻辑,查看一下他是如何判断内核版本的,通过查看源码发现了问题

    问题就出现在第37行 uname -r这里,通过这句话可以分析出来,check-config脚本应该是要在宿主机上进行内核检查,而不应该是在虚拟机上进行检查,在最后的宿主机上进行内核配置检查,验证通过

  2. 分区挂载报错

mount -t cgroup -o rdma,nodev,noexec,nosuid cgroup /sys/fs/cgroup/rdma
mount: 'cgroup'->'/sys/fs/cgroup/schedtune': Invalid argument

首先需要了解Docker与cgroup的关系,详细介绍参考@小蜜蜂~嗡嗡嗡~
,然后我们分析报错,问题应该是cgroup组件里没有包含“schedtune”。而“schedtune”工具是在安卓系统中存在的工具,本就不应该出现在Openharmony系统中,因为我们的整体移植思路参考的@鸿蒙小王,我有理由怀疑小王其实是把安卓的一部分东西拿过来了,但是我们有证据,这里我们也不需要纠结,只需要在挂载命令脚本中,将mount -t cgroup -o schedtune,nodev,noexec,nosuid cgroup /sys/fs/cgroup/schedtune删除即可

五、效果展示


总结

本人之前一直从事应用开发,借着这次电鸿的契机进行系统级开发的学习,将我在工作中的遇到的问题及解决思路记录并分享,希望可以与诸君共勉
目前网上技术讨论群大都是鸿蒙的应用开发,总结此类文章也是希望将同样进行鸿蒙设备开发的同僚召集到一起,一起讨论学习。如果有同样在进行鸿蒙设备开发的朋友,可以加我的联系方式,期待您的消息
个人微信

标签:Openharmony,4.0,鸿蒙,RK3568,内核,cgroup,Docker,移植
From: https://blog.csdn.net/weixin_42868855/article/details/141820782

相关文章

  • 2024.08.03米哈游秋招第一场
    1.数组价值米小游有一个长度为n的数组,其中第i个元素为ai。现在定义数组的价值是最大的相邻数字的乘积。例如数组为[3,5,1,2],相邻元素的乘积分别是35=15,51=5和1*2=2,则数组的价值是这些数字中的最大值,即15。现在米小游想要任选数组中的某两个相邻的元素进行交换(你必......
  • 2024.07.30谷歌实习
    1.更衣室一个自动化的储物柜系统被引入更衣室,当客户访问时,系统的工作方式如下:如果客户没有被分配储物柜,系统分配给他们一个具有最小可用编号的储物柜。如果客户已经有分配的储物柜,系统打开并释放储物柜。之后,该储物柜可以重新分配给其他客户。锁柜从1开始编号。一天开始时,所有......
  • uniapp js 数独小游戏 写死的简单数独demo(优化完成) 数独 4.0
    <template> <viewclass="wrap">  <viewclass="timeGame">   <textclass="time">时间{{gameTime}}</text>  </view>  <viewclass="listWrap">   <view    ......
  • 北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+网络设备
    iTOP-3568开发板采用瑞芯微RK3568处理器,22nm工艺制程,集成4核A55架构处理器和MaliG522EE图形处理器,支持4K解码和1080P编码,内置独立的NPU,可用于轻量级人工智能应用。 iTOP-3568开发板连接器版本:  iTOP-3568开发板邮票版本:     关注:北京迅为电子,在线观看 ---......
  • Jmeter 4.0压力测试工具安装及使用方法
    一、Jmeter下载1.网盘(官网下载贼慢):https://pan.xunlei.com/s/VO5ucfHW9SkAXN8Ns-a5oxoQA1?pwd=y4aw#2.选择进行下载,下载下来为一个压缩包,解压即可。3.我下载的是jmeter4.0版本,对应jdk1.8。然后就进行解压。个人认为要注意2点:1)对应的jdk版本不可太低,一般jmeter3.0的对应jdk......
  • 最近(2024.08.14-2024.08.25 )面试感悟
    简历最近(2024.08.14-2024.08.25)除了周末,都在面试的路上,平均每天3、4场面试,边面试边回顾知识点边完善简历,在哀鸿遍野的招聘市场里,简历做了调整,突出自己的优势,比如读过spring源码要能清楚的说出来、比如对jvm内存模型的了解,及为什么采用对应的垃圾回收算法;比如遇到的jvm内存及解决......
  • 2024.07.27科大讯飞(有困难题)
    1.购房之旅小强有n个朋友,每个朋友有一定数量的金币,现在他们要购买房子,一共有m个房子,每个房子有两个参数:舒适度和价格,当一个人的金币大于等于一个房子的价格时,才可以购买房子,且要满足以下条件:1.一个人至多购买一个房子。2.一个房子至多被一个人购买。现在小强想知道n个朋友购买的......
  • 低功耗蓝牙模块在工业4.0中的角色:实现智能工厂的关键
    在当今高速发展的工业自动化时代,无线通信技术的应用越来越广泛,而蓝牙模块作为一种成熟且高效的无线通信手段,正在工业自动化中扮演着越来越重要的角色。本文将详细探讨蓝牙模块在工业自动化中的应用场景、优势以及未来发展前景。蓝牙模块在工业自动化中的应用场景1、设备监控与数据......
  • 瑞芯微-I2S | 音频驱动调试基本命令和工具-基于rk3568-2【转】
    转自:https://www.cnblogs.com/yikoulinux/p/18102243基于Linux嵌入式设备常用调试方法很多,本文一口君把调试语音用到的工具和方法给大家做一个简单的介绍。1.procfs、sysfsLinux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪......
  • 基于外卖业务的数据可视化入门到精通-Vue3.0+EChart4.0
    基于外卖业务的数据可视化入门到精通-Vue3.0+EChart4.0项目分辨率响应式创建 项目顶部信息条创建 页面主体创建  接项目搭建与初始化之后继续对项目进行部署工作项目展示:        技术栈:1.vue3.0+vue-router4.0+axios2.flex布局3.LESS4.rem屏......