玄湾OS是云原生OS的重要组件之一。玄湾OS项目聚焦于镜像的构建和升级。常规的OS镜像一般是通过Linux发行版衍生而来,在云原生场景下,具有体积臃肿、版本零散、攻击面广等不足。玄湾OS项目的引入,就是为了解决传统的镜像构建和升级带来的弊端。如下是玄湾功能分类:
玄湾OS是一款启动速度快和资源占用少,并且集成Kernel、Linux发行版和容器运行时为一体,意在为使用者提供一个专为容器安全运行的轻量级云原生操作系统。 然而,玄湾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
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即可.
1、增加镜像主备升级功能(A/B盘);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。