当前位置: 首页 > news >正文

为电视盒子注入新生命: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智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

http://www.jsqmd.com/news/298953/

相关文章:

  • 中核集团为什么排央企第一名?因为有实力
  • javascript之for循环
  • javascript之for...in
  • TB372FC原厂刷机包免费下载_CN_ZUI_15
  • 2026年国内有实力的投影机出租厂家哪家好,12000流明投影机/投影机出租/城墙投影机,投影机出租销售厂家排行榜
  • 2025年国内诚信的电感单双编码器厂商排行,减速器/摆线轴承减速器/定制化无框电机,电感单双编码器公司哪家好
  • STM32 HAL库 BMP280气压计读取
  • 计算机大数据毕业设计Python+多模态大模型股票行情预测 量化交易分析 LLM大模型 机器学习 深度学习
  • Java毕设项目:基于springboot的人脸识别员工考勤管理系统(源码+文档,讲解、调试运行,定制等)
  • 计算机毕业设计PyFlink+PySpark+Hadoop+Hive物流预测系统 物流数据分析可视化 物流爬虫 大数据毕业设计 Spark Hive 深度学习 机器学习(源码+文档+PPT+讲解)
  • C语言笔试易错点复盘:从底层原理看细节
  • 34.合并 K 个升序链表
  • 网页版射击游戏:无限弹药升级枪械
  • 2026年市面上有名的铝门窗定制选哪家,铝门窗/窗纱一体铝门窗/侧压平移推拉窗/门窗/推拉窗,铝门窗生产厂家排行榜
  • 分布式计算深度解析:从理论到实践的技术探索 - 教程
  • 人格的三重博弈:弗洛伊德人格结构理论解析
  • 全网最全8个一键生成论文工具,专科生轻松搞定毕业论文!
  • linux du command parallel
  • 一个月玩转物联网MQTT(杂记篇一)
  • TB370FU原厂刷机包免费下载_CN_ZUI_15
  • 机器缩容要注意哪些问题
  • web3基础概念与实际意义
  • AT_abc442 - crazy-
  • AT_abc329_f Colored Ball - crazy-
  • 【计算机毕业设计案例】基于springboot的社区居民健康管理系统(程序+文档+讲解+定制)
  • FastAPI系列(09):文件上传
  • 7款AI论文写作工具实测:轻松搞定毕业论文,自动匹配真实参考文献!
  • 【机器学习深度学习】强化学习与监督学习SFT、RL、RLHF、PPO、DPO - 实践
  • 2026年塑石假山修建优质厂家推荐指南
  • 闲置携程任我行礼品卡回收变现,认准京顺回收