前言

最新在适配我司产品在信创操作系统各个版本上的安装,在踩了很多坑后, 总结出了一套有效的适配流程,在此记录一下。

由于信创国产化操作系统都是基于openEuler系统或Centos系统来的,包括系统软件包名字,release号等都修改了,在信创服务器上安装产品其实最大的工作量是需要适配跟系统相关的软件,和编译arm64版的二进制文件,尤其前一个比较难弄,因为有很多信创系统和发行版本,我们的目标是, 利用一台x86_64或者arm64架构的机器来构建所有的软件源,基本思路就是:

  • 由于官方没有信创docker镜像,需要自己做,首先需要制作信创os docker镜像的流程是:

启动一个容器做构建环境(如:centos) –> 配置官方源 –> 通过yum –installroot=… 来创建基本的系统目录 –> 通过tar打包系统 –> docker import做成镜像

  • docker run起来信创系统docker镜像用作构建环境—> 配置官方源 —通过repotrack下载–> 打包成nexus

适配细节

首先是制作os docker镜像,下面是制作脚本:

脚本逻辑解析:

由于一些信创操作系统中安装软件时需要认证机制,所以需要提前将认证放入对应目录(可以从安装好的os虚机中获取),此认证文件经过测试可以用到其它发行版本上,所以以后版本更新不用再更新此文件

脚本参数解析:

 

–image_arch: 构建的架构,默认两种架构同时构建

–iso_path: 官方发行版.iso后缀的镜像文件地址,如果提供此参数,则os镜像从.iso文件中的repo源进行制作,构建出来的镜像软件版本与.iso文件中的版本保持一致,如果不提供此参数, 则脚本默认会从官方在线的repo软件源中去下载发行版对应的软件版本,可能会存在某些软件跟.iso文件中不一致(经过测试,仅中科方德安装openssl时出现了依赖不一致)

 

定义软件清单

下载离线源时,通过定义一下packages.yaml文件,来定义全部所需的软件包:

packages.yaml:

定义各系统构建使用的Dockerfile

下面是制作麒麟离线源的Dockerfile:

中科方德在适配过程中出现了很多问题,总结如下:

  1. 官方没有docker-ce-20.10.17版本,需要配置docker el8源
  2. 官方没有sshpass等包,需要配置centos7的源
  3. 在离线源制作完成后,安装containerd.io时,总是报 Error: No available modular metadata for modular package 错误,解决方式是使用modulemd-tools重新生成 modular metadata

参考:https://codeantenna.com/a/8Haz77M6AI

 

下面是nfsChina的Dockerfile:

uos的:

openEuler的:

centos的:

由于centos使用repotrack下载docker-ce版本总是下载最新的,所以使用yumdownloader下载docker-ce

操作系统docker镜像构建逻辑图:

整体构建逻辑图:

整体构建的流程图:

Jenkins流水线构建

 

 

Categories: OS

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *