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存储一体化解决方案。

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】SpringBoot:打造现代化微服务架构

文章目录 引言微服务架构概述什么是微服务架构微服务的优势 使用SpringBoot构建微服务创建SpringBoot微服务项目示例:创建订单服务 配置数据库创建实体类和Repository创建服务层和控制器 微服务间通信使用RestTemplate进行同步通信示例:调用用户服务 使用…

【面试题】风险评估和应急响应的工作流程

风险评估和应急响应是网络安全管理中两个重要的环节。下面分别介绍它们的工作流程: 一、风险评估工作流程: 1.确定评估范围:明确需要评估的信息系统或资产的范围。 2.资产识别:识别并列出所有需要评估的资产,包括硬件…

约束求解器方案设计

1.约束求解介绍 给定一个几何对象(点、直线段、圆、圆弧、平面等)的集合G和一个关于集合G中几何对象之间约束(点的位置、直线段的长度、圆弧对应的圆心角角度、垂直、相切等) 的集合C,则在二元组(G,C)中根…

鸿蒙开发网络管理:【@ohos.request (上传下载)】

上传下载 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import request from ohos.request;限制与约束 默认支持https,如果要支持http,需要在config.json里…

如何利用AI简历工具为实习简历加分?

时间匆匆,我们又迎来了毕业季。大学生活丰富多彩,学业同样重要。毕业答辩对于每位大学生来说都是一道重要的门槛。回想起那些为了答辩准备而熬夜、焦虑的日子,那份努力至今难忘。 虽然答辩的准备工作可能相当繁琐,但幸运的是&…

cd 命令特殊路径符 mkdir命令

cd 特殊路径符 cd . 表示当前目录,比如 cd ./Desktop表示切换到当前目录下的Desktop目录内,和 cd Desktop效果一致。cd … 表示上一级目录,比如 cd … 即可切换到上一级目录,cd…/…切换到上二级目录。cd ~ 表示 HOME 目录&#…

隐藏element的DateTimePicker组件自带的清空按钮

管理台页面使用到el-date-picker,type datetimerange 但是组件自带了清空按钮,实际上这个控件业务上代表开始时间和结束时间是一个必填选项,所有想要把清空按钮隐藏掉。 查看了文档https://element.eleme.io/#/zh-CN/component/datetime-p…

[240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞

目录 Anthropic 发布 Claude 3.5 Sonnet AI 助手Scoket.IO 拒绝服务漏洞(CVE-2024-38355) Anthropic 发布 Claude 3.5 Sonnet AI 助手 Claude 3.5 Sonnet: 更智能、更快速、更安全的 AI 助手 一、 引言 Anthropic 发布了 Claude 3.5 Sonnet&#xff0…

MySQL数据库初体验+数据库管理(其一)

【1】 操作系统介绍: Linux操作系统有 RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 国产系统 : 华为(欧拉) 阿里(龙蜥) 腾讯 (tencentOS) 麒麟&#xf…

51单片机STC89C52RC——4.1 独立按键(数码管显示按键值)

目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…

山东济南比较出名的起名大师的老师,中国最厉害的改名大师颜廷利:短命的小草,年年自损;长寿的大树,万古长青。。。(升命学说)

在中国第一起名大师的老师颜廷利教授的《升命学说》中,通过“净化论”、“和合法则”、“唯悟主义”以及“镜正理念”的阐述,我们得以窥见生命的不同维度。他以自然界中短命的小草与长寿的大树为例,揭示了生命形态的对比与哲理。 小草&#…

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…

vue技巧(十)全局配置使用(打包后可修改配置文件)

1、背景 vue打包目前主流用的有webpack和vite两种&#xff0c;默认用的webpack。&#xff08;二者的区别大家可以各自上网查&#xff0c;我没用过vite&#xff0c;所以不过多介绍&#xff09;vue通过webpack打包后&#xff0c;源码会被压缩&#xff0c;但一些关键配置可…

网络与协议安全复习 - 电子邮件安全

文章目录 PGP(Pretty Good Privacy)功能 S/MIME(Secure/Multipurpose Internet Mail Extensions)DKIM(Domain Keys Identified Mail) PGP(Pretty Good Privacy) 使用符号&#xff1a; Ks&#xff1a;会话密钥、KRa&#xff1a;A 的私钥、KUa&#xff1a;A 的公钥、EP&#xff…

雷池社区版自动SSL

正常安装雷池&#xff0c;并配置站点&#xff0c;暂时不配置ssl 不使用雷池自带的证书申请。 安装&#xff08;acme.sh&#xff09;&#xff0c;使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…

AI通用大模型不及垂直大模型?各有各的好

​​​​​​​AI时代&#xff0c;通用大模型和垂直大模型&#xff0c;两者孰优孰劣&#xff0c;一直众说纷纭。 通用大模型&#xff0c;聚焦基础层&#xff0c;如ChatGPT、百度文心一言&#xff0c;科大讯飞星火大模型等&#xff0c;都归属通用大模型&#xff0c;它们可以解答…

Android开发系列(六)Jetpack Compose之Box

Box是一个用来组合和控制子元素布局的组件。它可以在一个矩形区域内排列一个或多个子元素&#xff0c;并根据所提供的参数来控制它们的位置、大小和样式。 Box的功能类似传统的FrameLayout。 下面通过示例了解Box的使用方法&#xff0c;首先看一个最简单的示例&#xff0c;如下…

如何正确理解和评估品牌价值?

在当今这个品牌林立的商业世界里&#xff0c;我们常常听到企业家们满怀憧憬地谈论品牌梦想。 但究竟是什么驱使这些企业去打造一个品牌&#xff0c;到底是市场的激烈竞争&#xff0c;还是内心的情感寄托&#xff1f;亦或是社会发展的必然趋势&#xff0c;引领我们追求超越产品…

openh264 宏块级码率控制源码分析

openh264 宏块级码率控制函数关系 宏块级核心函数分析 WelsRcMbInitGom函数 功能&#xff1a;openh264 码率控制框架中宏块级码率控制函数&#xff0c;根据是否启用GOM QP来决定如何设置宏块的QP值&#xff0c;以控制编码的质量和比特率。原理过程&#xff1a; 函数参数&…

nginx出现504 Gateway Time-out错误的原因分析及解决

nginx出现504 Gateway Time-out错误的原因分析及解决 1、查看公网带宽是否被打满 2、查看网络是否有波动(可以在nginx上ping后端服务&#xff0c;看是否有丢包情况) 3、查看服务器资源使用情况(cpu、内存、磁盘、网络等) 4、查看nginx日志&#xff0c;具体到哪个服务的哪个…