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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第24章】Vue实战篇之用户信息展示

文章目录 前言一、准备1. 获取用户信息2. 存储用户信息3. 加载用户信息 二、用户信息1.昵称2.头像 三、展示总结 前言 这里我们来展示用户昵称和头像。 一、准备 1. 获取用户信息 export const userInfoService ()>{return request.get(/user/info) }2. 存储用户信息 i…

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

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

美妆短剧撬动33亿市值后,爆款短剧有了新风向

6月1日起微短剧分级备案正式施行,所有短剧未经备案不得播出,该备案也是短剧行业的首个行业规范,让近两年来肆意增长的短剧迎来新一轮洗牌,在保障短剧质量的同时,也促进了行业的发展。 ▲ 图片来源:网络 面对…

Freertos-----任务之间的消息传递(使用消息队列信号量方法)

这次来分享任务之间的数据传递的方法,方法有很多种,我展示2种,让大家对freertos有更深刻的印象 目录 消息队列 信号量 消息队列 首先直接打开普中的例程,然后在里面加上ADC的驱动代码,先初始化外设先,我…

前端模糊搜索关键字高亮

效果 代码 <template><view class"flexStart new-box"><view class"company"><!-- 输入框样式 --><view class"spaceBetween companyName" click.stop"isCompany true"><input type"text&quo…

xargs 传参

xargs的默认命令是 echo&#xff0c;空格是默认定界符。这意味着通过管道传递给 xargs的输入将会包含换行和空白&#xff0c;不过通过 xargs 的处理&#xff0c;换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。 xargs -n1 // 一次输出一个参数到一行&#xf…

qmt量化交易策略小白学习笔记第47期【qmt编程之期货仓单】

qmt编程之获取期货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 期货仓单 提示 1…

使用Python selenium爬虫领英数据,并进行AI岗位数据挖掘

随着OpenAI大火&#xff0c;从事AI开发的人趋之若鹜&#xff0c;这次使用Python selenium抓取了领英上几万条岗位薪资数据&#xff0c;并使用Pandas、matplotlib、seaborn等库进行可视化探索分析。 但领英设置了一些反爬措施&#xff0c;对IP进行限制封禁&#xff0c;因此会用到…

mysql 某个时间字段取值时间标识的字符串的值

SELECT STR_TO_DATE(substr(out_trade_no, 1,14), %Y-%m-%d %H:%i:%s) FROM o_order WHERE id 364457; UPDATE o_order SET created_time DATE_FORMAT(STR_TO_DATE(substr(out_trade_no, 1,14), %Y%m%d %H%i%s), %Y-%m-%d %H:%i:%s) WHERE id 364457; 举例&#xff1a; 1…

五种实用方法!手把手教你系统盘瘦身

随着电脑的使用时间变长&#xff0c;电脑硬盘会逐渐被各种类型的数据占满&#xff0c;其中系统盘的可用空间也在慢慢变小。这是因为系统在运行过程中会产生大量临时文件和缓存文件&#xff0c;同时&#xff0c;系统的每一次更新升级也都会生成相关的文件夹存放在系统盘中&#…

高阶图神经网络 (HOGNN) 的概念、分类和比较

图神经网络&#xff08;GNNs&#xff09;是一类强大的深度学习&#xff08;DL&#xff09;模型&#xff0c;用于对相互连接的图数据集进行分类和回归。它们已被用于研究人类互动、分析蛋白质结构、设计化合物、发现药物、识别入侵机器、模拟单词之间的关系、寻找有效的交通路线…

AI/ML 数据湖参考架构架构师指南

这篇文章的缩写版本于 2024 年 3 月 19 日出现在 The New Stack 上。 在企业人工智能中&#xff0c;主要有两种类型的模型&#xff1a;判别模型和生成模型。判别模型用于对数据进行分类或预测&#xff0c;而生成模型用于创建新数据。尽管生成式人工智能最近占据了新闻的主导地…

excel基本操作

excel 若要取消在数据表中进行的所有筛选 步骤操作&#xff1a; 单击“数据”选项卡。在“排序和筛选”组中&#xff0c;找到“清除”按钮。点击“清除”按钮。 图例&#xff1a; 将文本文件的数据导入到Excel工作表中进行数据处理 步骤&#xff1a; 在Excel中&#xff0c…

DevEco鸿蒙开发请求网络交互设置

首先&#xff0c;在鸿蒙项目下config.json中找到module项&#xff0c;在里面填写"reqPermissions": [{"name": "ohos.permission.INTERNET"}] 在页面对应js文件内&#xff0c;填写import fetch from system.fetch;。 GET和POST区别 GET将表单数…

下班时间如何安排?

随着互联网的飞速发展和数字化时代的来临&#xff0c;越来越多的人开始探索除了主业以外的赚钱途径&#xff0c;以增加收入来源。本文将为您介绍几种当前热门的高薪副业项目&#xff0c;包括网络任务赚钱、开设个人网店、电商导购推广、在线辅导教学、技能变现服务、视频创作分…

机械硬盘和固态硬盘的区别及判断硬盘类型的方法

HDD&#xff08;机械硬盘&#xff09;和 SSD&#xff08;固态硬盘&#xff09;的主要区别 存储介质 HDD&#xff1a;使用磁性盘片&#xff08;磁盘&#xff09;和机械读写头SSD&#xff1a;使用闪存芯片 速度 HDD&#xff1a;读写速度较慢&#xff0c;因为需要机械读写头在…

rttys服务器和客户端

rttys服务器 1.下载 https://github.com/zhaojh329/rttys/releases2.解压运行 libev交叉编译 cd libev ./configure --hostarm-linux CCaarch64-poky-linux-gcc --prefix/home/michael/rtty_install make install DESTDIR/home/michael/rtty_installrtty客户端 1.git地…

人工智能对决:ChatGLM与ChatGPT,探索发展历程

图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:

Modbus协议转Profibus协议网关模块连PLC与激光发射器通讯

一、概述 在PLC控制系统中&#xff0c;从站设备通常以Modbus协议&#xff0c;ModbusTCP协议&#xff0c;Profinet协议&#xff0c;Profibus协议&#xff0c;Profibus DP协议&#xff0c;EtherCAT协议&#xff0c;EtherNET协议等。本文将重点探讨PLC连接Modbus协议转Profibus协…

visualbox搭建linux环境双网卡配置

文章目录 1. 双网卡模式简介2. 网络模式配置2.1 virtualBox说明2.2 host-only网络模式配置2.3 NAT网络模式配置 3. 虚拟主机网络设置3.1 网卡一设置3.2 网卡二设置 4. 网卡配置5. ssh访问 本篇的目的是为了搭建本地的linux测试环境用。 1. 双网卡模式简介 双网卡网络模式简介 …