感谢ophub大佬!分享一些关于晶晨amlogic盒子刷Armbian的奇怪但很可能有用的知识 · Issue #491 · ophub/amlogic

您所在的位置:网站首页 armbian安装vnc 感谢ophub大佬!分享一些关于晶晨amlogic盒子刷Armbian的奇怪但很可能有用的知识 · Issue #491 · ophub/amlogic

感谢ophub大佬!分享一些关于晶晨amlogic盒子刷Armbian的奇怪但很可能有用的知识 · Issue #491 · ophub/amlogic

2023-04-01 04:07| 来源: 网络整理| 查看: 265

这段时间折腾魔百盒,花了不少时间找各种文章看,也踩了不少坑,感觉有必要总结一下,对于还在迷茫的同学应该可以有些帮助。错误之处请大家指正!

首先,大写的“乱”字!不但是盒子硬件乱(同一个型号有多个版本而且没有文档说明的硬件)、软件乱(不同的安卓线刷包卡刷包差异很大、armbian版本众多),而且最坑人的是文章乱,很多文章作者自己根本没搞清楚、可能到处找教程各种试偶然刷成功了写个教程,却丢失或甚至故意隐瞒一些重要信息。。。反正是坑人没商量。 最恶心的是大量质量低劣的所谓教程,作者还当作独家秘笈遮遮掩掩的不痛快说,甚至有的还想靠它赚钱。。。

由于乱,所以对于绝大多数想刷机的同学来说也就只能“试”,但是试的过程中如果能加上思考和分析,肯定可以避免一些坑。

关于镜像,对于同样的armbian系统版本和内核版本针对不同机型的镜像,99%以上的内容都是相同的。区别主要是对于启动的配置信息。所以可以随便下载,并且无论哪个镜像,直接启动安装的成功率都不高,大多数情况下都需要调整设置。甚至用于allwinner、rockchip的镜像,和amlogic的镜像也没有多大区别,因为内核和各种二进制文件对于arm都是通用的(现在主流是64位的是armv8),就像微软的windows可以同时用于intel和amd一样。

第一个关键点是dtb文件,这东西类似于x86平台上bios(cmos)中的硬件配置信息。这个没选对的话启动成功的可能性会很小,即使启动了也容易报错死机。dtb和内核版本相关,一般都是随着内核编译的(或者说内核源码包含dtb的源码)。不过一般都可以跨版本使用,有一定的后向前向兼容性。网上现成的dtb有时候不太好用,所以玩这些东西迟早要学会自己编辑源码自己编译。

第二个关键,也是最大的坑,就是u-boot。和常见的x86电脑不同,armbian启动靠的就是这个(已经是嵌入式Linux事实上的标准了)。 这东西和内核的关系很密切,而且是整个armbian安装过程中最难最坑人的地方,必须选对才行。 先不展开,记住主要用的较新的可分为两种:完整版(大多数文章作者包括ophub大佬有时不太准确地称之为主线mainline)和不完整版(也叫overload、chainload)。 从版本新旧上来说,更正确一点的说法:主线指的是比较新的版本、非主线是很旧的版本(具体分界点在哪儿我也不知道);主线又分为完整版和不完整版(参考那个著名的e900v22c教程)。

第三个关键,内核。版本众多,更新快。这里分成两大类:

5.10+(也就是5.10及以上的版本,但不包含5.15);现在最新的已经到了6.x; 5.9-,也就是5.9及以下版本,包括5.15;现在流行的最低版本是5.4。 安卓也是拿linux改的,但内核版本都比较低,好像没超过4.x? 为啥5.15这么另类?经O大指点,这里的5.15内核原来是f大修改过的,不用新版-主线-uboot就可以启动的

内核和u-boot的关系,笼统地说,5.10+内核必须用主线uboot引导。换个说法,旧版uboot无法用于引导5.10+内核。反过来,旧版uboot只能用于引导5.9-内核;而主线uboot则可以用于引导4.16+版本的内核。

armbian能顺利启动,内核和uboot的组合正确是必要条件(当然正确的dtb也是必要条件)。和内核可以适用于大多数arm不同,uboot和具体机型(硬件)又紧密相关,同一个cpu的都很少能互换,甚至两个同型号的盒子都不能通用。

还得回来说uboot。看过第4点估计就有人有疑问了:既然主线uboot那么好,干脆就只用主线不就好啦?道理上是没错,但前提是你得先能够找到正确的好用的主线uboot! 不像内核是完全开源的,好找,即使找不到逼急了自己编译都行。而uboot则不一样,只有一部分是开源的,晶晨把着很关键的一部分死活不开源(这一点allwinner和rockchip值得表扬)。所以amlogic盒子找到好用的主线uboot,尤其是完整版主线uboot,那么可以说人品爆棚,成功也就剩下具体的安装动作了。 好用的完整版主线u-boot属于可遇而不可求的珍品,除非有大神正好使用和你一样的盒子并且制作了这个珍品,抑或你自己就是大神自己会制作(可别不学好小家子气,放出来让大家共享)。

有这个珍品的情况下,启动过程简洁而迅速:

完整主线uboot=>任意4.16+内核

没有好用的完整版主线u-boot的情况下,写入emmc时不写bootloader就成了明智的选择(无奈的选择)。 但是5.10+内核又必须由主线uboot引导,怎么办?答案就是overload机制,就是把不完整版主线uboot文件拷贝到boot分区,改名为u-boot.ext(U盘)或u-boot.emmc(emmc)。

启动过程:

安卓uboot=>不完整版主线uboot(又叫overload)=>5.10+内核; 5.10+内核必须由主线uboot引导;有的uboot搭配部分版本内核有开机拿不到IP的问题(已有解决方案,见https://github.com/ophub/amlogic-s9xxx-armbian/issues/557);

关于不完整版主线uboot,个人感觉chainload一词比overload更准确一点;

安卓uboot=>5.9-内核(包括修改版5.15); 有时会不认网卡、内存只能认一半(好像5.15.60解决了这一顽疾);如果没有问题,这应该是没有主线(无论完整版还是不完整版)的情况下的最佳方案。

如果有不认网卡内存认一半或1G的问题,那么解决方法就是加上overload,即:

安卓uboot=>不完整版主线uboot(又叫overload)=>4.16+~5.9-(含修改版5.15)内核;

换个角度:完整版主线uboot是利用dd命令写入到emmc的bootloader区域(开头部分)的;而不完整版主线uboot是存放在boot分区文件系统里的u-boot.emmc(emmc)或u-boot.ext(U盘)的、用cp/mv命令拷贝改名的文件。 什么?文件也可以用dd命令?您是大神!不过我得问问到底是啥好吃的让您给撑成这样?

理论说完了,具体该怎么干呢?我的建议是只能试着挑选,过程中如果有TTL会更加直观、高效: 先拿U盘试,用5.15内核,不要overload,通过修改uEnv.txt然后重启挨个试出最合适的dtb。 确定合适dtb后,再逐个测试uboot; 把候选uboot逐个改名为u-boot.ext、重启,观察TTL。直到找出启动最顺畅最没问题的那个。 这一步可以用5.10+内核,也可以用5.9-内核。 如果没有合适的完整版主线u-boot,那就老老实实用5.9/5.15内核吧。 如果现成的不合适,编辑/etc/amlogic_model_database.conf,加一行,把选出来的dtb和不完整版主线uboot写上; 完整版主线uboot那个字段写NA。 写入emmc,选自己知道正确的编号。因为指明了没有完整版主线uboot,所以不会写入bootloader。不放心的话加no。 如果有不认网卡、内存少一半的情况,在emmc的启动分区添加u-boot.emmc(overload)。 完整版主线uboot怎么试? 只能冒着变砖的风险写入emmc的bootloader区域,把emmc内原有的版本较低的安卓uboot覆盖掉。 不成功便成仁,大不了重新线刷救砖而已。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3