查看英文说明 | View English description
FnNAS 是一款基于最新 Linux 内核(Debian 发行版)深度定制的操作系统。它拥有强大的硬件兼容性,完美支持主流 x86 及 Arm64 设备,允许用户自由组装 NAS 并灵活扩展外部存储。现在,你可以轻松将电视盒子的 Android TV 系统替换为 FnNAS,将其变身为一台功能强大的私有数据存储服务器。
本项目得益于众多 贡献者 的辛勤付出,并在 FnNAS 官方技术大佬的指导下,专门为 Amlogic、Rockchip 和 Allwinner 架构的电视盒子构建了适配 Arm64 设备的 FnNAS 系统。构建版本完整继承了官方系统,完美支持写入 eMMC 启动及内核在线更新等功能。最新的固件请前往 Releases 页面下载。欢迎大家 Fork 本项目进行个性化定制。如果您觉得本项目对您有帮助,请点击仓库右上角的 Star ⭐ 以示支持!
| 系统名称 | 默认账号 | 默认密码 | SSH 端口 | IP 地址 |
|---|---|---|---|---|
| 🛜 FnNAS.OS | 自定义 | 自定义 | 22 | 从路由器获取 IP |
⬆️ 各平台(晶晨/瑞芯微/全志)型号均按 SoC 性能由高至低排列。
TF/SD/USB 中使用,其他型号的盒子支持写入 eMMC 中使用。更多信息请查阅 ✅支持的设备列表说明。可以参考说明文档中 12.15 章节的方法添加新的支持设备。
选择和你的盒子型号对应的 FnNAS 系统,不同设备的使用方法查看对应的说明。
Rockchip 平台的安装方法请查看说明文档中的 第 8 章节 的介绍,和 Armbian 的安装方法相同。
Amlogic 和 Allwinner 平台,使用 Rufus 或者 balenaEtcher 等工具将系统写入 USB 里,然后把写好系统的 USB 插入盒子。到设备接入的路由器里查找新上线的名称是 debian 的设备,查看其 IP 地址(例如:192.168.1.15),然后通过浏览器访问 http://192.168.1.15:5666 进入飞牛账号创建界面。创建自定义账号后登录飞牛系统,在 系统设置 → SSH 里开启 SSH 功能,然后使用 SSH 连接工具进入系统终端,输入命令:
sudo -i
fnnas-install
| 可选参数 | 默认值 | 选项 | 说明 |
|---|---|---|---|
| -m | no | yes/no | 使用主线 u-boot |
| -a | yes | yes/no | 使用 ampart 分区表调整工具 |
| -l | no | yes/no | 显示全部设备列表 |
举例:fnnas-install -m yes
在系统重装过程中,脚本会自动检测 eMMC 上的分区结构。若发现存在个人数据分区(P3),分区菜单将激活选项 3。选择该选项可严格保留当前分区表布局,从而确保 P3 分区内的数据不被覆盖。 系统安装完毕后,您可以在飞牛系统的 存储空间管理 界面中直接挂载并使用该分区。
| 选项 | 说明 |
|---|---|
| 1 | 系统分区(Rootfs) 限制为 16GiB。 |
| 2 | [默认] 系统分区扩容至全盘 (100%)。 |
| 3 | 继承当前系统分区大小 (保留 P3 分区的个人数据)。 |
| ≥16 | 输入数字 (GiB) 以自定义系统分区大小。 |
登录 FnNAS 系统 SSH 终端 → 输入命令:
sudo -i
fnnas-update
| 可选参数 | 默认值 | 选项 | 说明 |
|---|---|---|---|
| -r | ophub/fnnas | |
设置从 github.com 下载内核的仓库 |
| -k | 最新版 | 内核版本 | 设置内核版本 |
| -b | yes | yes/no | 更新内核时自动备份当前系统使用的内核 |
| -m | no | yes/no | 使用主线 u-boot |
| -s | 无 | 无/磁盘名称 | [SOS] 恢复 eMMC/NVMe/sdX 等磁盘中的系统内核 |
| -h | 无 | 无 | 查看使用帮助 |
举例: fnnas-update -k 6.12.63
通过 -k 参数指定内核版本号时,可以准确指定具体版本号,例如:fnnas-update -k 6.12.63,也可以模糊指定到内核系列,例如:fnnas-update -k 6.12,当模糊指定时将自动使用指定系列的最新版本。
更新内核时会自动备份当前系统使用的内核,存储路径在 /ddbr/backup 目录里,保留最近使用过的 3 个版本的内核,如果新安装的内核不稳定,可以随时恢复回备份的内核。如果更新内核失败导致系统无法启动,可以通过 fnnas-update -s 来恢复系统内核。
如果你在使用 docker 等内存占用较大的应用时,觉得当前盒子的内存不够使用,可以创建 swap 虚拟内存分区,将磁盘空间的一定容量虚拟成内存来使用。下面命令输入参数的单位是 GB,默认为 1。
登录 FnNAS 系统 SSH 终端 → 输入命令:
fnnas-swap 1
登录 FnNAS 系统 SSH 终端 → 输入命令:
fnnas-openvfd
根据 LED 屏显示控制说明 进行调试。
支持在 TF/SD/USB 中对盒子的 eMMC 分区进行备份/恢复。建议您在全新的盒子里安装 FnNAS 系统前,先对当前盒子自带的安卓 TV 系统进行备份,以便日后在恢复电视系统等情况下使用。
请从 TF/SD/USB 启动 FnNAS 系统 → 输入命令:
fnnas-ddbr
根据提示输入 b 进行系统备份,输入 r 进行系统恢复。
将本地系统中的全部服务脚本更新到最新版本,可以登录 FnNAS 系统 SSH 终端 → 输入命令:
fnnas-sync
克隆仓库到本地 git clone --depth 1 https://github.com/ophub/fnnas.git
安装必要的软件包(如 Ubuntu 24.04)
sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-24.04
sudo apt-get install -y $(cat make-fnnas/script/ubuntu2404-make-fnnas-depends)
进入 ~/fnnas 根目录,在根目录下创建文件夹 fnnas-arm64 ,并上传 FnNAS 镜像文件 ( 如:fnos_arm_1.0.0_258.img ) 到 ~/fnnas/fnnas-arm64 目录里。
进入 ~/fnnas 根目录,然后运行 sudo ./renas -b s905x3 -k 6.12.63 命令即可生成指定 board 的 FnNAS 镜像文件。生成的文件保存在 ~/fnnas/out 目录里。
| 参数 | 含义 | 说明 |
|---|---|---|
| -b | Board | 指定需要编译的设备代号。例如,-b s905x3 表示编译代号为 s905x3 的设备,多个设备可用下划线连接,如 -b s905x3_s905d。特殊值:all 表示编译全部设备,first50 表示编译设备库中的前 50 个,range50_100 表示从第 51 个开始至第 100 个,range100_150 表示从第 101 个开始至第 150 个,last20 表示最后的 20 个。设备代号列表详见 model_database.conf 中的 BOARD 配置项。默认值为 all |
| -r | KernelRepo | 指定 github.com 内核仓库的 。默认值:ophub/fnnas |
| -k | Kernel | 指定 kernel 名称,如 -k 6.12.63 。多个内核使用 _ 进行连接,如 -k 6.12.63_6.18.3 。 |
| -a | AutoKernel | 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 6.12.63 的同系列是否有更新的版本,如有 6.12.63 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true |
| -s | Size | 对系统的镜像分区大小(单位:MiB)进行设置,只设置 ROOTFS 分区大小时可以只指定一个数值,例如: -s 6144。需要同时设置 BOOTFS 和 ROOTFS 分区大小时,使用 / 对两个数值进行连接,例如: -s 512/6144。默认值:512/6144 |
| -e | RootfsExpand | 设置系统根分区自动扩容大小(单位:GiB)。默认值:16 |
| -n | BuilderName | 设置 FnNAS 系统构建者签名。设置签名时请勿包含空格。默认值:无 |
sudo ./renas : 使用默认配置,对全部型号的电视盒子进行打包。sudo ./renas -b s905x3 -k 6.12.63 : 推荐使用. 使用默认配置进行相关内核打包。sudo ./renas -b s905x3 -k 6.12.y : 使用默认配置进行相关内核打包,内核使用 6.12.y 系列的最新版。sudo ./renas -b s905x3_s905d -k 6.12.63_6.18.3 : 使用默认配置,进行多个内核同时打包。使用 _ 进行多内核参数连接。sudo ./renas -b s905x3 -k 6.12.63 -s 6144 : 使用默认配置,指定一个内核,一个型号进行打包,系统大小设定为 6144 MiB。sudo ./renas -b s905x3_s905d 使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用 _ 进行多型号连接。sudo ./renas -k 6.12.63_6.18.3 : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。sudo ./renas -k 6.12.63_6.18.3 -a true : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。自动升级到同系列最新内核。sudo ./renas -b s905x3 -e 32 : 使用默认配置,指定打包 s905x3 的固件,系统根分区自动扩容大小设定为 32 GiB。关于 Workflows 文件的配置在 .github/workflows 文件里。
在 Actions 页面里选择 Build FnNAS Image 即可使用 build-fnnas-image.yml 进行编译。点击 Run workflow 按钮即可编译。在选项面板里,可以在 Custom fnnas image download url 里设置 FnNAS 镜像文件的路径,例如: https://fnnas.com/.../fnos_arm_1.0.0_258.img.xz 等网络下载地址,如果不设置,将默认使用 fnnas_base_image 里保存的官方镜像进行编译。
- name: Build FnNAS Image
uses: ophub/fnnas@main
with:
build_target: fnnas
fnnas_path: fnnas/*.img.xz
fnnas_board: s905d_s905x3_s922x_s905x
fnnas_kernel: 6.12.y
rootfs_expand: 16
相关参数与本地打包命令相对应,请参考上面的说明。
| 参数 | 默认值 | 说明 |
|---|---|---|
| fnnas_path | 无 | 设置官方 Arm64 原版 FnNAS 镜像文件的路径,支持使用当前工作流中的文件路径如 fnnas/*.img.xz ,也支持使用网络下载地址如: https://fnnas.com/.../fnos_arm_1.0.0_258.img.xz |
| fnnas_board | all | 设置打包盒子的 board ,功能参考 -b |
| kernel_repo | ophub/fnnas | 指定 github.com 内核仓库的 ,功能参考 -r |
| fnnas_kernel | 6.12.y | 设置内核 版本,功能参考 -k |
| auto_kernel | true | 设置是否自动采用同系列最新版本内核,功能参考 -a |
| fnnas_size | 512/6144 | 设置系统 BOOTFS 和 ROOTFS 分区的大小,功能参考 -s |
| rootfs_expand | 16 | 设置系统根分区自动扩容大小,功能参考 -e |
| builder_name | 无 | 设置 FnNAS 系统构建者签名,功能参考 -n |
| 参数 | 含义 | 说明 |
|---|---|---|
| -r | debs_repo | 指定 github.com 的 debs 内核仓库的 。默认值:ophub/fnnas |
| -e | debs_install | 设置是否安装官方提供的不同平台的 debs 格式内核包。选项:amlogic / rockchip / allwinner / none。默认值:none |
| -t | dtbs_install | 设置是否补充安装官方没有的 dtbs 文件。可选项 true / false。默认值:true |
| -k | dtbs_version | 指定 kernel 名称,如 -k 6.12.63 。默认值:6.12.y |
sudo ./rekernel : 使用默认配置。不安装 dtbs 包也不补充 dtbs文件,把当前 fnnas 镜像里的内核进行打包。sudo ./rekernel -e amlogic : 先把 amlogic 的 debs 内核包安装到当前系统里,然后在进行内核打包。sudo ./rekernel -t true : 先把官方没有的 dtbs 文件补充安装到当前系统里,然后在进行内核打包。sudo ./rekernel -e allwinner -t false : 先把 allwinner 的 debs 内核包安装到当前系统里,不补充安装 dtbs 文件,然后进行内核打包。飞牛专用内核的编译方法详见 build-fnnas-kernel.yml 的说明。
- name: Build FnNAS Kernel
uses: ophub/fnnas@main
with:
build_target: kernel
fnnas_path: fnnas/*.img
debs_repo: ophub/fnnas
dtbs_install: true
dtbs_version: 6.12.y
相关参数与本地打包命令相对应,请参考上面的说明。
| 参数 | 默认值 | 说明 |
|---|---|---|
| fnnas_path | 无 | 设置官方 Arm64 原版 FnNAS 镜像文件的路径。 |
| debs_repo | ophub/fnnas | 指定 github.com 的 debs 内核仓库的 ,功能参考 -r |
| debs_install | none | 设置是否安装官方提供的不同平台的 debs 格式内核包。功能参考 -e |
| dtbs_install | true | 设置是否补充安装官方没有的 dtbs 文件。功能参考 -t |
| dtbs_version | 6.12.y | 设置内核版本号。功能参考 -k |
飞牛镜像和内核使用的输出参数一样。
上传到 Releases 需要给仓库设置 Workflow 读写权限,详见使用说明。
| 参数 | 默认值 | 说明 |
|---|---|---|
${{ env.PACKAGED_OUTPUTPATH }} |
fnnas/out | FnNAS 系统和内核文件输出路径 |
${{ env.PACKAGED_OUTPUTDATE }} |
04.13.1058 | 打包日期(月.日.时分) |
${{ env.PACKAGED_STATUS }} |
success | 打包状态:success / failure |
首先感谢 coolsnowwolf 和 unifreq 等大佬对本项目适配 FnNAS 提供的技术指导,同时感谢众多 贡献者 对 Armbian/OpenWrt 系统提供的支持,这个项目在适配 FnNAS 的过程中直接继承和使用了这些项目的资源和技术方案。感谢各位的贡献和分享,让我们可以在更多盒子里使用 FnNAS 系统。
本系统所使用的 u-boot, kernel 和 firmware 等资源主要从 unifreq/openwrt_packit 的项目中复制而来,部分文件由用户在 amlogic-s9xxx-armbian / amlogic-s9xxx-openwrt / fnnas / luci-app-amlogic / kernel / u-boot 等项目的 Pull 和 Issues 中提供分享。为感谢这些开拓者和分享者,我统一在 CONTRIBUTORS.md 中进行了记录。再次感谢大家为盒子赋予了新的生命和意义。
Armbian 系统,在支持 FnNAS 的相关设备中同样适用。OpenWrt 系统,在支持 FnNAS 的相关设备中同样适用。OpenWrt 系统,属于盒子圈的标杆,推荐使用。The fnnas © OPHUB is licensed under GPL-2.0