假期第三天,也是最后一天了,手头没设备可玩,那就水一期吧。简单给大家讲讲怎么更换飞牛 ARM 镜像里的 dtb,以及顺手改一改 fnenv。本教程仅适用于以下用户,请务必仔细对号入座,并对自己的设备负责。
因操作不当导致设备变砖,概不负责(真的不背锅)~
1️⃣ 飞牛尚未对你的 ARM 设备进行官方适配,但存在同款处理器的其他已适配设备
例如:NanoPC T4 使用的是 RK3399,已获得官方适配,而我手头只有 TVI3315A,同样搭载 RK3399,但并未被官方支持。
2️⃣ 设备厂商未对 U-Boot 进行上锁,可正常刷写通用镜像
wxy就是个例子,本教程不涉及他们的设备。
3️⃣ 你的设备在网上已有成熟的刷机与适配方案可供参考
例如:Armbian 、debian等第三方系统已经对你的设备或同平台 SoC 做过完整适配,这意味着硬件本身不存在“无解”的兼容问题。
什么是dtb/env
自从飞牛 ARM 公测以来,dtb 和 fnEnv 这两个名词或多或少都进入了大家的视线。各种帖子、教程里,几乎到处都能看到“换 dtb”“改 fnEnv”。
那问题来了:
👉 这俩到底是干啥用的?为什么大家都在改?
我觉得在继续后面的教程之前,有必要先简单给大家介绍一下。了解清楚它们的作用,再去动手操作,不仅不容易翻车,你也会更明白自己到底改了什么、为什么要这么改。
DTB(Device Tree Blob) 是 Linux 系统中用于描述硬件信息的一个二进制文件,主要在 ARM / RISC-V 等嵌入式平台上使用。
说人话就是,dtb 就是告诉内核:你这台设备长什么样,有什么硬件(CPU 类型和核心数、内存大小、各类外设、网卡、USB 等)。再打个比方,它就像你的简历一样,每个人的简历各不相同,所以,不同的设备,也会有不同的 dtb。
那什么是 fnEnv.txt 呢?这个名词是飞牛自己修改过的,其他设备上也会有不同的叫法,比如 uEnv.txt、boot.env,但本质上是一样的。它决定了系统怎么启动、用哪个内核、加载哪个 dtb、启动参数是什么,在 env 里,常见可以修改的内容包括:从哪个分区启动、加载哪个 dtb 文件 等。
总结一句话
dtb 决定“硬件是什么”,env 决定“系统怎么启动”
所以呀,不同的设备,就需要使用对应的 dtb,同时,还需要在 fnEnv 文件 里进行修改,让系统在启动时去正确读取这个 dtb 文件。你修改后设备启动不起来,原因可能是dtb不对,或者env中启动分区设置错误。
正戏开始
dtb部分
使用DiskGenius专业版,打开你的镜像,非专业版修改不了img镜像

点击boot分区-浏览文件

我们主要看两个地方,一个是dtb文件夹,还有一个是fnEnv(也有的叫uEnv)
点开dtb里面的文件夹,可以看到当前img下包含的所有dtb文件,如果这里面有你的设备,那么恭喜你,不需要到其他地方去找dtb

如果你的运气不好,飞牛没有内置你的dtb文件,那么你可以去armbian官网,或者恩山等论坛去找对应型号的dtb,这边分享一个网友提供rk3399的网址,如果大家有知道其他可以下载dtb的地方,也可以评论区分享出来:
https://github.com/Lemon1151/rk33xx-armbian/tree/main/build-armbian/armbian-files/platform-files/rockchip/bootfs/dtb/rockchip找到之后,在dtb目录下,右键选择复制文件到当前分区,把dtb上传进来

fnEnv部分
处理完dtb,返回boot分区,右键fnenv.txt,导出到桌面或者任意文件

打开它,让我们看看长什么样子

正常我们只需修改fdt最后一部分,也就是你的dtb文件名,其他的除非你知道你在做什么,否则不建议改,修改后用同样的方法,导入dtb目录中。
写入镜像
修改完成后,我们选择关闭镜像

然后根据你的CPU品牌,选择晶晨或者瑞芯微的刷机工具进行刷机即可,教程不一样就不单独发了,本文重点在于修改dtb、env文件。
网友心得,可参考

重点再次提醒!!
1、WXY 等 BOOT 上锁的设备请不要轻易尝试。
2、修改 dtb 等操作时,一定要以和你设备相同 CPU 平台的官方适配包为基础来进行。
简单说就是:
你是 晶晨系列,就拿 N1 的包来改
你是 RK 系列,就拿 友善的包来改
跨平台、乱套用,一旦变砖,只能自认倒霉,本文概不负责 😄
评论区