小雉系统4.0

news2024/11/26 18:30:31

项目地址

官网 飞天雉&&小雉视频系统
github https://github.com/feitianzhi/xiaozhios
gitee xiaozhios: “小雉系统”并非是开发操作系统,而是一套服务于软件供应商的产品升级方案;
QQ交流群:869598376

小雉系统简介


“小雉系统”并非是开发操作系统,而是一套服务于软件供应商的产品升级方案;

需求分析


      软件一般都运行在操作系统中,软件的运行依赖系统库、驱动,在实际项目中往往遇到以下问题:

  1. 新版本的软件需要兼容项目上所有运行的系统(如ubuntu 16.04、ubuntu 18.04、centos6、centos7、centos8等),否则无法同步给所有客户或是需要打分支为每一个版本的系统单独编译测试;
  2. 早期项目选定一个系统(centos5)可满足所有需求,而centos5不包含新硬件(以前的硬件可能停产,且新硬件的性能更好价格更便宜)的驱动,而为centos5添加硬件驱动的难度(如新驱动必须要4.*以上的内核)成本都非常高昂,最终只能采用centos8系统,这时需要所有的centos5的机器全部重新部署centos8或是软件增加分支同时维护centos5和centos8的版本;
  3. 实验室测试效果与项目运行结果不一致,比如指定ubuntu18.04为开发及运行环境,而系统安装好后需要增加额外的软件,apt 可能从某云拉取软件包进行安装,但因时间问题拉取到的数据可能不一致(某云的软件仓库在更新,其次不掌握在自己手中的数据怎么谈一样,即使知道不一样打印一句日志问题也没有消失),导致实验室和项目上的系统有差异,最终导致软件运行结果不一致;
  4. 从源码自己编译与维护一套系统可以保证实验室与项目系统完全一致,但必须解决驱动适配,硬件测试的问题,其难度大,成本甚至比您要开发的应用程序成本还高;

思考与假设


      我是一名应用开发者,我希望使用新系统--学习新技术,希望可以选择合适的系统(比如某合作单位提供的库是ubuntu18.04编译的,而选centos6系统作为生产环境)要求方案具备如下特性:

  1. 现场与实验室的系统完全一样,包括内核、驱动、虚根、库、文件系统、日志数据(每次系统启动时,所有机器的日志及临时文件也相同,保证启动时绝对可以正常运行);
  2. 应用开发完成后只需要在开发环境中测试,不需要在各个生产环境中测试(过多的生产环境增加测试成本,测试人员增多,增加沟通成本);
  3. 开发环境的系统可以随意修改(比如可以更换内核、增加驱动、修个核心库版本、甚至直接跟换系统发行版本把ubuntu18.04更换成cnetos8.1),生产环境可以自动安全无差别的同步为和开发环境一致的系统;
  4. 系统可以退回历史的任意版本,N年前的项目现升级最新系统后有功能异常了,需要立即退回原来版本已恢复生产环境,实验室也可恢复到项目的历史版本进行测试;

抽象与总结


  1. 系统可以来自任意发行版本,要让系统遵循某一规则是不可能的,方案必须兼容所有系统的规则;
  2. 系统可以升级与降级,且升级与降级可以跨越版本,则要求方案与版本无关,版本无连续性要求;
  3. 系统启动后日志及临时文件相同,则要求系统启动时可以自还原为初始状态;
  4. 系统升级需要安全及完全的一致性,则要求方案具备断电保护机制与数据校验机制;

小雉系统设计


  • “小雉系统”采用事务性更新
          在系统中含有两个root filesystem分区:A区及B区(各含有一个系统image)。当A区启动后,它可以用来更新B区。只有B区更新完整后才可以切换过来到B区,否则永远处于A区。反之亦然,我们可以用同样的办法来更新A区。这对很多需要稳定工作的环境的系统来说非常重要,比如更新一个远在路口的webcam。
  • 更强的应用安全
          系统image只是可读的,任何应用不可以更改它。这样的好处是不至于由于某个应用的bug导致整个系统重启后不能恢复,保证系统重启后绝对正常运行。系统的只读特性让系统每次启动都会恢复到初始状态,保证重启大法的绝对有效。
  • 更随意的软件测试
          系统内的所有软件都具有完整的控制权限,可以任意更改和删除文件系统中的数据,在重启后都会恢复为系统image,适合做对操作系统有破坏的测试。
  • 带权限的软件包设计
          系统软件包设计权限位,实现一个升级包可用于多客户。

小雉系统使用


  1. 下载开源系统镜像(xiaozhios-vmware.zip):小雉开源系统镜像的vmware打包-其它文档类资源-CSDN下载
          开源镜像是使用其中一个版本的升级包制作的vmware镜像(用户名:root,密码:12345),在此版本上应用升级包即可把系统升级或降级为升级包中的系统;

      从镜像中制作系统安装包的方法:
小雉系统安装包制作 - 飞天雉&&小雉视频系统
      使用镜像安装到云服务器(也适用与物理机)的方法:
小雉系统安装 - 飞天雉&&小雉视频系统

  1. 下载升级工具:资源下载 - 飞天雉&&小雉视频系统
          升级工具是“小雉系统工具”包中的一个小工具,使用方法可以参考:
    小雉系统升级 - 飞天雉&&小雉视频系统

  1. 下载升级包源码
          升级包源码为cpio.gz压缩包,解压方法:gzid -cd xiaozhios-20221212.gz |cpio -idvm

      升级包源码源码:

版本:2022-12-12 https://download.csdn.net/download/zhangrui_fslib_org/87269355

 初始化版本;    

      制作升级包的方法(制作好后使用升级工具升级即可,升级包中的定制见下节):

mkdir -p /opt/os

mv xiaozhios-20221212.gz /opt/os
cd /opt/os
gzid -cd xiaozhios-20221212.gz |cpio -idvm
cd xiaozhios
./clean;./run

小雉系统升级包源码定制


  1. xiaozhios/clean:清理制作升级包时产生的临时文件及升级包;
  2. xiaozhios/run:制作升级包的脚本(此脚本要求输入授权码,开源用户输入free);
  3. xiaozhios/updateFilePackage:打包工具,在run脚本中调用,此工具可以设置密码(默认为12345),生成的升级包会显示系统的sysKey,升级包在升级时会校验sysKey,不匹配则不能升级,即各用户可以使用不同的密码使自己做出的系统只能应用到自己的系统中;

  4. xiaozhios/platform/x86_64:储存x86_64系统的目录(platform下可以储存多个系统,即可以把多个系统做在一个升级包中);
  5. xiaozhios/platform/x86_64/mask.txt:系统包掩码的定义,升级包按如下规则应用掩码

假设系统掩码为m,包掩码为b:
      最高位-表示掩码校验方式(0-表示(m&(b&0x5FFFFF))==(b&0x5FFFFF)时包被需要,1-表示(m&(b&0x5FFFFF))!=0时包被需要);

      次高位-表示包除按标准方式校验外,如(m&b&0x400000)|((m|b)&0x200000)==0x400000时,包需要进行额外的头判断(即包的前缀与系统的前缀相同);
      次次高位-强制包的额外头判断恒为真,如(m|b)&0x200000!=0,则包的额外头判断结果为真;

  1. xiaozhios/platform/x86_64/boot:存放kernel、initrd及引导;
  2. xiaozhios/platform/x86_64/base:存放基础软件包,该目录中的软件包是一次性解压后再启动;
  3. xiaozhios/platform/x86_64/extra:存放扩展软件包,在基础软件包解压并启动系统后,再逐个解压进行启动;
  4. 软件包的命名规则,例如zfs-1.0.8.1-7.2-000000

      000000:表示权限信息(系统掩码为m,包掩码为b)

  1. 软件包内部结构,该方案要求软件包内的文件名及目录名不能以"__"打头,内部建议按原版本系统组织(即直接拷贝原系统中文件按原系统目录结构储存)


sysKey软件包在/tmp/sysinfo/sysKey文件存放的数据为制作升级包时生成的sysKey数据:"c345b45a4ec0a241134c5cefa0dd4aef"

ftp软件包是拷贝原版系统的ftp文件做的一个软件包

猜您可能喜欢
小雉系统安装: 小雉系统安装 - 飞天雉&&小雉视频系统
小雉系统安装包制作: 小雉系统安装包制作 - 飞天雉&&小雉视频系统
小雉系统网络配置:小雉系统网络配置 - 飞天雉&&小雉视频系统
小雉系统硬盘配置:小雉系统硬盘配置 - 飞天雉&&小雉视频系统
小雉系统远程升级:小雉系统升级 - 飞天雉&&小雉视频系统
使用Google Authenticator为小雉系统增加动态密码功能:使用Google Authenticator为小雉系统增加动态密码功能 - 飞天雉&&小雉视频系统
小雉配置工具:小雉配置工具 - 飞天雉&&小雉视频系统
资源下载:资源下载 - 飞天雉&&小雉视频系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud项目实例--服务通讯基础API方法

Spring Cloud Alibaba提供的组件如下: Sentinel:阿里巴巴开源产品,不仅仅可以作为断路器,也支持流量控制和服务降级。 Nacos:阿里巴巴开源产品,服务注册与服务发现,同时也可以作为配置中心。 R…

21 【styled-components的使用】

21 【styled-components的使用】 1.为什么要用这个 我们都知道,我们从最开始学css的时候,为了避免写的样式影响到另外的地方。所以我们这样来写的。 #userConten .userBtn button{font-size: 18px; }首先给一个元素写了一个唯一id | class&#xff0c…

自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件(最完整的)

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程。以后各位只…

Spring Boot使用EasyExcel导入导出Excel

一、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency> 二、实现导出excel操作 1、对我们需要导出的实体类上加上注解&#xff0c;如下&#…

(二)字符函数和字符串函数详细讲解和模拟实现(优化)

✨✨✨✨✨✨✨✨✨&#x1f4d7;字符串查找函数&#xff1a;1.strstr函数2.strtok函数&#x1f4d4;错误信息报告函数&#xff1a;1.strerror函数&#x1f4d3;内存操作函数1.memcpy函数2.memmove函数3.memset函数4.memcmp函数❤️字符函数讲解&#x1f4d2;字符分类函数&…

Spring Cloud Alibaba整合Sentinel,使用nacos持久化流控规则

一、引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifac…

小程序开发有什么快捷、低成本的方法?

2022年1月17日&#xff0c;阿拉丁研究院在《2021 年度小程序互联网发展白皮书》中提到&#xff0c;微信小程序开发者突破 300 万&#xff0c;DAU 超过 4.5 亿&#xff0c;正成为人们生活的 “标配”。 作为用户&#xff0c;我们几乎时时刻刻都享受着互联网带来的便利&#xff…

JMeter5.5入门到实战:HTTP+TCP+响应断言+自定义拓展+返回值获取

前言 众所周知JMeter是业内公认的性能测试工具&#xff0c;功能十分强大且易于拓展&#xff0c;但是入门有一定门槛&#xff0c;需要明白一些基本概念。本文使用了HTTP取样器、TCP取样器、响应断言、JSON提取器等组件&#xff0c;对公司现存的登录流程进行了测试。公司的产品包…

Java中hashmap底层Hash冲突是什么?以及如何解决Hash冲突 【杭州多测师_王sir】【杭州多测师】...

一、hashMap的底层实现hashmap的底层结构在jdk1.7之前是数组链表&#xff0c;但是在jdk1.8以后&#xff0c;其变成了数组链表红黑树&#xff0c;这个操作会加快在链表时候的查询速度。当链表的长度大于8 的时候&#xff0c;链表就会变为红黑树&#xff0c;而当长度小于6的时候&…

培训机构的存在对 IT 行业产生了哪些影响

这个标题我一看&#xff0c;应该就会引发一波口水、键盘要遭罪啦。。。做为从业十余年&#xff0c;培训行业从事也已经快7年了。 在正厚软件从一开始到今天。从讲师到教学和团队的协作、校区运营&#xff0c;从行业小白到对整体机构的运营和团队&#xff0c;有些许经验谈下个人…

测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭....

作为IT行业的大热岗位——软件测试&#xff0c;只要你付出了&#xff0c;就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的&#xff0c;但放眼望去&#xff0c;哪个工作不是这样的呢&#xff1f;会有哪家公司愿意养一些闲人呢&#xff1f;…

FKM规范在非焊接构件中的静强度评估方法介绍(上篇)

导读&#xff1a;FKM &#xff08;《Analytical Strength Assessment of Components in Mechanical Engineering》&#xff09;规范是德国机械工程研究委员会根据机械产品在实际工程中的应用情况&#xff0c;统计出的针对由钢、铸铁及铝材料制成构件的静强度及疲劳强度的评估规…

C++模板(第二版)笔记之第六章:移动语义和 enable_if

文章目录一、完美转发&#xff08;Perfect Forwarding&#xff09;二、特殊成员函数模板&#xff1a;构造函数三、 通过 std::enable_if<>禁用模板四、 使用 enable_if<>1.不能通过使用 enable_if<>来禁用 copy/move 构造函数以及赋值构造函数五、使用 conce…

0124 双指针 Day13

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数在数组的前半部分&#xff0c;所有偶数在数组的后半部分。 示例&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a…

net基于asp.net的计算机网络课程题库系统-计算机毕业设计

项目介绍 计算机网络课程题库系统是针对目前计算机网络课程试题的实际需求,从实际工作出发,对过去的计算机网络课程试题平台存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结…

操作系统_线程安全问题

文章目录1.线程安全问题举例2.为什么会有线程安全问题3.如何解决线程安全问题1.从原子性入手解决线程安全问题2.synchronized的使用方法3.java标准库中的线程安全类4.死锁问题举例2.死锁的必要条件1.线程安全问题举例 看代码: class Count {int i 0;public void add(){i;} }…

Sklearn机器学习与Plotly可视化强强联合

在学习sklearn(机器学习)过程中&#xff0c;模型原理可谓是枯燥无味&#xff0c;加上大多数模型训练过程也是不可见的&#xff0c;这使得很多小伙伴们望而却步&#xff0c;当然也有很多学者试图通过各种方式以可视化模型学习及预测过程&#xff0c;但大多数是复杂且不美观的。 …

Windows后台运行并启动Frpc客户端界面

Windows后台运行并启动Frpc客户端界面 frp搭建内网穿透可以看我另外一篇 1.frps服务端配置 [common] bind_port 3000 vhost_http_port 4000 vhost_https_port 5000authentication_method token authenticate_new_work_conns true token 5ae9394f-32d8-4a58-b6ed-e9f36…

【微服务技术05】Ribbon负载均衡

【微服务技术05】Ribbon负载均衡 案例代码&#xff1a;https://gitee.com/pikachu2333/spring-cloud-hexuan 之前配置好了eureka注册中心&#xff0c;使用RestTemplate调用地址为&#xff1a;http://eureka-user-service/user/1&#xff0c;配置了LoadBalanced负载均衡注解 但…

使用RTP包荷载AAC码流数据

目录 一. 前言 二. RTP协议介绍 三. AAC介绍 1. AAC格式 2. ADTS 四. RTP与AAC的结合 五. 代码实战 六. 效果展示 一. 前言 音视频通话中我们通常使用 RTP 协议包荷载音视频码率数据&#xff0c;例如麦克风采集输入数据后编码成帧&#xff0c;再将帧数据放入 RTP 协议包…