其他的 s905 设备应该是一样的方法:
Image Image Image
🛠️ 第一步:环境准备与分区
先刷入 Armbian 作为跳板,目的是利用其自带的脚本完成 eMMC 分区。
执行 Armbian 写入: 运行 armbian-install,在选择文件系统时务必选择 btrfs。
手动格式化分区:
mkfs.fat /dev/mmcblk2p1
mkfs.btrfs /dev/mmcblk2p2
写入镜像: 断电,将 fnOS 镜像写入 U 盘,插上 U 盘启动。
💻 第二步:进入系统
进入 web 界面设置用户名和密码。
SSH 登录: ssh 用户名@ip地址。
切换 Root: 执行 sudo su 切换到 root 用户。
📂 第三步:拷贝文件
将 U 盘中的系统数据迁移至内置 eMMC:
Bash
同步根目录(排除动态目录)
rsync -aAXv –exclude={“/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/boot/“,”/vol00/“,”/run/“,”/mnt/“,”/media/*”,”/lost+found”} / /vol00/RemovableDisk_1/
同步引导目录
rsync -aAXv /boot /vol00/RemovableDisk/
🔑 第四步:重新指定 UUID
为了让系统从 eMMC 启动,需要更新挂载标识。
获取新分区 UUID:
lsblk /dev/mmcblk2p1 -o UUID
lsblk /dev/mmcblk2p2 -o UUID
Image
替换以下三个文件中的旧 UUID 为新 UUID:
/vol00/RemovableDisk/uEnv.txt
/vol00/RemovableDisk/extlinux/extlinux.conf
/vol00/RemovableDisk_1/etc/fstab (注意: fstab 有两个替换项目)
Image
重启进入系统: 执行 systemctl reboot -i 后重启。
⚡ 第五步:进阶修复
按照 @zys1310992814 的 issues/317 修改引导防止在不接 HDMI 的情况下出现内核恐慌。
引导参数补充
在 /boot/extlinux/extlinux.conf 和/boot/uEnv.txt这两个文件内加上启动参数: splash video=card0-HDMI-A-1:1920×1080@60e extraargs=fbcon=map:11
[!TIP] 更极端一点的方法是在 DTB 里把 vpu,cvbs-connector 和 hdmi-tx 状态设为 status = “disabled”;。
禁用显示辅助服务
执行以下命令关闭初始化小屏幕的服务(不接屏幕时该服务会导致内核异常):
systemctl disable trim_miniscreen
修复应用商店空白
手动强制写入正确的 device_id 并锁定权限:
echo -n 07f3e89c806148a1954a09dfd27f4b2f94f5ab80 > /etc/device_id
chmod 444 /etc/device_id
chattr +i /etc/device_id
创建自动检查脚本与服务
如果担心 ID 被重置,建议创建一个 30 分钟检查一次的计划任务。
创建脚本: sudo nano /usr/bin/changeid.sh
!/bin/bash
FILE_PATH=”/etc/device_id”
TARGET_ID=”07f3e89c806148a1954a09dfd27f4b2f94f5ab80″
解锁并检查 (tr过滤空字节)
chattr -i “$FILE_PATH” 2>/dev/null
if [ “$(cat $FILE_PATH 2>/dev/null | tr -d ‘\0’)” != “$TARGET_ID” ]; then
echo -n “$TARGET_ID” > “$FILE_PATH”
systemctl restart sysinfo_service.service trim_app_center.service trim_main.service
fi
chattr +i “$FILE_PATH”
创建服务: sudo nano /etc/systemd/system/changeid.service
[Unit]
Description=change Device ID Service
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/changeid.sh
[Install]
WantedBy=multi-user.target
创建定时器: sudo nano /etc/systemd/system/changeid.timer
[Unit]
Description=Run changeid every 30 mins
[Timer]
OnUnitActiveSec=30min
AccuracySec=1s
[Install]
WantedBy=timers.target
最后执行:systemctl daemon-reload && systemctl enable –now changeid.timer 即可。
Image
最后祝你刷机愉快哈哈!