View Chinese description | 查看中文说明
FnNAS is an operating system deeply customized based on the latest Linux kernel (Debian distribution). It boasts powerful hardware compatibility, perfectly supporting mainstream x86 and Arm64 devices, allowing users to freely assemble a NAS and flexibly expand external storage. Now, you can easily replace the Android TV system of your TV box with FnNAS, transforming it into a powerful private data storage server.
This project benefits from the hard work of numerous contributors. Under the guidance of official technical experts from FnNAS, we have built an FnNAS system specifically adapted for Arm64 devices, covering Amlogic, Rockchip, and Allwinner architecture TV boxes. The build version fully inherits the official system features, perfectly supporting functions like writing to eMMC boot and online kernel updates. Please visit the Releases page to download the latest firmware. Everyone is welcome to Fork this project for personalized customization. If you find this project helpful, please click the Star ⭐ in the upper right corner of the repository to show your support!
| System Name | Default Account | Default Password | SSH Port | IP Address |
|---|---|---|---|---|
| 🛜 FnNAS.OS | Custom | Custom | 22 | Get IP from Router |
| 🐋 FnNAS.Docker | Custom | Custom | 22 | Host IP |
⬆️ Models for each platform (Amlogic/Rockchip/Allwinner) are arranged by SoC performance from high to low.
Tip
Currently, s905 boxes can only be used from TF/SD/USB, while other box models support writing to eMMC. For more information, please check the ✅Supported Device List Instructions. You can refer to section 12.15 of the documentation for methods on adding new supported devices.
Select the FnNAS system corresponding to your box model. View the corresponding instructions for different device usage.
-
For
Rockchipplatforms, please refer to Chapter 8 of the documentation for installation methods, which are the same as Armbian installation. -
For
AmlogicandAllwinnerplatforms, use tools like Rufus or balenaEtcher to write the system to a USB drive, then insert the prepared USB drive into the box. Check your router for a new device named 'debian' and find its IP address (e.g.,192.168.1.15). Access http://192.168.1.15:5666 via a browser to enter the FnNAS account creation interface. After creating a custom account and logging into the FnNAS system, enable SSH inSystem Settings→SSH. Then use an SSH connection tool to enter the system terminal and enter the command:
fnnas-install| Optional | Default | Options | Description |
|---|---|---|---|
| -m | no | yes/no | Use mainline u-boot |
| -a | yes | yes/no | Use ampart partition adjustment tool |
| -l | no | yes/no | Show full device list |
Example: fnnas-install -m yes -a no
Login to FnNAS system SSH terminal → Enter command:
fnnas-update| Optional | Default | Options | Description |
|---|---|---|---|
| -r | ophub/kernel | <owner>/<repo> |
Set the repository to download the kernel from github.com |
| -u | Automation | stable/flippy/beta/rk3588/rk35xx/h6 | Set the tags suffix of the kernel in use |
| -k | Latest version | Kernel version | Set the kernel version |
| -b | yes | yes/no | Automatically back up the current system's kernel when updating the kernel |
| -m | no | yes/no | Use mainline u-boot |
| -s | None | None/DiskName | [SOS] Restore the system kernel in eMMC/NVMe/sdX and other disks |
| -h | None | None | View help |
Example: fnnas-update -k 6.12.63 -u stable
When specifying the kernel version number via the -k parameter, you can specify the exact version number, e.g., fnnas-update -k 6.12.63, or vaguely specify the kernel series, e.g., fnnas-update -k 6.12. When vaguely specified, the latest version of the specified series will be used automatically.
When updating the kernel, the currently used kernel will be automatically backed up in the /ddbr/backup directory. The last 3 used kernel versions are retained. If the newly installed kernel is unstable, you can restore to the backed-up kernel at any time. If a kernel update failure causes the system to fail to boot, you can restore the system kernel via fnnas-update -s.
If you feel that the current box memory is insufficient when using memory-intensive applications like docker, you can create a swap virtual memory partition to use a certain amount of disk space as memory. The unit for the input parameter in the command below is GB, defaulting to 1.
Login to FnNAS system SSH terminal → Enter command:
fnnas-swap 1Login to FnNAS system SSH terminal → Enter command:
fnnas-openvfdDebug according to the LED Screen Display Control Instructions.
Supports backing up/restoring the box's eMMC partition on TF/SD/USB. It is recommended that you backup the Android TV system that comes with the current box before installing the FnNAS system on a brand new box, so that it can be used later when restoring the TV system.
Please boot the FnNAS system from TF/SD/USB → Enter command.
fnnas-ddbrEnter b according to the prompt to back up the system, and enter r to restore the system.
Important
Additionally, you can use the flashing method to flash the Android system into eMMC. The Android system download images can be found in Tools.
To update all service scripts in the local system to the latest version, login to FnNAS system SSH terminal → Enter command:
fnnas-sync-
Clone the repository locally:
git clone --depth 1 https://github.com/ophub/fnnas.git -
Install necessary packages (e.g., 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)-
Enter the
~/fnnasroot directory, create a folder namedfnnas-arm64in the root directory, and upload the FnNAS image file (e.g.,fnos_arm_1.0.0_258.img) to the~/fnnas/fnnas-arm64directory. -
Enter the
~/fnnasroot directory, then run the sudo./renas -b s905x3 -k 6.12.63command to generate the FnNAS image file for the specified board. The generated files are saved in the~/fnnas/outdirectory.
| Parameter | Meaning | Description |
|---|---|---|
| -b | Board | Specifies the device code to be compiled. For example, -b s905x3 means compiling the device with code s905x3. Multiple devices can be connected with _, such as -b s905x3_s905d. Special values: all means compile all devices, first50 means compile the first 50 in the device library, from50 means start from the 51st to the last, last20 means the last 20. Device code lists are detailed in the BOARD configuration item in model_database.conf. Default value: all |
| -r | KernelRepo | Specifies the <owner>/<repo> of the github.com kernel repository. Default value: ophub/kernel |
| -u | kernelUsage | Set the tags suffix of the kernel used, such as stable, flippy, beta. Default value: stable |
| -k | Kernel | Specify kernel name, such as -k 6.6.12. Connect multiple kernels with _, such as -k 6.12.63_6.18.3. The kernel version freely specified by the -k parameter is only valid for kernels using stable/flippy/beta. Other kernel series such as rk3588 / rk35xx / h6 can only use specific kernels. |
| -a | AutoKernel | Sets whether to automatically adopt the latest version of the kernel in the same series. When set to true, it will automatically check the kernel library for a newer version of the kernel specified in -k, such as 6.12.63. If there is a newer version after 6.12.63, it will automatically switch to the latest version. When set to false, the specified version kernel will be compiled. Default value: true |
| -s | Size | Set the size(Unit: MiB) of the system's image partitions. When setting only the ROOTFS partition size, you can specify a single value, for example: -s 6144. When setting both BOOTFS and ROOTFS partition sizes, use / to connect the two values, for example: -s 512/6144. The default value is 512/6144 |
| -n | BuilderName | Set the Armbian system builder signature. Do not include spaces when setting the signature. Default value: None |
sudo ./renas: Use default configuration to package forallmodels of TV boxes.sudo ./renas -b s905x3 -k 6.12.63: Recommended. Use default configuration for packaging with relevant kernel.sudo ./renas -b s905x3 -k 6.12.y: Use default configuration for packaging, using the latest version of the 6.12.y series kernel.sudo ./renas -b s905x3_s905d -k 6.12.63_6.18.3: Use default configuration to package multiple kernels simultaneously. Use_to connect multi-kernel parameters.sudo ./renas -b s905x3 -k 6.12.63 -s 6144: Use default configuration, specify one kernel and one model for packaging, system size set to6144MiB.sudo ./renas -b s905x3_s905d: Use default configuration to package all kernels for multiple models of TV boxes, use_to connect multiple models.sudo ./renas -k 6.12.63_6.18.3: Use default configuration, specify multiple kernels to package for all models of TV boxes, kernel packages connected with_.sudo ./renas -k 6.12.63_6.18.3 -a true: Use default configuration, specify multiple kernels to package for all models of TV boxes, kernel packages connected with_. Automatically upgrade to the latest kernel of the same series.
-
Workflow configuration files are located in .github/workflows.
-
Select
Build FnNASon the Actions page to compile using build-fnnas-using-official-image.yml. Click theRun workflowbutton to compile. In the options panel, you can set the FnNAS image file path inSet fnnas image file path, e.g.,https://fnnas.com/.../fnos_arm_1.0.0_258.img.xzor other network download addresses. If not set, the official image saved in ophub/fnnas will be used by default.
- name: Build FnNAS
uses: ophub/fnnas@main
with:
fnnas_path: fnnas/*.img.xz
fnnas_board: s905d_s905x3_s922x_s905x
fnnas_kernel: 6.12.yThe related parameters correspond to the local packaging command, please refer to the above description.
| Parameter | Default | Description |
|---|---|---|
| fnnas_path | None | Set the path of the official Arm64 original FnNAS image file. Supports using file paths in the current workflow like fnnas/*.img.xz, and also supports network download addresses like: https://fnnas.com/.../fnos_arm_1.0.0_258.img.xz |
| fnnas_board | all | Set the board for packaging boxes. Function refers to -b |
| kernel_repo | ophub/kernel | Specify the <owner>/<repo> of the github.com kernel repository. Function refers to -r |
| kernel_usage | stable | Set the tags suffix of the kernel used. Function refers to -u |
| fnnas_kernel | 6.12.y | Set the version of the kernel. Function refers to -k |
| auto_kernel | true | Set whether to automatically adopt the latest version of the kernel in the same series. Function refers to -a |
| fnnas_size | 512/6144 | Set the size of the system BOOTFS and ROOTFS partitions. Function refers to -s |
| builder_name | None | Set the FnNAS system builder signature. Function refers to -n |
Uploading to Releases requires setting Workflow Read and Write permissions for the repository. See Usage Instructions for details
| Parameter | Default | Description |
|---|---|---|
${{ env.PACKAGED_OUTPUTPATH }} |
out | FnNAS system files output path |
${{ env.PACKAGED_OUTPUTDATE }} |
04.13.1058 | Packaging date (month.day.hourminute) |
${{ env.PACKAGED_STATUS }} |
success | Packaging status: success / failure |
For kernel compilation methods, see the instructions in compile-kernel. The kernel used is common with the kernel used in Armbian/OpenWrt systems.
- name: Compile the kernel
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 6.12.y
kernel_auto: true
kernel_sign: -yournameFirst of all, thanks to experts like coolsnowwolf and unifreq for providing technical guidance on adapting this project for FnNAS. Also, thanks to the numerous contributors for their support of the Armbian/OpenWrt systems. This project directly inherited and used the resources and technical solutions of these projects during the adaptation process for FnNAS. Thank you all for your contributions and sharing, allowing us to use the FnNAS system on more boxes.
The u-boot, kernel and firmware resources used in this system are mainly copied from the unifreq/openwrt_packit project. Some files are provided and shared by users in Pull and Issues of projects like amlogic-s9xxx-armbian / amlogic-s9xxx-openwrt / fnnas / luci-app-amlogic / kernel / u-boot. To thank these pioneers and sharers, I have recorded them uniformly in CONTRIBUTORS.md. Thank you again for giving new life and meaning to the boxes.
- The amlogic-s9xxx-armbian project provides the
Armbiansystem for use in boxes, which is also applicable to relevant devices supporting FnNAS. - The amlogic-s9xxx-openwrt project provides the
OpenWrtsystem for use in boxes, which is also applicable to relevant devices supporting FnNAS. - unifreq has created
OpenWrtsystems for more boxes such as Amlogic, Rockchip, and Allwinner. It is a benchmark in the TV box community and is recommended for use. - cooip-jm shared many usage methods for applications like Armbian, OpenWrt, lxc, docker, AdGuard, etc., in his wiki, which is recommended for learning.
The fnnas © OPHUB is licensed under GPL-2.0
