news 2026/6/23 19:11:19

为电视盒子注入新生命:Armbian S9xxx 构建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为电视盒子注入新生命:Armbian S9xxx 构建指南

Armbian / 岸边

Armbian(中文名:岸边)系统是基于 Debian/Ubuntu 而构建的专门用于 ARM 芯片的轻量级 Linux 系统。Armbian 系统精益、干净,并且 100% 兼容并继承了 Debian/Ubuntu 系统的功能和丰富的软件生态,可以安全稳定地运行在 TF/SD/USB 及设备的 eMMC 里。这个项目保留了 Armbian 官方系统的完整性,并进一步拓展了在电视盒子等一些非官方支持设备上的使用,增加了一些便捷操作指令。现在你可以将电视盒子的安卓 TV 系统更换为 Armbian 系统,让他成为一台功能强大的服务器。

本项目依托众多的贡献者,为AmlogicRockchipAllwinner盒子构建 Armbian 系统,支持写入 eMMC 中使用,支持更新内核等功能。最新的 Armbian 系统可以在 Releases 中下载。欢迎Fork并进行个性化定制。如果对你有用,可以点仓库右上角的Star表示支持。

Armbian 系统默认信息

系统名称默认账号默认密码SSH 端口IP 地址
🐧 Armbian.OSroot123422从路由器获取 IP
🐋 Armbian.Dockerroot123422静态 MacVLAN IP

功能特性

  • 广泛设备支持:为 Amlogic(如 S922X, A311D)、Rockchip(如 RK3588)和 Allwinner 等系列的大量电视盒子提供官方级的 Armbian 系统支持。
  • 灵活安装:支持将系统写入 TF/SD/USB 设备运行,也支持一键安装至设备的 eMMC 存储中,释放全部性能。
  • 内核可定制:提供便捷的内核编译和更新脚本,允许用户自定义内核版本、应用补丁或调整配置,打造个性化系统。
  • 便捷软件管理:集成 Armbian 软件中心,提供 Docker、Portainer、Transmission、Jellyfin 等常用软件的一键安装、更新和卸载功能。
  • 硬件适配增强:包含针对特定设备的实用脚本,例如 SATA 硬盘活动状态 LED 指示、CPU 风扇智能调速、LED 屏幕显示控制等。
  • 多途径构建:支持通过 GitHub Actions 在线自动编译,也支持在 Ubuntu 或 Armbian 系统本地进行编译,方便开发者和高级用户。
  • Docker 容器化:提供制作和运行 Armbian Docker 镜像的方法,便于在容器环境中部署和使用。

安装指南

系统要求

  • 编译环境:Ubuntu 系统(如 24.04)或已安装的 Armbian 系统,需要安装必要的编译工具链和依赖包。
  • 目标设备:列表中支持的 Amlogic、Rockchip 或 Allwinner 电视盒子。
  • 存储设备:用于制作启动盘的 TF/SD 卡或 U 盘(建议 8GB 以上)。

安装步骤

  1. 获取系统镜像
    从项目的 Releases 页面下载对应你设备型号的 Armbian 系统镜像文件(.img.xz格式)。

  2. 写入存储设备
    使用balenaEtcherRufusdd命令将下载的镜像文件解压并写入到 TF/SD 卡或 U 盘中。

  3. 启动设备

    • 将写入镜像的存储设备插入电视盒子。
    • 对于 Amlogic 设备,通常需要使用牙签等工具按住设备上的复位键再上电,进入刷机模式。
    • 设备将从存储卡启动,首次启动会进行系统初始化,根据提示设置 root 密码和新用户(可选)。
  4. 安装至 eMMC(可选但推荐)
    系统启动并登录后,在终端中执行以下命令,即可将系统从外部存储设备安装到盒子的内部 eMMC 存储中,以获得更好的性能和稳定性。

    armbian-install

    根据脚本提示选择设备型号和安装选项。安装完成后,关机并拔掉外部启动盘,此后设备将从 eMMC 启动。

使用说明

基础操作

系统默认 SSH 开启,您可以通过ssh root@<设备IP>并使用默认密码1234登录进行管理。

更新内核

系统提供了便捷的内核更新命令armbian-update。你也可以使用armbian-kernel命令在本地编译自定义内核。

# 更新到指定版本内核armbian-update5.15.100

安装软件

通过 Armbian 软件中心,可以轻松安装各类应用。例如安装 Docker 和 Portainer:

# 安装 Dockerarmbian-softwareinstall101# 安装 Portainer 容器管理界面armbian-softwareinstall102

软件 ID 与对应关系可在armbian-software列表中查询。

编译自定义内核

如果你需要特定功能的内核,可以在 Armbian 系统内进行本地编译。

  1. 更新编译环境:
    armbian-kernel -u
  2. 编译指定版本内核(例如 5.15.100):
    armbian-kernel -k5.15.100
  3. 编译完成的内核文件将保存在/opt/kernel/compile-kernel/output目录中,可用于安装或分享。

核心代码

以下是项目中几个关键功能脚本的节选,展示了其实现思路:

1. SATA 硬盘活动 LED 监控脚本 (用于 WXY-OES 设备)
这个脚本监控 SATA 端口状态,并控制对应的 LED 灯来指示硬盘活动。

#!/bin/bash# 脚本用途: 监控 WXY-OES(A311d) 设备 SATA 端口的硬盘活动,并根据硬盘的存在与否控制对应的LED灯。# 通用版本: 可自动适应 Armbian 和 OpenWrt 系统# 定义3个SATA端口到LED设备文件的映射declare-APORT_LED_MAP=(["ata1"]="/sys/class/leds/green:disk/brightness"["ata2"]="/sys/class/leds/green:disk_1/brightness"["ata3"]="/sys/class/leds/green:disk_2/brightness")# 获取当前所有活动的SATA端口ID (例如 ata1, ata2, ata3)get_active_ata_ids(){find/sys/class/block/sd* -exec readlink -f{}+2>/dev/null|grep-o'ata[0-9]\+'|sort-u||true}# 初始化:获取启动时活动端口,并设置LED初始状态ACTIVE_PORTS_AT_BOOT=$(get_active_ata_ids)echo"开机时检测到的活动端口:${ACTIVE_PORTS_AT_BOOT}"forportin"${!PORT_LED_MAP[@]}";doinitial_state=0ifecho"${ACTIVE_PORTS_AT_BOOT}"|grep-q -x"${port}";theninitial_state=1echo" - 端口${port}检测到活动设备,将点亮LED。"elseecho" - 端口${port}未检测到活动设备,将熄灭LED。"filed_file="${PORT_LED_MAP[${port}]}"if[[-w"${led_file}"]];thenecho"${initial_state}">"${led_file}"fidone# 持续监听内核日志,动态响应SATA链接状态变化echo"持续监听SATA硬盘状态..."tail-F /var/log/kern.log2>/dev/null|whileread-r line;doport=""new_value=""# 使用正则匹配内核日志中的SATA状态事件if[["${line}"=~(ata[0-9]+):[[:space:]]SATA[[:space:]]link[[:space:]](up|down)]];thenport="${BASH_REMATCH[1]}"[["${BASH_REMATCH[2]}"=="up"]]&&new_value=1||new_value=0# ... 根据状态更新对应的LEDfidone

2. 智能风扇调速脚本 (用于我家云等设备)
此脚本根据 CPU 温度和硬盘工作状态,智能调节风扇转速,平衡散热与噪音。

#!/usr/bin/perl# 根据F大脚本修改 by Ran# 脚本逻辑:根据CPU温度、硬盘待机状态,动态调整风扇转速。# 目标:低温停转保护风扇,中低速运行降低噪音,高温全速保障散热。# 获取所有硬盘设备名称,用于判断硬盘活动状态my@disks=bsd_glob("/dev/sd[a-z]");# @disks = ("/dev/sdb"); # 若已知内置硬盘设备名,可指定# @disks = ("0"); # 若无内置机械硬盘,使用此设置# 参数调整区my$speed_min=8;# 最小PWM占空比,避免风扇停转死区my$speed_max=99;# 最大PWM占空比useconstant temp_low_high=>50;# 硬盘待机时,CPU低于此温度风扇停转useconstant temp_low_low=>38;# 硬盘未待机时,CPU低于此温度风扇停转useconstant temp_fanOn_high=>65;# 硬盘待机时,CPU高于此温度风扇启动useconstant temp_fanOn_low=>55;# 硬盘未待机时,CPU高于此温度风扇启动# 核心控制逻辑:读取温度,判断硬盘状态,计算并设置风扇速度while(1){my$cpu_temp=`cat /sys/devices/virtual/thermal/thermal_zone0/temp`;$cpu_temp=int($cpu_temp/1000);# 转换为摄氏度my$hd_standby=1;# 默认假设硬盘待机foreachmy$disk(@disks){# 通过 smartctl 命令检查硬盘是否待机if(`smartctl -i -n standby $disk 2>/dev/null`=~/ACTIVE or IDLE/){$hd_standby=0;last;# 发现活动硬盘}}# 根据硬盘状态选择温度阈值my($temp_low,$temp_fanOn)=$hd_standby?(temp_low_high,temp_fanOn_high):(temp_low_low,temp_fanOn_low);my$speed=0;if($cpu_temp>=$temp_fanOn){# 温度高于启动阈值,开始调速$speed=int((($cpu_temp-$temp_fanOn)/(75-$temp_fanOn))*($speed_max-$speed_min)+$speed_min);$speed=$speed_maxif$speed>$speed_max;$speed=$speed_minif$speed<$speed_min;}elsif($cpu_temp<=$temp_low){$speed=0;# 温度低于停转阈值,关闭风扇}# 将计算出的速度值写入 PWM 控制文件`echo $speed > /sys/class/pwm/pwmchip0/pwm0/duty_cycle`if$speed>=0;sleep10;# 每10秒检测一次}

3. Armbian Docker 容器启动脚本
此脚本用于初始化 Armbian Docker 容器内的服务,并以 SSH 守护进程作为前台主进程。

#!/bin/bash# Description: Custom startup script for Armbian Docker container.# 尝试启动 Nginx 服务(如果存在)start_nginx_service(){echo"[SETUP] Checking for and attempting to start Nginx service..."if!command-v nginx>/dev/null2>&1;thenecho"[INFO] Nginx not found, skipping."returnfi# 测试 Nginx 配置并尝试启动ifnginx -t;thenecho"[INFO] Nginx configuration test passed."nginx||echo"[WARNING] Failed to start Nginx daemon, but script will continue."elseecho"[ERROR] Nginx configuration test failed! Nginx will not be started."fi}# 其他初始化任务占位other_initialization(){echo"[SETUP] Performing other initialization tasks..."# 可以在此处添加其他必要的命令,例如复制网站代码# cp -rf /path/to/website_code /var/www/html/myblog}echo"Container Initialization Started..."start_nginx_service other_initialization# 启动主前台进程,保持容器运行echo"Initialization Complete. Starting Main Process..."ifcommand-v sshd>/dev/null2>&1;thenecho"[RUN] Starting SSHD as the main process..."mkdir-p /var/run/sshd# 使用 exec 替换当前脚本进程,使 sshd 成为 PID 1exec/usr/sbin/sshd -Delse# 备用方案:如果未安装 sshd,则保持容器存活用于调试echo"[RUN] FATAL: sshd command not found."echo"[RUN] Starting 'tail -f /dev/null' to keep the container alive for debugging."exectail-f /dev/nullfi

这些代码片段体现了本项目在硬件适配、资源管理和容器化方面的核心工作,通过自动化脚本极大简化了电视盒子上运行完整 Linux 系统的复杂性。
159uF4GEN8bRmexJ0gu3k6mEuy98urpX+qaQMiXroOHDGGxFc42iQ8Dc8oLperAE
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 19:07:47

STM32 HAL库 BMP280气压计读取

BMP280 是一款由博世&#xff08;Bosch&#xff09;推出的高精度气压和温度传感器模块&#xff0c;常用于气象监测、高度计、无人机等应用。 工作电压&#xff1a;模块通常支持 3.3V–5.5V 供电&#xff08;部分资料指出芯片本身为 1.71V–3.6V&#xff0c;但模块已集成电平转换…

作者头像 李华
网站建设 2026/6/20 17:21:14

全网最全8个一键生成论文工具,专科生轻松搞定毕业论文!

全网最全8个一键生成论文工具&#xff0c;专科生轻松搞定毕业论文&#xff01; AI 工具让论文写作不再难 随着人工智能技术的不断发展&#xff0c;越来越多的专科生开始借助 AI 工具来完成毕业论文的撰写。这些工具不仅能够有效降低 AIGC 率&#xff0c;还能在保持语义通顺的…

作者头像 李华
网站建设 2026/6/20 16:58:40

Git行尾符战争:如何彻底解决CRLF与LF的跨平台噩梦

目录 前言1 问题现象&#xff1a;那些令人困惑的Git警告1.1 典型的警告信息1.2 相关错误现象 2 问题本质&#xff1a;CRLF与LF的历史渊源2.1 技术背景解析2.2 Git的智能处理机制2.3 核心配置参数&#xff1a;core.autocrlf 3 根本原因&#xff1a;为什么会出现这个问题&#xf…

作者头像 李华
网站建设 2026/6/23 14:11:21

做久坐提醒+拉伸指导工具,设定工作时长,久坐超一小时自动提醒,推送三分钟简易拉伸动作(图文步骤),记录每日拉伸次数。

1. 实际应用场景描述 在现代办公环境中&#xff0c;许多白领、程序员、设计师等长时间坐在电脑前工作&#xff0c;容易导致&#xff1a; - 颈椎、腰椎问题 - 血液循环不畅 - 精神疲劳 虽然知道要活动&#xff0c;但往往忘记或拖延。 本工具适用于办公室、居家办公、学生自习等…

作者头像 李华