第一章 鸿蒙内核开发概述 1.1 鸿蒙系统有哪些内容? 鸿蒙系统,就相当于一套完整的PC软件系统。 ? Windows里含有: 简单地说,鸿蒙系统里含有 ① 电脑一开机,那些界面是谁显示的? 类似的,这个BIOS对应于鸿蒙里的bootloader。Bootloader的作用就是去Flash、SD卡等设备上读入鸿蒙内核,并启动它。 ④ Windows启动之后,我们就是聊QQ、玩游戏了,这些就是APP,它们存在磁盘上同样的,鸿蒙系统中也有各种APP,它们位于根文件系统上。 ①bootloader:用于启动鸿蒙内核Liteos-a②内核(含有驱动程序):提供进程管理、文件管理、硬件驱动等③ 根文件系统:系统运行必需的文件、程序④ APP:保存于根文件系统上 1.2 日常工作中开发流程是怎样 Bootloader、内核、APP等等软件,需要在Ubuntu中编译;但是阅读、修改这些源码时,在Windows下会比较方便。 所以,我们需要在Windows、Ubuntu上都存有源码。
1.1 鸿蒙系统有哪些内容? 鸿蒙系统,就相当于一套完整的PC软件系统。 Windows里含有: ① 电脑一开机,那些界面是谁显示的? 是BIOS,它做什么? 类似的,这个BIOS对应于鸿蒙里的bootloader。 Bootloader的作用就是去Flash、SD卡等设备上读入鸿蒙内核,并启动它。 ④ Windows启动之后,我们就是聊QQ、玩游戏了,这些就是APP,它们存在磁盘上 同样的,鸿蒙系统中也有各种APP,它们位于根文件系统上。 简单地说,鸿蒙系统里含有: ① bootloader:用于启动鸿蒙内核Liteos-a ②内核(含有驱动程序):提供进程管理、文件管理、硬件驱动等 ③ 根文件系统:系统运行必需的文件、程序 ④ APP: Bootloader、内核、APP等等软件,需要在Ubuntu中编译;但是阅读、修改这些源码时,在Windows下会比较方便。 所以,我们需要在Windows、Ubuntu上都存有源码。
elecfans_trackid=t_index 2.直播内容: 鸿蒙OS内核liteos-a 操作系统框架 鸿蒙OS内核liteos-a 框架分析 鸿蒙OS内核liteos-a 启动流程 鸿蒙OS 内核liteos-a 移植1:串口 鸿蒙OS内核liteos-a 移植2:MMU 鸿蒙OS内核liteos-a 移植3:中断体系 鸿蒙OS内核liteos-a 移植4:定时器 鸿蒙OS内核liteos-a 常见问题汇总 问1. liteos-a 和鸿蒙2.0有啥区别? 答: 鸿蒙是一套庞大的系统,它含有UI子系统、多媒体子系统等等。 鸿蒙支持多种内核:Linux、liteos-a。 鸿蒙也是一套完整的操作系统,Linux仅仅是鸿蒙支持的内核之一。 问2. 微内核是rtos或者uclinux之类的吗? 答: 微内核,并不是“微小的内核”。 但是liteos-a并不是对标安卓、对标Windows,鸿蒙才是对标安卓。鸿蒙是一个庞大的系统,liteos-a是鸿蒙支持的内核之一。
如果需要多个工作人员怎么办,就是通过fork,简单说就是复制一个,复制的前提是需要有一个,鸿蒙里就是KProcess,其他工作人员都是通过它fork的。 那用户怎么来的呢? 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 入门学习手册7.OpenHarmony 经典面试题(含参考答案)8.OpenHarmony设备开发入门【最新版】9.沉浸式剖析OpenHarmony源代码10.系统定制指南11. 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......内核态根进程创建过程创建 当任何进程或者中断异常进入内核后,都是使用相同的内核代码段描述符和内核数据段描述符,它们是__KERNEL_CS和__KERNEL_DS。这里要明确记得,内核数据段实际上就是内核态堆栈段。
[下载 source insight 4.0 破解版]可以豪不夸张的说理解LOS_DL_LIST及相关函数是读懂鸿蒙内核的关键。 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 入门学习手册7.OpenHarmony 经典面试题(含参考答案)8.OpenHarmony设备开发入门【最新版】9.沉浸式剖析OpenHarmony源代码10.系统定制指南11. holds the waitLits to support wait/waitpid *///进程持有等待链表以支持wait/waitpid} LosProcessCB;解读pendList 个人认为它是鸿蒙内核功能最多的一个链表 waitpid系统调用为SysWait,具体看进程回收篇.双向链表是内核最重要的结构体,精读内核的路上它会反复的映入你的眼帘,理解它是理解内核运作的关键所在!
一个操作系统,最重要的部分无疑是内核。鸿蒙系统声称自研了内核,从之前开源的 OpenHarmony OS 代码中可以看到,是一款名为 LiteOS 的面向 IoT 领域构建的轻量级物联网操作系统。 目录则存放的是编译脚本和内核配置。 从中也可以看出,鸿蒙系统选用的是 linux 4.19.y LTS 版本。 在之前的文章 聊一聊鸿蒙的构建系统 中,我们知道鸿蒙采用了 GN 构建系统。 生成内核.config。
鸿蒙轻内核使用Kconfig进行图形化配置,本文专门讲解下鸿蒙轻内核LiteOS-M和LiteOS-A的图形化配置方法。 本文首先简单介绍下kconfig的基础知识,接着介绍下如何使用图形化配置。 鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等)。 入门学习手册7.OpenHarmony 经典面试题(含参考答案)8.OpenHarmony设备开发入门【最新版】9.沉浸式剖析OpenHarmony源代码10.系统定制指南11. /vendor/hisilicon/hispark_aries/config/release.config3、Kconfig高级语法Kconfig大部分工程师都了解,快速介绍几个鸿蒙轻内核中使用到的稍微高级的语法 olddefconfig等同于silentoldconfig,对于新符号使用默认值–savedefconfig <file>把当前最小的配置保持到文件<file>小结本文介绍了Kconfig的基础知识,和鸿蒙轻内核的图形化配置
主子和奴才请想一个问题,内核本身也是程序要在内存运行, 用户程序一样也要在内存运行,大家都在一个窝里吃饭, 你凭什么就管我了.好像内核程序是主子,用户程序是奴才似的.哎! 其实用户进程就是内核的一个个奴才, 被捏的死死的. 按不住奴才那这主子就不合格,就不是一个稳定系统. 请想想实际内存就这么点大, 如何满足众多用户进程的需求? 内核空间和用户空间如何隔离? 内核这当家的主子真是不容易,这些都是他要解决的问题, 但欲戴其冠,必承其重.先说如果没有内存管理会怎样?那就是个奴才们能把主子给活活踩死, 想想主奴不分,吃喝拉撒睡都在一起,称兄道弟的想干啥? 1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......举例说明TLB
CENTOS7作为常用的服务器系统,其正式版的内核都是相当保守的。 以下介绍以下升级最新版本的内核方法,目的是为了实现内核的BBR功能,改善CENTOS7的网络功能 BBR:Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 一、升级内核 1.1 查询内核版本: cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) uname -r 5.2.13-1.el7 .elrepo.x86_64 由以上可见,我使用的是CentOS 7.7版,内核为5.2.13 1.2 增加升级内核源 CentOS允许使用 ELRepo 第三方源升级内核版本。 https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.
目前 Linux 内核已经发布到 4.X(可以随时在 Linux 内核官网 查看当前版本),为了使用最新版本的内核,只好在安装 CentOS 7 后对内核进行升级。 使用 uname -r 区分你用的是官方内核还是 Linux 发行版内核,横线后面有任何东西都表示这不是官方内核: # uname -r 3.10.0-514.26.2.el7.x86_64 2. 例如 CentOS 7.2 中,通过 uname -r 查看内核版本时,会看到 3.10.0-514.26.2.el7.x86_64,表示对应的 Linux 内核版本是 3.10。 3.10.0-514.26.2.el7.x86_64 -v, –kernel-version:打印内核的版本。 _64 kernel-headers-3.10.0-514.26.2.el7.x86_64 kernel-3.10.0-514.26.2.el7.x86_64 删除旧内核的 RPM 包 yum remove
Centos 7 升级系统内核 我们使用 Linux 来表示整个操作系统,但严格地来说,Linux 只是个内核。 例如,当你计算机上运行的程序想要连接到无线网络时,它会将该请求提交给内核,后者又会使用正确的驱动程序连接到网络。 1、检查已安装的内核版本 让我们安装了一个发行版,它包含了一个特定版本的内核。 但是,这只会升级内核到仓库中可用的最新版本而不是在 www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。 [root@host-machine ~]# uname -r 5.14.0-1.el7.elrepo.x86_64 2、查看可以使用的内核列表 [root@host-machine ~ ) 7 (Core) 3、查看当前默认内核启动项 [root@host-machine ~]# grub2-editenv list saved_entry=1 4、更改默认启动内核项
本文将为大家介绍鸿蒙轻内核中的进程、线程、内存和网络四大基础功能,包括一些基础概念、实现功能和使用场景等,供想要深入了解鸿蒙操作系统的初学者学习参考。 OpenHarmony内核中的进程采用抢占式调度机制,支持时间片轮转调度方式和FIFO调度机制。 OpenHarmony内核每个进程内的线程独立运行、独立调度,当前进程内线程的调度不受其它进程内线程的影响。 OpenHarmony内核中的线程采用抢占式调度机制,同时支持时间片轮转调度和FIFO调度方式。 OpenHarmony内核的线程一共有32个优先级(0-31),最高优先级为0,最低优先级为31。 MREMAP_MAYMOVE:允许内核将映射重定位到新的虚拟地址。
本文介绍在鸿蒙应用中Picker组件的基本用法。 增加Picker组件 如下代码中46行~56行所示,在布局中增加Picker组件。 <?
我是坚果,这是我的公众号“坚果前端”,觉得不错的话,关注一下吧,如果你迷惘,不妨看看码农的轨迹 前言: 最近还在学习鸿蒙开发的支持,就想着把android里面部分用到知识搬到鸿蒙里面 因为基础语言都是java 语言,所以就写了现在这教程 那么废话不多说我们正式开始 效果图 image.png 准备工作 1 安装鸿蒙开发环境 大家可以看我之前的文章 需要用到的三方库 //okhttp3 implementation void hideLoading() { } @Override public void onError(String errMessage) { } } 到此 鸿蒙 MVP+ Rxjava+Retrofit+okhttp 实现教程 使用起来和安卓的用法非常像 我这里很多代码是复制过来 同学们可以下载完整的代码来尝试 最后总结: 鸿蒙中MVP+ Rxjava+Retrofit 还有跟多关于鸿蒙 网络编程的实现方法同学私下有兴趣可以尝试去实现我这边就不展开讲了 ,最后希望我的文章能帮助到各位解决问题 ,以后我还会贡献更多有用的代码分享给大家。
如果启动项多于2个,说明当前系统有旧内核未删除。原因是CentOS更新后不会自动删除旧内核。 默认以新内核启动,可以在启动选项中临时选择,也可以修改配置永久指定。 [root@controller ~]# uname -r #查看当前内核 3.10.0-862.3.2.el7.x86_64 [root@controller ~]# grub2-editenv list # 默认内核已是最新版 saved_entry=CentOS Linux (3.10.0-862.3.2.el7.x86_64) 7 (Core) [root@controller --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-2e7f2bc7-8c8f-47f7-905d- [root@controller ~]# yum remove kernel-3.10.0-862.el7.x86_64 #删除旧内核 或者rpm -e kernel-3.10.0-862.el7
import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install https://www.elrepo.org/elrepo-release-7. el7.elrepo.noarch.rpm 列出可用的内核相关包 # kernel-lt:长期支持版本,用于修复旧版内核的 BUG,这些内核只会修复重大 BUG,并且不会频繁发布版本。 配置内核 make menuconfig # 老的ncurses界面,被nconfig取代 make nconfig # 新的命令行ncurses界面 编译内核 make -j 4 安装内核模块 uname -r ---- 卸载新内核 删除/lib/modules/目录下对应版本的库文件 删除/usr/src/linux/目录下的源码和压缩文件 删除/boot/启动的内核和内核镜像文件 删除grub.cfg 配置文件新内核对应的条目
对于 CentOS 5.× 和 6.× 的系统我们在更新后需要重新安装应用程序恢复数据, CentOS 7.× 不需要这么麻烦,可以直接升级。 升级 CentOS 7.× 内核,启用 ELRepo,要在 CentOS 7.× 上启用 ELRepo 仓库,请运行: rpm --import https://www.elrepo.org/ RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm 图片.png 根据实际设置需要默认启动的内核,此处设置kernel-ml-4.17.4-1.el7.elrepo.x86_64为默认启动的内核,命令如下: grub2-set-default 'CentOS Linux (4.17.4-1.el7.elrepo.x86_64) 7 (Core)' 设置完成后使用下面命令查看是否设置成功: grub2-editenv list 如图:
Linux系统版本 命令1:lsb_release -a lsb_release解析 命令2: cat /etc/issue 命令3: cat /etc/redhat-release 2.查看Linux内核版本 [root ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 2.查看Linux内核版本 命令1: uname -a [root ~]# uname -a Linux iZbp13nq1pxf5wki525wiuZ 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC /proc/version [root@iZbp13nq1pxf5wki525wiuZ ~]# cat /proc/version Linux version 3.10.0-1160.45.1.el7. ~]# cat /proc/cpuinfo| grep "processor"| wc -l 4 [root@iZj6c7q37rfjtps4h88ieoZ ~]# lscpu Architecture
内核升级操作步骤如下: 步骤一:载入公钥、安装elrepo rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http kernel-ml.x86_64 kernel-ml-tools.x86_64 yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 步骤四:查看系统上的所有可用内核 elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-1160.11.1.el7.x86_64) 7 (Core) CentOS Linux (3.10.0-1160 -25 ~]# vim /etc/default/grub 步骤五:设置开机从新内核启动 方法1: grub2-set-default 0 方法2: 编辑配置文件 vim /etc/default/grub 步骤六:运行grub2-mkconfig命令来重新创建内核配置 grub2-mkconfig -o /boot/grub2/grub.cfg 步骤七、重启动、查看内核、更新 reboot uname -
由于CentOS 7的维护终止日期在2024年6月30日,距离当前还有一段时间,所以还有少量客户在继续使用着该版本。在为客户解决现网问题的过程中,我们发现因为内核缺陷导致操作系统崩溃的情况时有发生。 测试环境总结如下:硬件环境:机型为GN7.2XLARGE32,含一张共享的NVIDIA T4 GPU卡操作系统:centos7.6.0 x64,内核版本3.10.0-1160.71.1.el7.x86_ 我们按照提示进行了升级[7],升级后相应的GPU驱动程序也升级到了525,如下图所示:通过Git下载CUDA测试程序,进入目录后运行make即可编译程序。 4.3 升级Linux内核做好上述准备工作后,下面就开始来升级Linux内核。 或者通过采用4.3节的“选择新内核”这一步,重新选择旧的内核,重启系统后生效。若确认升级成功,可以根据参考文档[11]将旧内核删除。