当前位置: 首页 > news >正文

TrueNAS系统在ARM平台上的移植

      随着家庭及中小型企业对存储和共享需求的日益增长,高效、可靠的文件存储系统成为支撑各类应用的关键。

      在众多存储系统中,TrueNAS以其卓越的数据完整性与可靠性、简洁高效的应用程序部署和管理、灵活的虚拟化应用添加能力,以及出色的可用性,赢得了广大用户的青睐。

      然而,目前TrueNAS主要支持x86平台,限制了其在成本更低、功耗更小的ARM平台上的应用。

      为了提升NAS系统的整体性能,更适应存储应用的软硬件系统,土星云团队经过深入研究与开发,成功将TrueNAS移植至ARM系统,推出了具有创新性的NAS存储服务器。

  • 一、环境准备

  •     TrueNAS版本:23.10.1.2
  •     系统要求:Debian 10及以上(支持VM或ARM裸板)
  •     内存需求:16G
  •     磁盘空间:≥15G

二、部署流程

2.1 安装开发环境

使用以下命令安装必要的软件环境:

~$ sudo apt install build-essential debootstrap git python3-pip python3-venv squashfs-tools unzip libjson-perl rsync

2.2 构建与适配TrueNAS系统

2.2.1 构建流程

       基于TrueNAS的scale-build构建框架,我们在TS-23.10.1.2版本基础上进行适配。首先克隆构建框架的Git仓库:

~$ git clone -b TS-23.10.1.2 https://github.com/truenas/scale-build.git

      在环境准备完成后,通过运行make命令(需以root或sudo权限执行)开始完整的构建流程。该构建包括以下步骤:

  • 1)make checkout   从网上获取最新的软件源,置于source目录下;
  • 2)make packages   从拉取下来的源构建所有*.deb包;
  • 3)make update    生成独立的更新文件;
  • 4)make ISO      生成ISO映像,位于tmp/release目录下;

2.2.2 适配ARM平台

      由于TrueNAS原生支持x86架构,为了在RK3588平台上运行,我们需要对构建框架进行一系列适配工作:

1)修改软件源

      TrueNAS的软件源定义在conf/build.manifest文件中。其中所有的软件包来源于apt-repos中url定义的源路径。默认情况下,这个源路径指向TrueNAS自行维护的源,其中仅包含AMD64架构的软件包。因此,需要将其修改为开源的Debian apt源,以支持ARM64架构,并将相关AMD64架构的软件包改为ARM64架构的软件包。如下图:

2)修改git源

      在conf/build.manifest文件中。repo参数定义的是远程git仓库的路径。可根据自己的需求修改或移除源路径。

      其中需要注意的是,为了让系统运行在rk3588,需要将kernel的repo路径替换为rk3588的内核源码路径,并确保内核版本为6.x.x。

3)deb打包调整

      debian软件包构建系统是通过一系列标准化文件和工具,定义了软件包的构建和安装过程。每个git软件源里面都包含了debian目录,它们描述了软件包的元数据、构建步骤、依赖关系和安装路径等信息。其中:

  • debian/control:包含软件包的元数据,如名称、维护者、依赖关系等;
  • debian/changelog:描述软件包的更改历史。使用 dch 工具来生成这个文件;
  • debian/rules:这是一个Makefile,定义了如何构建软件包;
  • debian/source:用于指定源包的格式和相关选项;
  • debian/copyright:描述软件包的版权和许可信息;

      需要特别关注的是debian/control和debian/rules这两个文件。在debian/control文件中,会定义deb软件包的构建依赖,这些依赖位于Build-Depends属性下。我们首先需要将其中指定的AMD64架构的软件包替换为相应的ARM架构的软件包。此外,对于那些只在AMD64架构上特有的软件包,需要适当地进行移除。与此同时,还需要检查debian/rules文件,确保其中的构建规则和指令也适用于ARM架构,必要时进行相应的修改和调整。这些步骤将确保软件包能够在ARM架构下正确构建和运行。

4)ISO制作调试

      在修改完相关的软件源、git源和debian规则之后,可以通过单步执行上述的make命令进行调试。编译过程产生的日志将生成在scale-build下的log文件夹。通过逐步运行构建过程中的各个命令,并分析相关日志,可以详细观察每一步的输出和行为,从而更精准地发现和修复错误。最终生成可以适配rk3588平台的ISO映像文件。

      通过一系列的适配工作,我们成功将TrueNAS系统移植至ARM平台,并在土星云网络存储服务器DN110M-CS产品中得到了验证,为用户带来了全新的存储体验。该产品不仅继承了TrueNAS系统的优势特性,还融入了ARM系统低功耗、资源占用小、自主研发及成本较低等优势,为用户提供了全方位的NAS存储一体化解决方案。

      我们致力于为用户提供卓越的存储体验,让数据存储变得更加简单、高效。

相关文章:

  • 傅佩荣教授讲座视频全集,傅佩荣讲座大全,傅佩荣国学讲座全集百度网盘
  • 使用同步和异步方式更新插入MongoDB数据的性能对比
  • 使用Scala爬取安居客房产信息并存入CSV文件
  • AI时代:硬件狂欢,软件落寞 华为开发者大会2024
  • 如何在 MySQL 中创建和使用事务?
  • 一文读懂数据仓库ODS层
  • 外贸SEO工具有哪些推荐?
  • Unity URP下通过相机让部分Render不受后处理渲染
  • 前端模糊搜索关键字高亮
  • Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
  • android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案
  • 在超线程CPU上切换到另一个线程
  • 在Android中管理内存
  • 使用 Selenium 自动化获取 CSDN 博客资源列表详解
  • AI在创造还是毁掉音乐?
  • [译] React v16.8: 含有Hooks的版本
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【EOS】Cleos基础
  • Babel配置的不完全指南
  • Consul Config 使用Git做版本控制的实现
  • css的样式优先级
  • ES6语法详解(一)
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel核心解读--Facades
  • Nacos系列:Nacos的Java SDK使用
  • nodejs实现webservice问题总结
  • node学习系列之简单文件上传
  • PHP的类修饰符与访问修饰符
  • Redis 中的布隆过滤器
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 第2章 网络文档
  • 高程读书笔记 第六章 面向对象程序设计
  • 排序算法学习笔记
  • 如何解决微信端直接跳WAP端
  • 入门到放弃node系列之Hello Word篇
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • gunicorn工作原理
  • 国内开源镜像站点
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)(1.11) SiK Radio v2(一)
  • (4)logging(日志模块)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (笔试题)分解质因式
  • (补充)IDEA项目结构
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (回溯) LeetCode 77. 组合
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (图)IntelliTrace Tools 跟踪云端程序
  • (源码分析)springsecurity认证授权