操作系统在软硬件生态中扮演着承上启下的作用,具有衔接下层物理设备及资源和上层软件应用及服务的作用。因此操作系统国产化是自主可控软硬件生态的根本保障。
国产操作系统的研发可以追溯到20世纪70年代,杨芙清院士于1973年率领软件课题组设计出了150机整套操作系统软件,运行在我国第一台百万次集成电路计算机上,打破了西方的封锁。1981 年,她又主持完成了我国第一个用高级语言编写的大型机操作系统——240机操作系统。杨芙清院士是中国在软件开发领域做出显著贡献的第一个程序员。
20世纪80年代末,我国探讨并提出打造自主通用操作系统,后经过专家研究论证,制定了以跟踪Unix操作系统为技术路线的计划,并在“八五”攻关计划中正式立项。20世纪90年代初,我国正式推出COSIX 1.0操作系统,随后正式提出包括中文、微内核和系统安全等特色功能的COSIX 2.0操作系统。当时国产操作系统以学习UNIX等国外先进操作系统的相关概念和进行实验性的设计为主。
COSIX操作系统项目出色地完成了国产操作系统实验性的设计工作及人才队伍建设,而UNIX操作系统因为版权问题陷入商业纠纷,为其发展前景蒙上了阴影。20世纪90年代,随着自由软件运动一起发展的Linux操作系统发展势头迅猛,它通过克隆UNIX操作系统解决了版权问题,并迅速占领了操作系统的技术高地。2000年前后,基于Linux的国产操作系统迅猛发展,诞生了一批国产Linux操作系统产品,比如中软Linux(COSIX Linux)、红旗Linux和蓝点Linux(BluePoint Linux)等。这一阶段,国产操作系统确立了以Linux内核为基础的技术路线,产品脱离实验阶段,步入实用化阶段。
经历了Linux系统发展热潮之后,受到微软Windows操作系统的冲击,也受国内外经济和政策环境的影响,国产操作系统发展势头趋缓,一些缺乏商业化运营支撑的国产操作系统产品逐步被市场淘汰。然而经过行业洗牌,个别技术和运营都较为扎实的国产操作系统还是得到了一些市场机会,比如麒麟软件旗下的麒麟操作系统、深度科技旗下的Deepin操作系统、统信软件旗下的统信UOS等都发展势头良好,这表明国产操作系统正走向成熟,逐步成为真正可用的产品。
2018年以来发生的美国制裁中兴事件、芯片断供和对华为等中国高科技公司的各种打压,再次揭示了国产化软硬件生态的重要性,掀起了国产操作系统发展的新一轮热潮,其中最具代表性的就是华为鸿蒙系统(HarmonyOS)和欧拉系统(openEuler)。经过多年的发展,国产操作系统已取得长足进步,从“能用”走向“好用”,也从追赶走向有了一点引领操作系统发展方向的苗头。
国产操作系统积极因应外部国际环境和借助国家国产化的政策导向,向市场化发起了新一轮的冲击,相信不久的将来国产操作系统及其承上启下的软硬件生态将在以国内大循环为主体、国内国际双循环相互促进的新发展格局中大放异彩。
国产Linux操作系统发展历程如图1-4所示。国产Linux操作系统始于20世纪90年代,大多数基于Fedora、CentOS、Debian/Ubuntu等国外Linux发行版进行二次开发,直到2019年,华为公司开源了openEuler操作系统,它是自主演进的根操作系统,不是基于其他任何Linux发行版的二次开发,这是它与其他国产Linux操作系统的主要差异。
图1-4 国产Linux操作系统发展历程
openEuler是一款开源操作系统,它的前身是华为公司发展近10年的服务器操作系统EulerOS,2019年开源,更名为openEuler。
当前openEuler内核源于Linux,支持鲲鹏及其他多种处理器,能够充分释放计算芯片的潜能,是由全球开源贡献者构建的高效、稳定、安全的开源操作系统,适用于数据库、大数据、云计算、人工智能等应用场景。同时,openEuler是一个面向全球的操作系统开源社区,通过社区合作,打造创新平台,构建支持多处理器架构、统一和开放的操作系统,推动软硬件应用生态繁荣发展。
openEuler以年月为版本号,以便用户了解版本发布时间,例如openEuler 22.03表示发布时间为2022年3月。
openEuler 22.03基于Linux Kernel 5.10内核构建,在进程调度、内存管理等方面有10余处创新,包括深度优化调度、I/O、内存管理,提供ARM64、x86、RISC-V等更多算力支持;新增启动选项preempt=none/voluntary/full,允许内核动态切换抢占模式;通过移动PMD/PUD级别的表项,加速映射大块内存的速度;采用per memcg lru_lock,减少云原生容器实例锁竞争,提升系统性能;通过共享映射方式将HugeTLB管理页中无实际作用的tail页释放掉,从而降低管理结构的开销,降低大页管理自身内存占用;本地TLB和远端TLB刷新并行,优化TLB shootdown流程,加速TLB刷新,提升业务性能;对于超过基本内存页面大小的空间进行vmalloc()分配时,会尝试使用大页而不是基本页来映射内存,可以极大地改善TLB的利用,降低TLB miss;使用配置CONFIG_UCE_KERNEL_RECOVERY打开,在copy_from_user场景下消费UCE时,使用kill关联用户态进程取代内核panic,该特性默认是关闭的,可通过内核启动参数cmdline接口(uce_kernel_recovery=[0,4])和proc接口动态开关(/proc/sys/kernel/uce_kernel_recovery)进行配置。
openEuler 22.03增加了新介质文件系统Eulerfs,该文件系统创新元数据软更新技术,基于指针的目录双视图计数机制,减少元数据同步开销,有效提升文件系统create、unlink、mkdir、rmdir系统调用性能。
openEuler 22.03做了内存分级扩展,支持多种内存、存储介质扩展系统内存容量,降低内存使用成本。
openEuler 22.03新增用户态交换支持,通过etMem的策略配置,对于淘汰的冷内存,通过用户态swap功能交换到用户态存储中,达到用户无感知,性能优于内核态swap。
openEuler 22.03新增gazelle用户态协议栈,无须应用程序修改和重新编译即可使用,支撑上层业务获得高性能、低时延的网络传输。gazelle用户态协议栈基于dpdk和lwip,实现支持无锁、多线程的高性能用户态协议栈,加速应用程序的网络性能,无须修改适配和重新编译即可使用。
openEuler 22.03做了云原生调度增强,在云业务场景中,交互类应用对延时敏感,在线业务存在潮汐现象,CPU资源利用率普遍较低(不足15%),在线和离线业务混合部署是提升资源利用率的有效方式。在现有的内核资源分配和管理机制上,通过QAS可以确保在线任务对CPU的快速抢占、确定性的调度运行,同时压制离线任务干扰;通过OOM回收支持优先级,优化OOM时内存回收调度算法,在发生OOM时,优先对低优先级的进程组进行内存回收,保障在线业务的正常运行;通过容器混合部署框架,对K8s集群下的混合部署,openEuler用户仅需给业务打上在线或离线的标签,系统即能自动感知业务的创建,并根据业务优先级进行配置,实现资源的隔离和抢占。
openEuler 22.03支持QEMU热补丁机制,即支持libcareplus热补丁机制,提供一种在线修复进程bug的技术,使得QEMU进程能够在不影响虚拟机业务的情况下,在线解决QEMU进程bug。
openEuler 22.03支撑了容器化操作系统KubeOS,实现云原生集群OS的统一容器化管理。包括OS容器化管理、对接K8s容器和OS统一管理、原子化的生命周期管理,以及OS轻量化裁剪,减少不必要的冗余包,可实现快速升级、替换等。
openEuler 22.03支持轻量安全容器增强,基于StratoVirt轻量虚拟化技术,实现容器级别的低负载和虚拟机的高安全。包括支持UEFI启动、ACPI表的构建以及为虚拟机添加包括virtio-pci在内的PCIe/PCI设备;支持VFIO,提供将host上物理设备直通给虚拟机的能力,使虚拟机获得接近裸设备的高性能;支持直通设备热插拔,即支持virtio-blk-pci、virtio-net-pci和VFIO等设备的热插拔,有效避免更换外设引起的系统停机和业务中断。
openEuler 22.03具有iSulad增强,shimv2收编了kata-runtime、kata-shim和kata-proxy进程,通过加载一次运行时并通过RPC调用来处理各种容器生命周期管理命令来简化架构,不必为每个容器一直运行一个容器运行时。
openEuler 22.03具有eggo支持容器管理双平面部署,eggo是openEuler云原生Sig组K8s集群部署管理项目,提供高效、稳定的集群部署能力。包括集群配置版本化管理,配置统一Git repo版本化管理,使用仓库汇总和跟踪集群的配置信息,以及x86/ARM双平面,实现OS双平面集群化部署、监控、审计等场景。
openEuler 22.03支持边缘计算,提供跨边云的协同框架(KubeEdge+),实现边云之间的应用管理与部署、跨边云通信等基础能力。包括管理协同—— 实现单集群设备统一管理,应用秒级发放;网络协同—— 支持跨边云双向通信,私有子网中的边缘节点通信;边缘自治—— 实支持边缘自治,确保网络不稳定状态下边缘节点正常工作,支持边缘节点元数据持久化和快速恢复;边缘轻量化—— 内存占用少,可在资源受限情况下工作。
openEuler 22.03支持嵌入式镜像,具有轻量化能力,开放yocto小型化构建裁剪框架,支撑OS镜像轻量化定制,提供OS镜像小于5 M和小于5 s快速启动等能力;具有多硬件支持,新增支持树莓派4B作为嵌入式场景通用硬件;具有软实时内核,基于Linux-5.10内核提供软实时能力,软实时中断响应时延为微秒级;可以混合关键性部署,实现SoC内实时和非实时多平面混合部署,并支持zephyr实时内核;具有分布式软总线基础能力,集成鸿蒙的分布式软总线,实现欧拉嵌入式设备之间的互联互通;具有嵌入式软件包支持,新增80+嵌入式领域常用软件包的构建。
openEuler 22.03支持secPaver,它是一款SELinux安全策略开发工具,用于辅助开发人员为应用程序开发安全策略,提供高阶配置语言,根据策略配置文件内容生成SELinux策略文件,降低SELinux使用门槛。
openEuler 22.03支持NestOS,它是一款在openEuler社区CloudNative sig组孵化的云底座操作系统,专注于提供最佳的容器主机,大规模下安全地运行容器化工作负载。NestOS是开箱即用的容器平台,搭载了iSulad、docker、podman、cri-o等主流容器基础平台;NestOS具有简单易用的安装配置过程,采用了Ignition技术,提供个性化配置;NestOS具有安全可靠的包管理方式,使用rpm-ostree进行包管理;NestOS具有友好可控的自动更新代理,采用zincati实现无感升级;NestOS有紧密配合的双系统分区,此分区设计确保系统安全。
openEuler 22.03具有很多第三方应用支持,比如KubeSphere,它是在Kubernetes之上构建的以应用为中心的容器平台,完全开源,由青云科技发起,并由openEuler社区SIG-KubeSphere提供支持和维护;比如OpenStack Wallaby,Wallaby是2021年4月份发布的OpenStack的最新稳定版本,包含nova、kolla、cyborg、tacker等核心项目的重要更新;比如OpenResty,它是基于Nginx与Lua的高性能Web平台。
openEuler 22.03具有对多种桌面环境的支持,提供更多的开发桌面选择和更好的开发体验。包括DDE新增支持画板、音乐和影院应用;UKUI新增支持中文输入法和多媒体;kiran-desktop支持麒麟信安桌面系统;支持GNOME桌面系统。
openEuler操作系统的发布件包括ISO发布包、虚拟机镜像、容器镜像、嵌入式镜像和repo源等,方便不同用户的安装和使用。