2 Star 5 Fork 5

OpenCloudOS / xuanwan

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

玄湾系统

功能介绍

玄湾OS是云原生OS的重要组件之一。玄湾OS项目聚焦于镜像的构建和升级。常规的OS镜像一般是通过Linux发行版衍生而来,在云原生场景下,具有体积臃肿、版本零散、攻击面广等不足。玄湾OS项目的引入,就是为了解决传统的镜像构建和升级带来的弊端。如下是玄湾功能分类:

  • 构建系统: 玄湾可以根据不同产品需求,可配置其包含的组件。组件可以来自指定软件仓库,也可以通过源代码编译产生。组件分为:基础组件(无需配置)和产品组件;
  • 升级系统: 玄湾提供快速升级机制以及异常版本回退机制,并且基于overlayfs实现的只读根文件系统A/B盘方式升级,同时提供受控可供用户安装的隔离空间。既防止了系统的碎片化,又保证了一定的灵活性;

功能特点

玄湾OS是一款启动速度快和资源占用少,并且集成Kernel、Linux发行版和容器运行时为一体,意在为使用者提供一个专为容器安全运行的轻量级云原生操作系统。 然而,玄湾OS不仅仅解决了传统容器镜像的弊端,而且还引入了一些新的特性。玄湾OS将拥有如下几个特性,

  1. 轻量化:玄湾OS内冗余应用和冗余库较少,只包含必要的基础库。同时在构建时是以rpm/yum作为包管理机制来管理所有组件以及解决依赖,但是构建成镜像后就完全去掉了包管理器,这样大大减少了资源的占用.
  2. 安全性:玄湾OS根文件系统默认只读,并能控制客户登录,且登录的客户仅能操作部分目录(overlay目录)。另外,玄湾OS内的基础组件将逐渐切换到rust语言,并能充分利用rust的内存安全特性。
  3. 统一配置:为了方便客户使用,玄湾OS将容器环境需要的内容全部整合到一起,配置统一无差异,不会出现配置满天飞的情况。
  4. 内核更新:玄湾OS支持主备镜像升级/回退,可以有效解决因磁盘或电源异常导致的宕机问题。
  5. 内核优化:玄湾OS优化了内核组件,提升了系统启动速度,系统内核启动完成仅需1s。
  6. 构建环境安全:玄湾OS的构建是采用容器环境隔离的方式来进行,因此,不影响构建系统本身。

玄湾OS构建

构建准备

1.安装 git和git lfs

dnf -y install git git-lfs

2.初始化git lfs

git lfs install

3.安装docker-buildx

dnf -y install https://mirrors.opencloudos.tech/epol/9/Everything/x86_64/os/Packages/docker-buildx-0.11.2-1.oc9.x86_64.rpm

4.下载玄湾系统

git clone https://gitee.com/OpenCloudOS/xuanwan.git

环境安装

构建前,需执行./prepare.sh或手动安装如下工具:

1.安装 docker-ce软件包

dnf -y install docker-ce

2.安装 cargo软件包

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

3.安装 cargo-make包

cargo install cargo-make

4.安装 toml-cli包

cargo install toml-cli

5.将 cargo添加到环境变量

source $HOME/.cargo/env

玄湾OS

1.构建oc镜像

cargo make

2.清除oc镜像

cargo make clean
注:cargo make -e TENCENT_TARGET=xxxx可以编译指定的产品镜像,默认是oc9。

3.编译生成的镜像的命名规则为

产品名+kernel版本号+玄湾编译时间.img

例如: oc9-6.6.6-2401.0.1-{timestamp}.img

自定义产品

玄湾可以通过修改targets目录下的文件,来增加自定义产品,具体请参考

targets/README.md

自定义应用包

玄湾可以通过修改packages目录下的文件,来增加自定义应用包,具体请参考

packages/README.md

注意事项

1.当编译过程中,如果出现空间不足,则需要用如下命令,清理一下docker磁盘:

docker system prune -a

2.在编译C文件的时候,如果有依赖第三方库,此时的第三方库是被安装到%{_cross_sysroot}目录,因此需要在编译的时候添加CFLAGS/LDFLAGS,如下:

CFLAGS="-I%{_cross_sysroot}/usr/include -L%{_cross_sysroot}/usr/lib64"

3.当在镜像内新增安装包或者文件时,需要修改targets//Cargo.toml调整镜像大小,否则会出现镜像空间不足的情况。

打开Cargo.toml,找到image-size, 并修改为对应的大小。

4.修改packages/< package >/Cargo.toml文件后,需要执行

cd packages; cargo update; cd packages

注: 不执行,会出现error: the lock file packages/Cargo.lock needs to be updated but --locked was passed to prevent this

5.出现错误 ERROR: failed to do request: Head "https://registry-1.docker.io/v2/docker/dockerfile/manifests/1.1.3-experimental": net/http: TLS handshake timeout

打开/etc/docker/daemon.json文件,修改为如下(如果不存在,需要创建一个新的)
{
    "experimental": false,
    "insecure-registries": [
        "mirrors.tencent.com", // 或者这里修改成其他可用mirrors
    ]
}
修改后执行systemctl restart docker,再重新执行cargo make即可.

待新增功能(TODO)

1、增加镜像主备升级功能(A/B盘);

空文件

简介

玄湾系统是一款基于OpenCloudOS的镜像构建系统,主要用于打造轻量化的操作系统。特点:在基于已有rpm包的同时,并可以对特定的软件进行定制化改动。 展开 收起
Shell 等 3 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Shell
1
https://gitee.com/OpenCloudOS/xuanwan.git
git@gitee.com:OpenCloudOS/xuanwan.git
OpenCloudOS
xuanwan
xuanwan
master

搜索帮助