一、项目背景
一生E本 E30 搭载瑞芯微 RK3326 芯片(四核 Cortex-A35,ARM64),原厂系统为锁定版 Android。目标是通过社区移植的 KYX T7Y Armbian 适配仓库,编译出可刷入的 Linux 镜像。
为什么选择 KYX T7Y?
- KYX T7Y 与 E30 同为 RK3326 平台
- 社区已有完整的设备树、U-Boot 补丁和内核配置
- 相比 Odroid Go Advance 镜像,屏幕适配概率更高
二、环境准备
2.1 下载源码
bash
# 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 通过 nameserver IP 走代理:
bash
export https_proxy=http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):7890
⚠️ FLClash 默认 HTTP 端口 7890,但 WSL 访问 Windows 本地服务时 IP 会变化,需确认实际监听地址。
三、Bug 全记录(按出现顺序)
Bug 1: 换行符 CRLF 问题 🔥🔥🔥
现象:
bash
/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)。
修复:
bash
# 单文件修复
sed -i 's/\r$//' compile.sh
批量修复(但后面发现子目录进不去,见 Bug 3)
find . -type f -name "*.sh" -exec sed -i 's/\r$//' {} +
Bug 2: 禁止 root 运行 🔥🔥
现象:
bash
[💲|💥] PROBLEM: don't run ./compile.sh as root or with sudo
[💲|💥] Exiting in 10 seconds
原因: Armbian 构建系统强制检查非 root 用户,设计上避免构建过程中权限混乱。
修复:
bash
# 创建普通用户
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 - armbian
Bug 3: 权限 denied(核心阻塞点)🔥🔥🔥🔥🔥
现象:
bash
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因无法进入子目录而失败,形成死锁
错误尝试:
bash
# ❌ 失败:find 本身进不去目录
find ~/armbian-build -name "*.sh" -exec chmod +x {} +
❌ 失败:子目录权限未改
chmod -R 755 /home/armbian/armbian-build
正确修复(需 root 执行):
bash
# 必须在复制前修改原文件权限
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 软链接指向错误
现象:
bash
./setup-link.sh: line 14: cd: /root/armbian-build: No such file or directory
原因 : 之前 git clone 时手误输入 armbian-buil(少了 d),目录名不匹配。
修复 : 统一使用 ~/armbian-build 路径,删除错误目录重新克隆。
Bug 5: ZIP 文件损坏
现象:
bash
unzip: cannot find zipfile directory in one of armbian-build.zip
原因: 代理下载中断,ZIP 文件不完整(仅 632KB,实际应数十 MB)。
解决 : 放弃 ZIP,改用 Windows 端 git clone 后通过 WSL 挂载访问。
四、正确构建流程(整理后)
bash
# ========== 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.autocrlf=true,拉下来的.sh全是 CRLF - Armbian 非 root 强制: 设计上禁止 root,提前创建用户避免中断
- 代理配置 : WSL 访问 Windows 代理需用
nameserverIP,而非127.0.0.1
📌 下一步: 按上述正确流程重新执行,观察编译输出,解决可能的依赖缺失问题。
本文记录真实踩坑过程,欢迎 RK3326 玩家交流。
七、更多踩坑细节与解决方案
Bug 6: enable_extension 重复可用 ------ 最隐蔽的坑
现象:
bash
[💲|💥] 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 ...</code><br/> rkbin-tools 后面没有 ],而是换行来了个 ' anywhere
真相 : rockchip64_common.inc 这个 .inc 文件也有 CRLF !enable_extension 收到的扩展名变成了 rkbin-tools\r,函数内部找不到这个扩展,于是报错退出。
修复:
bash
# 必须扩大范围,把 .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 握手失败
现象:
bash
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。
powershell
# 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 .
bash
# WSL 里
cp -r /mnt/c/Users/17379/Downloads/rkbin-master ~/armbian-build/cache/sources/rkbin-upstream
⚠️ 注意 : PowerShell 里的
curl是Invoke-WebRequest的别名,参数语法完全不同。必须用curl.exe(带.exe)!
Bug 8: WSL2 终端 UTF-8 警告
现象:
bash
[💲|💥] Problem detected [ WSL2 Terminal does not support UTF-8 ]
[💲|💥] Exiting in 10 seconds [ Press <Ctrl-C> to abort, <Enter> to ignore and continue ]
处理 : 直接按 Enter 忽略即可。脚本会继续执行。
如果嫌烦,可以预先设置 locale:
bash
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
八、一键修复脚本(备用)
如果你也遇到了类似问题,可以在 root 下执行这个脚本:
bash
#!/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在作祟。
祝编译顺利,少踩坑,多产出! 🚀