给垃圾平板“一生E本” 装新系统—————Armbian 编译 KYX T7Y (RK3326) 踩坑全记录

📅2026/7/14 4:19:10 👁️次浏览
给垃圾平板“一生E本” 装新系统—————Armbian 编译 KYX T7Y (RK3326) 踩坑全记录
一、项目背景一生E本 E30 搭载瑞芯微RK3326芯片四核 Cortex-A35ARM64原厂系统为锁定版 Android。目标是通过社区移植的 KYX T7Y Armbian 适配仓库编译出可刷入的 Linux 镜像。为什么选择 KYX T7YKYX T7Y 与 E30 同为 RK3326 平台社区已有完整的设备树、U-Boot 补丁和内核配置相比 Odroid Go Advance 镜像屏幕适配概率更高二、环境准备2.1 下载源码# KYX T7Y 适配层补丁仓库 git clone https://github.com/lovely-him/armbian_build_add_KYX_T7Y.git Armbian 构建主仓国内网络极慢需代理 原版 GitHub 速度 10-20 KB/s几乎不可用 git clone --depth 1 https://github.com/armbian/build.git armbian-build网络问题: GitHub 裸连速度 10 KB/s阿里云镜像站失效Gitee 需要登录。解决: Windows 端开启 FLClash 代理WSL 通过nameserverIP 走代理export https_proxyhttp://$(cat /etc/resolv.conf | grep nameserver | awk {print $2}):7890⚠️ FLClash 默认 HTTP 端口 7890但 WSL 访问 Windows 本地服务时 IP 会变化需确认实际监听地址。三、Bug 全记录按出现顺序Bug 1: 换行符 CRLF 问题 现象:/usr/bin/env: bash : No such file or directory compile.sh: line 9: $\r: command not found原因: Windows 下载的仓库所有.sh文件使用 CRLF (\r\n) 换行Linux 只认 LF (\n)。修复:# 单文件修复 sed -i s/\r$// compile.sh 批量修复但后面发现子目录进不去见 Bug 3 find . -type f -name *.sh -exec sed -i s/\r$// {} Bug 2: 禁止 root 运行 现象:[|] PROBLEM: dont run ./compile.sh as root or with sudo [|] Exiting in 10 seconds原因: Armbian 构建系统强制检查非 root 用户设计上避免构建过程中权限混乱。修复:# 创建普通用户 useradd -m -s /bin/bash armbian passwd armbian 赋予 sudo 权限编译需要 echo armbian ALL(ALL) NOPASSWD:ALL /etc/sudoers.d/armbian chmod 440 /etc/sudoers.d/armbian 切换用户 su - armbianBug 3: 权限 denied核心阻塞点现象:find: /home/armbian/armbian-build/lib/functions/compilation: Permission denied find: /home/armbian/armbian-build/config/cli/noble/debootstrap: Permission denied # ... 数十个类似错误根因分析:/root下的原文件权限为drwx------(700)仅 root 可访问cp -r复制时保留原权限armbian 用户无法进入这些子目录find chmod因无法进入子目录而失败形成死锁错误尝试:# ❌ 失败find 本身进不去目录 find ~/armbian-build -name *.sh -exec chmod x {} ❌ 失败子目录权限未改 chmod -R 755 /home/armbian/armbian-build正确修复需 root 执行:# 必须在复制前修改原文件权限 chmod -R 777 /root/armbian-build chmod -R 777 /root/armbian_build_add_KYX_T7Y 删除已复制的损坏目录 rm -rf /home/armbian/armbian-build /home/armbian/armbian_build_add_KYX_T7Y 重新复制此时权限已放开 cp -r /root/armbian-build /home/armbian/ cp -r /root/armbian_build_add_KYX_T7Y /home/armbian/ 修正属主 chown -R armbian:armbian /home/armbian/armbian-build /home/armbian/armbian_build_add_KYX_T7Y关键教训:cp -r默认保留权限跨用户复制前必须用chmod -R放开原目录。Bug 4: setup-link.sh 软链接指向错误现象:./setup-link.sh: line 14: cd: /root/armbian-build: No such file or directory原因: 之前git clone时手误输入armbian-buil少了d目录名不匹配。修复: 统一使用~/armbian-build路径删除错误目录重新克隆。Bug 5: ZIP 文件损坏现象:unzip: cannot find zipfile directory in one of armbian-build.zip原因: 代理下载中断ZIP 文件不完整仅 632KB实际应数十 MB。解决: 放弃 ZIP改用 Windows 端git clone后通过 WSL 挂载访问。四、正确构建流程整理后# Step 1: root 下准备源码 # 下载 KYX T7Y 适配层 git clone https://github.com/lovely-him/armbian_build_add_KYX_T7Y.git 下载 Armbian 主仓需代理或 Windows 端下载 git clone --depth 1 https://github.com/armbian/build.git armbian-build Step 2: 修复权限关键 chmod -R 777 /root/armbian-build /root/armbian_build_add_KYX_T7Y Step 3: 创建用户并复制 useradd -m -s /bin/bash armbian passwd armbian echo armbian ALL(ALL) NOPASSWD:ALL /etc/sudoers.d/armbian cp -r /root/armbian-build /home/armbian/ cp -r /root/armbian_build_add_KYX_T7Y /home/armbian/ chown -R armbian:armbian /home/armbian/armbian-build /home/armbian/armbian_build_add_KYX_T7Y Step 4: armbian 用户下编译 su - armbian cd ~/armbian_build_add_KYX_T7Y ./setup-link.sh ~/armbian-build cd ~/armbian-build ./compile.sh kyx-t7y build五、尚未解决的问题问题状态编译是否成功⏳ 权限修复后未继续屏幕驱动适配⏳ KYX T7Y 屏幕参数可能与 E30 不同WiFi/蓝牙固件⏳ RTL8723DS 固件已包含但需验证刷入 E30 后启动⏳ 需进 Maskrom 模式刷机测试六、关键经验总结WSL 权限陷阱: Windows 下载的仓库 → WSL 使用cp -r会保留 700 权限跨用户必崩CRLF 灾难: Windows Git 默认core.autocrlftrue拉下来的.sh全是 CRLFArmbian 非 root 强制: 设计上禁止 root提前创建用户避免中断代理配置: WSL 访问 Windows 代理需用nameserverIP而非127.0.0.1下一步: 按上述正确流程重新执行观察编译输出解决可能的依赖缺失问题。本文记录真实踩坑过程欢迎 RK3326 玩家交流。七、更多踩坑细节与解决方案Bug 6: enable_extension 重复可用 —— 最隐蔽的坑现象:[|] Exiting with error 17 [ at .../extensions.sh:1 enable_extension() -- .../extensions.sh:1 source() -- .../rockchip64_common.inc:9根因分析:你的rockchip-rk3326.conf里已经启用了enable_extension rkbin-upstream-rk3326但rockchip64_common.inc第 9 行会启用rkbin-tools日志里出现了诡异的一行] |] Enabling extension [ rkbin-tools anywhere - called by .../codebr/ rkbin-tools 后面没有 ]而是换行来了个 anywhere真相:rockchip64_common.inc这个.inc文件也有CRLFenable_extension收到的扩展名变成了rkbin-tools\r函数内部找不到这个扩展于是报错退出。修复:# 必须扩大范围把 .inc 和 .conf 也一起修 find ~/armbian-build -type f \( -name *.sh -o -name *.inc -o -name *.conf \) \ -exec sed -i s/\r$// {} 这是整个调试过程中最关键的一步。如果只看.sh你永远找不到这个 bug。Bug 7: Git TLS 握手失败现象:fatal: unable to access https://github.com/...: gnutls_handshake() failed: The TLS connection was non-properly terminated.原因: WSL2 访问 Windows 主机的 FLClash 代理时TLS 握手不稳定时通时不通。修复: 放弃在 WSL 里直接git clone改为Windows 下载 → 复制到 WSL。# Windows PowerShell 里 cd C:\Users\17379\Downloads curl.exe -L -o rkbin.zip https://github.com/rockchip-linux/rkbin/archive/refs/heads/master.zip Expand-Archive -Path rkbin.zip -DestinationPath .# WSL 里 cp -r /mnt/c/Users/17379/Downloads/rkbin-master ~/armbian-build/cache/sources/rkbin-upstream⚠️注意: PowerShell 里的curl是Invoke-WebRequest的别名参数语法完全不同。必须用curl.exe带.exeBug 8: WSL2 终端 UTF-8 警告现象:[|] Problem detected [ WSL2 Terminal does not support UTF-8 ] [|] Exiting in 10 seconds [ Press Ctrl-C to abort, Enter to ignore and continue ]处理: 直接按Enter忽略即可。脚本会继续执行。如果嫌烦可以预先设置 localeexport LANGC.UTF-8 export LC_ALLC.UTF-8八、一键修复脚本备用如果你也遇到了类似问题可以在root下执行这个脚本#!/bin/bash # 修复权限 CRLF 复制到 armbian 用户 1. 修复 CRLF扩大范围 find /root/armbian-build -type f ( -name .sh -o -name .inc -o -name *.conf ) -exec sed -i s/\r$// {} 2. 放开权限 chmod -R 777 /root/armbian-build chmod -R 777 /root/armbian_build_add_KYX_T7Y 3. 清理并复制 rm -rf /home/armbian/armbian-build /home/armbian/armbian_build_add_KYX_T7Y cp -r /root/armbian-build /home/armbian/ cp -r /root/armbian_build_add_KYX_T7Y /home/armbian/ 4. 改属主 chown -R armbian:armbian /home/armbian/armbian-build /home/armbian/armbian_build_add_KYX_T7Y echo Done. Now run: su - armbian九、最终经验总结CRLF 是 WSL 编译的万恶之源。不要只修.sh.inc、.conf、甚至.cmd都可能被 bashsource。权限问题要追溯到复制链。cp -r保留权限chown之前先chmod。代理不稳定时Windows 下载 WSL 挂载是最佳绕过方案。/mnt/c/就是 WSL 的救命稻草。PowerShell 的curl不是 curl。永远用curl.exe。Armbian 的enable_extension报错 17优先检查 CRLF。日志里扩展名后面多了换行或就是\r在作祟。祝编译顺利少踩坑多产出