ophub / amlogic-s9xxx-armbian

Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CM311-1a-YST安卓分区不同,要修改armbian-install文件,不然写入emmc会BTRFS报错

MDCY9008 opened this issue · comments

BTRFS报错,是否与此贴中问题有关

Screenshots
image
image

Armbian Version
Kernel Version: 5.15.62
Release: jammy (8.26)
Edition: server

Device
SOC: 905l3a
Brand: 魔百盒
Model 311-1a yst

commented

感觉应该是类似的问题。

我现在手上两个盒子:m401a、cm311-1a,都是s905l3a 2+16;都采用btrfs,两个盒子的分区起始位置是一样的,m401a上dmesg没有错误,使用也从来没碰到过文件系统的问题。

cm311上用btrfs确实出过不少奇怪的问题(比如报错,导致部分软件无法安装升级),dmesg确实也显示不少btrfs错误。
如果用ext4,又会出现关机长时间断电后无法启动的问题(也很奇怪)。

commented

有请o大吧,感觉得调整分区布局。ext4冷机不启动的问题闹不好也是这个原因。

这是我根据那天o大给的文档整理的原安卓分区布局表等信息,兴许有用:
分区布局表.xlsx
安卓信息.zip

这是我反编译的安卓dts:
android.dts.zip

commented

错误是写入了不安全的分区造成的,说明这个盒子和s905l3a现在的分区设置不同

Amlogic新设备制作u-boot和dtb操作说明.docx
安卓分区布局表模板.xlsx

emmc里面先刷成安卓系统,再adb进去看

错误是写入了不安全的分区造成的,说明这个盒子和s905l3a现在的分区设置不同

Amlogic新设备制作u-boot和dtb操作说明.docx 安卓分区布局表模板.xlsx

emmc里面先刷成安卓系统,再adb进去看

上面那条回复,貌似已经有朋友操作过了,麻烦大佬过目一下。

commented

如果你分区表提取是正确的,这个盒子和之前开发测试文档提供的分区是不同的。

CM311-1a-YST 安卓分区表:
Snip20220827_2

s905l3a-b 2G/8G 安卓分区表:

Snip20220827_3

commented
    elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then
        BLANK1="68"
        BOOT="512"
        BLANK2="674"

BLANK1跳过68MB,有1024MB可以做boot分区,一般256就够了,写512吧。
1254MB后是可以区域,所以1254-68-256=674,所以BLANK2是674MB

你使用的dtb名字是啥呢?

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then
        BLANK1="68"
        BOOT="512"
        BLANK2="674"

修改armbian-install是吗,我试试看 谢谢了

commented

是的,把这个脚本里的值改下
要先还原成安卓系统,再这样写入才有效,因为之前你写入已经破坏了安卓部分分区信息了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then
        BLANK1="68"
        BOOT="512"
        BLANK2="674"

BLANK1跳过68MB,有1024MB可以做boot分区,一般256就够了,写512吧。 1254MB后是可以区域,所以1254-68-256=674,所以BLANK2是674MB

你使用的dtb名字是啥呢?

armbian dtb用的就是e900v22c的,安装脚本中选择的304

commented

你有cm311-1a的安卓img系统文件吗?发我一份下载地址,我备份下放到这:
https://github.com/ophub/kernel/releases/tag/tools
方便大家救砖还原系统使用
发网上下载链接,或者百度网盘地址等都可以

你有cm311-1a的安卓img系统文件吗?发我一份下载地址,我备份下放到这: https://github.com/ophub/kernel/releases/tag/tools 方便大家救砖还原系统使用

那些文件不是我发的,是xcray这位兄弟发的,我找一下他。

有请o大吧,感觉得调整分区布局。ext4冷机不启动的问题闹不好也是这个原因。

这是我根据那天o大给的文档整理的原安卓分区布局表等信息,兴许有用: 分区布局表.xlsx 安卓信息.zip

这是我反编译的安卓dts: android.dts.zip

兄弟,能提供一下安卓的线刷包吗,这条issue也麻烦过目一下,一起试试。

commented

你是在安卓系统里通过adb看的吧,要确保你的信息是正确的。
得找个差异值,在armbian-install里添加一个if判断,如果你使用的也是默认,不同盒子会刷坏的,很多人也看不到这个帖子。
也不知道其他的几个s905l3a是不是也有差异

commented

看来我得把f大的这个安卓分区表查看方法整成文档放到常用文档里,方便未知设备都自查一下,省的有误。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then
        BLANK1="68"
        BOOT="512"
        BLANK2="647"

BLANK1跳过68MB,有1024MB可以做boot分区,一般256就够了,写512吧。 1254MB后是可以区域,所以1254-68-256=647,所以BLANK2是647MB

你使用的dtb名字是啥呢?

如果boot给512的话是不是算错了,1254-68-512=674

commented

1254-68-512=674没错啊。
1254之后的都是rootfs,1254之前在安全区域写boot。

commented

你是在安卓系统里通过adb看的吧,要确保你的信息是正确的。 得找个差异值,在armbian-install里添加一个if判断,如果你使用的也是默认,不同盒子会刷坏的,很多人也看不到这个帖子。 也不知道其他的几个s905l3a是不是也有差异

我用的是这个线刷包:CM311-1a YST_安卓9-S905L3A没无线版沙发桌面线刷固件
下载链接:https://pan.baidu.com/s/1DwKAb-xe_cFnSdbfIoWlHQ 提取码:t8ym 备用链接:https://share.weiyun.com/H4x0ZZh1 密码:4ux4kk

不同线刷安卓包的分区不一样?

有朋友m401a盒子也用这个线刷包,是否意味着m401a能用的其它线刷包也可以给cm311使用?

commented

好多盒子互刷固件。
m401a的固件你有没,也发个链接,我都转存起来。
CM311-1a-YST, M401A, M411A, UNT403A, UNT413A这些,刷了不同的安卓系统,如果分区一致,armbian-install的写入分区大小可以通用,如果不一致,要区分修改。btrfs是一个比较敏感的文件系统格式,之前在n1里也出现这样的问题,比实际的安卓安全分区又向后移动了两次,扩大的更大了。
以上excel的区域是建议的最小区域,如果空间存足,可以再往后扩大点。

commented

好多盒子互刷固件。 m401a的固件你有没,也发个链接,我都转存起来。

m401a我用的就是e900v22c教程里的那个“1-b863av3.2-m-线刷包”。
线刷B863AV3.2M线刷包 https://pan.baidu.com/s/1hoNKp_ySXO10K1sm5PjAXg?pwd=eh3t 提取码:eh3t
教程里说先线刷、再卡刷,我没做后面的卡刷步骤。

cm311现在用的那个安卓线刷包,cache分区1024M,是否都可以给boot分区?反正不用白不用。。。

commented

线刷是用晶晨的工具刷img,这卡刷是什么操作?

commented

线刷是用晶晨的工具刷img,这卡刷是什么操作?

就是安卓系统内的升级,u盘里3个文件: factory_update_param.aml recovery.img update.zip

commented

看到了,谢谢,没升级安卓系统,学习了

我都转存到这里了:https://github.com/ophub/kernel/releases/tag/tools

看到了,谢谢,没升级安卓系统,学习了

我都转存到这里了:https://github.com/ophub/kernel/releases/tag/tools

https://www.aliyundrive.com/s/qrVaLvZ2Wci 这是我从PDD商家拿来的,自带root,我看了下分区表除了data分区大小不一样,其他分区都相同,应该和跳过多少M没关系。

commented

你的阿里云地址打不开。和哪个相同?之前armbian-install里的还是今天xcray发的?

你的阿里云地址打不开

image
怪了 xcray发的分区表 除了data其他都一样

你的阿里云地址打不开。和哪个相同?之前armbian-install里的还是今天xcray发的?

https://cloud.189.cn/t/UV7vm2ZNzANf (访问码:p7fz) 这个呢

好多盒子互刷固件。 m401a的固件你有没,也发个链接,我都转存起来。 CM311-1a-YST, M401A, M411A, UNT403A, UNT413A这些,刷了不同的安卓系统,如果分区一致,armbian-install的写入分区大小可以通用,如果不一致,要区分修改。btrfs是一个比较敏感的文件系统格式,之前在n1里也出现这样的问题,比实际的安卓安全分区又向后移动了两次,扩大的更大了。 以上excel的区域是建议的最小区域,如果空间存足,可以再往后扩大点。

大佬,如果我用armbian-ddbr备份一下安卓,可以免去线刷吗,后续升级系统还需要回到安卓,重新刷机吗?
我把BLANK1改为168,BLANK2是不是就不需要在修改了,相当于整体后移100MB。

commented

如果系统是正常状态,你可以在USB中启动armbian系统,把你备份的文件放在armbian系统的/ddbr目录下,根据提示进行安卓系统恢复,结果和线刷一样。

但是如果armbian系统因操作不当,导致无法从usb系统启动,就需要通过线刷工具还原安卓系统,通过短接,强制进入线刷模式,把img格式的安卓镜像刷回去,还原成原版的安卓系统。在测试期间,也是需要这样多次还原安卓系统,确保安卓分区是原版的。

一般来说armbian-ddbr恢复系统要近1个小时的时间,而线刷工具几分钟就可以刷完。

如果系统是正常状态,你可以在USB中启动armbian系统,把你备份的文件放在armbian系统的/ddbr目录下,根据提示进行安卓系统恢复,结果和线刷一样。

但是如果armbian系统因操作不当,导致无法从usb系统启动,就需要通过线刷工具还原安卓系统,通过短接,强制进入线刷模式,把img格式的安卓镜像刷回去,还原成原版的安卓系统。在测试期间,也是需要这样多次还原安卓系统,确保安卓分区是原版的。

一般来说armbian-ddbr恢复系统要近1个小时的时间,而线刷工具几分钟就可以刷完。

BLANK1="168" BOOT="512" BLANK2="674" 改成这样,确实不报错了。剩下的就是armbian-install对这款机器if判断了。

commented

这么来看,找一个cache分区放在后面的能用的安卓固件,就可以维持原来的分区布局了?
现在的这个布局,rootfs小了不少,boot分区虽然可以大到1G,但多出来的空间又不太方便使用。

另外,o大,我突然意识到之前m401盒子的分区布局也不太对头:
我用了主线u-boot,按说不需要再跳过570M了呀?可是我看盒子上的分区,boot的开始扇区还是1167360,root在boot后面。
看了下脚本,好像没有根据有没有主线采用不同的分区布局?

我的两个cm311盒子在刷入8.26日的固件后无法重启,输入reboot后btrfs开始报错刷屏,然后任何键盘输入失去响应,大概要等15分钟才会重启
image

我的两个cm311盒子在刷入8.26日的固件后无法重启,输入reboot后btrfs开始报错刷屏,然后任何键盘输入失去响应,大概要等15分钟才会重启 image

看下这条issue之前的回复,我的解决了,都是关联性问题。

我的两个cm311盒子在刷入8.26日的固件后无法重启,输入reboot后btrfs开始报错刷屏,然后任何键盘输入失去响应,大概要等15分钟才会重启 image

看下这条issue之前的回复,我的解决了,都是关联性问题。

我现在尝试下,方案是先线刷回安卓,然后U盘引导系统,修改/usr/sbin下的armbian-install参数
elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then
BLANK1="68"
BOOT="512"
BLANK2="647"

我的两个cm311盒子在刷入8.26日的固件后无法重启,输入reboot后btrfs开始报错刷屏,然后任何键盘输入失去响应,大概要等15分钟才会重启 image

看下这条issue之前的回复,我的解决了,都是关联性问题。

我现在尝试下,方案是先线刷回安卓,然后U盘引导系统,修改/usr/sbin下的armbian-install参数 elif [[ "${AMLOGIC_SOC}" == "s905l3a" ]]; then BLANK1="68" BOOT="512" BLANK2="647"

最好多偏移一点,比较保险

commented

如果armbian-install的配置文件信息相同,目前只能在/etc/amlogic_model_database.conf里面加一个cm311的编号305,方便区分盒子,使用不同的分区。

之前的304这个值,是e900v22c和e900v22d两个盒子通用的分区表吧

image
image (1)

image

如果把304改了,按cm311也可以使用,就是多跳了几百mb,对这个盒子浪费了一些空间

commented

861222a
我单独添加了305给CM311盒子,以后这个设备用这个选项吧。

d77f1c0

我单独添加了305给CM311盒子,以后这个设备用这个选项吧。

应该是674 不是647吧

commented

对674更正了

对674更正了

好,我多偏移了100M,正正好好的还没试过,等刷机神器到了以后,有机会再试一下。
问题解决了,多谢了。

commented

多点好,上个月n1盒子也向后移了两次,共后移了100mb,到800才不报错稳定了。

17BF2CB8-2093-44AE-9233-6C129E624C56

commented

我试了个极端的:68、1024、162;原cache分区那块地方既然给不了root,就都给boot吧。回头再琢磨怎么用上(搞个swap文件?)

启动正常,dmesg没有错误了。

commented

好的👌那就先认为1254是安全点,以后还有机率发生,可以再后移一点

commented

也可以把s905l3a都改用cm311的方案,对e900v22c和e900v22d来说少了1254-570=684mb也没啥大问题

commented

可以整个文档,默认可以保守一点,想空间最大化的自己改参数

commented

cb9c42e
感谢你提供的重要信息,解决了这个设备btrfs分区下数据读写的错误,CM3111-1a获得了更稳定的使用体验。

commented

客气!应该感谢您o大,让这么个小盒子变得这么好玩。

顺便再请教一下,在使用完整版主线u-boot的情况下,BLANK1/BOOT/BLANK2是否就可以设置成4/256/0甚至4/128/0啦?这样rootfs空间就可以最大化了。

commented

对,有了完整主线,跳过前面的4mb即可,boot一般256就够了,其他soc的u-boot可以都删除掉再省点boot的空间

commented

是时候学习怎么制作u-boot了,不过好像还挺难的。。。

另外,m401a/cm311蓝牙功能已经完美,其它使用串口蓝牙芯片(尤其是realtek)的盒子也可以参考。

请o大考虑是否打包进去,另感觉可以请f大在dts里默认开启g12a盒子的uart_A了,串口蓝牙好像基本上都是用这个口。

commented

meson-g12a-s905l3a-e900v22c.dtb不支持蓝牙吧,我记得你好像是反编译添加的?找不到帖子了。

commented

https://github.com/unifreq/amlogic-boot-fip

https://github.com/unifreq/u-boot

制作u-boot用f大仓库的源码可以编译,从安卓系统提取出来acs.bin,放入他的源码编译。以前他在群里教过s905l3a这个盒子怎么制作,我看了半天他们聊天书,我在买了tx3后,他在适配的时候我也跟着学过,大半夜的一步一步指导我操作了一遍,但因为我完全没接触过,没完全学会。

commented

meson-g12a-s905l3a-e900v22c.dtb不支持蓝牙吧,我记得你好像是反编译添加的?找不到帖子了。

是的,原来的dtb不支持,需要修改dts源码,打开uart_A。然后还需要正确的蓝牙固件、芯片专用的rtk_hciattach(bluez自带的hciattach不支持realtek芯片),为了实现reboot时蓝牙芯片复位,还需要安装gpiod软件包。最后就是在合适的地方加入3条命令,以便在系统启动/关闭时自动执行(我只会在rc.local里加)。

帖子:#471

commented

https://github.com/unifreq/amlogic-boot-fip

https://github.com/unifreq/u-boot

制作u-boot用f大仓库的源码可以编译,从安卓系统提取出来acs.bin,放入他的源码编译。以前他在群里教过s905l3a这个盒子怎么制作,我看了半天他们聊天书,我在买了tx3后,他在适配的时候我也跟着学过,大半夜的一步一步指导我操作了一遍,但因为我完全没接触过,没完全学会。

f大的文档太珍稀了。。。我把安装的acs.bin已经提取出来,剩下的还一头雾水呢

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

commented

他写的少,但在群里教的多,很细致的一步一步都截图教的明明白白的。我外行一步一步跟着操作能走下去。

可能只有我这种外行才啰嗦着写了一些没用的说明文档,这些基本操作在专业人士面前都是小儿科基本功。

commented

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

commented

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

嗯,看来我之前猜的是对的,ext4启动失败(我碰到的情况是长时间断电后启动失败)果然也是分区的问题。

现在是不是就可以 armbian-install,不需要加no了?这样断网问题也能修复吗?

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

对的,到现在重启了4-6次都没有出现以前变砖的问题了,对于cm311来说今天的版本应该在系统运行方面已经完美了

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的。

你是在安卓系统里通过adb看的吧,要确保你的信息是正确的。 得找个差异值,在armbian-install里添加一个if判断,如果你使用的也是默认,不同盒子会刷坏的,很多人也看不到这个帖子。 也不知道其他的几个s905l3a是不是也有差异

我用的是这个线刷包:CM311-1a YST_安卓9-S905L3A没无线版沙发桌面线刷固件 下载链接:https://pan.baidu.com/s/1DwKAb-xe_cFnSdbfIoWlHQ 提取码:t8ym 备用链接:https://share.weiyun.com/H4x0ZZh1 密码:4ux4kk

不同线刷安卓包的分区不一样?

有朋友m401a盒子也用这个线刷包,是否意味着m401a能用的其它线刷包也可以给cm311使用?

刷不同固件分区不一样的,我的CM311-1a YST买来不是原版系统,但没adb,于是按网上教程卡刷了一个带adb的,不知道卡刷分区表有没有变,分区表reserved起始位置跟上面ophub提供的不一样,跟https://blog.csdn.net/ld_leon/article/details/125670744 这里是一样的,后来我拆机线刷了其他系统,分区表就完全变了,cache分区变大少了backup分区,但是mac、sn等都还是对的。

commented

根据自己的分区调整
如果线刷了不同的安卓系统,分区大小可能是不同的,根据12.10的方式自己确认一下比较好

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-docs/README.cn.md

commented

@MDCY9008

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的

他的分区是什么样的,盒子是cm311吗?

@MDCY9008

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的

他的分区是什么样的,盒子是cm311吗?

就是之前讨论的线刷包分区 311的

commented

103a7b9

BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"
commented

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的。

还是要看用的安卓底包的分区是什么样子,不太认同没有切实依据的试探性偏移。我只偏移了68M,boot分了1024M,用了这一天了,没有出任何问题。对了,我手上这个是YST YS(S)。
image

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的。

还是要看用的安卓底包的分区是什么样子。我只偏移了68M,boot分了1024M,用了这一天了,没有出任何问题。

安卓分区看过了,和你发的是一样的,感觉这盒子挺妖的,有些盒子在修复分区问题前都没报错,但是修复分区之后确实更加稳定了。

cm311救砖回安卓后重新使用新的分区表刷写ext4,重启四五次包括断电重启在我这里已经没有重启变砖的故障了,在这之前第二次重启可能就变砖了,还需要别的例子试试

是今天的新分区?用的305选项?

大佬 还需要多偏移一点,群里反馈还是会报错,我把blank1改成 168 还没报错,挺稳定的。

还是要看用的安卓底包的分区是什么样子。我只偏移了68M,boot分了1024M,用了这一天了,没有出任何问题。

安卓分区看过了,和你发的是一样的,感觉这盒子挺妖的,有些盒子在修复分区问题前都没报错,但是修复分区之后确实更加稳定了。

从型号上来看,盒子至少有ys(m)和ys(s)两种,之前刷的时候ysm直接可以304 install,yss则不行,更新后的系统没试。估计有不一样的地方。

有请o大吧,感觉得调整分区布局。ext4冷机不启动的问题闹不好也是这个原因。

这是我根据那天o大给的文档整理的原安卓分区布局表等信息,兴许有用: 分区布局表.xlsx 安卓信息.zip

这是我反编译的安卓dts: android.dts.zip

请问下这个dts是原版系统的导出的,还是刷入别的哪个功能正常安卓包的?

commented

有请o大吧,感觉得调整分区布局。ext4冷机不启动的问题闹不好也是这个原因。
这是我根据那天o大给的文档整理的原安卓分区布局表等信息,兴许有用: 分区布局表.xlsx 安卓信息.zip
这是我反编译的安卓dts: android.dts.zip

请问下这个dts是原版系统的导出的,还是刷入别的哪个功能正常安卓包的?

就没见过原版系统。。。就是前面说的那个线刷包

commented

帖子,一路追下来,我都快真迷糊了,我梳理一下CM311-1A的刷机流程是不是如下步骤。
1、线刷:CM311-1a_ss_new.exe
2、下载Armbian_22.08.0_Aml_s905l3a_jammy_5.15.62_server_2022.08.28.img.gz,让后写入U盘
3、电脑安装“开心电视助手”,开启U盘启动
4、插入U盘开机,执行 armbian-install 将 armbian写道 盒子内
5、有点疑问就是,Armbian_22.08.0_Aml_s905l3a_jammy_5.15.62_server_2022.08.28.img 这个固件是集成了蓝牙补丁吗?

103a7b9

BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"

不一定,你看我发的那个分区表,虽然分区个数和每个分区大小和你那个表一样,但是reserved分区起始位置不一样,并且每个分区之间有8M间隔,所以vendor起始位置到了1398,而168+512+674=1354在tee分区。
@xcray 你发的那个线刷包,你是勾上那两个选项后线刷的吗?想找个底包把分区改成你那样的,我的分区表太浪费了。

commented

103a7b9
BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"

不一定,你看我发的那个分区表,虽然分区个数和每个分区大小和你那个表一样,但是reserved分区起始位置不一样,并且每个分区之间有8M间隔,所以vendor起始位置到了1398,而168+512+674=1354在tee分区。 @xcray 你发的那个线刷包,你是勾上那两个选项后线刷的吗?想找个底包把分区改成你那样的,我的分区表太浪费了。

是的。并且我没想明白不勾那两个选项的话刷机的意义在哪里?

顺便说一下,我也不能理解多往后偏移100M的道理在哪儿?cache把开头100M留下?vendor也把开头100M留下?反而能理解rootfs再偏移320M把vendor分区完整的保留下来、甚至再加128M把odm分区也保留下来。对于留下某个分区的一部分的做法总觉得很奇怪

commented

https://github.com/ophub/kernel/releases/tag/tools

下载线刷固件,你刷这个看看分区:android_tv_cm311_1a_yst_s905l3a.tar.xz

103a7b9
BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"

不一定,你看我发的那个分区表,虽然分区个数和每个分区大小和你那个表一样,但是reserved分区起始位置不一样,并且每个分区之间有8M间隔,所以vendor起始位置到了1398,而168+512+674=1354在tee分区。 @xcray 你发的那个线刷包,你是勾上那两个选项后线刷的吗?想找个底包把分区改成你那样的,我的分区表太浪费了。

是的。并且我没想明白不勾那两个选项的话刷机的意义在哪里?

顺便说一下,我也不能理解多往后偏移100M的道理在哪儿?cache把开头100M留下?vendor也把开头100M留下?反而能理解rootfs再偏移320M把vendor分区完整的保留下来、甚至再加128M把odm分区也保留下来。对于留下某个分区的一部分的做法总觉得很奇怪

这盒子确实存在个体差异,偏移68MB在不同盒子上不一定就一定落在cache分区上,个人认为对于正式release的版本使用更加稳妥的方法比较合适,对于想要获得更多空间利用,并且了解armbian-install参数修改的朋友可以根据注释自行修改,其实多偏移100mb损失100m的rootfs空间对于很多用户其实没那么大的感知。

commented

这盒子确实存在个体差异,偏移68MB在不同盒子上不一定就一定落在cache分区上,个人认为对于正式release的版本使用更加稳妥的方法比较合适,对于想要获得更多空间利用,并且了解armbian-install参数修改的朋友可以根据注释自行修改,其实多偏移100mb损失100m的rootfs空间对于很多用户其实没那么大的感知。

“偏移68MB在不同盒子上不一定就一定落在cache分区上” 那是因为刷的安卓底包不一样吧?如果为了照顾未知的安卓底包,偏移多少才算合适?鬼知道还有哪些安卓底包的分区布局?

当然,偏移越多越有可能避开冲突,但这种方法总觉得不太好。不太接受这种拍脑袋的数字。

这盒子确实存在个体差异,偏移68MB在不同盒子上不一定就一定落在cache分区上,个人认为对于正式release的版本使用更加稳妥的方法比较合适,对于想要获得更多空间利用,并且了解armbian-install参数修改的朋友可以根据注释自行修改,其实多偏移100mb损失100m的rootfs空间对于很多用户其实没那么大的感知。

“偏移68MB在不同盒子上不一定就一定落在cache分区上” 那是因为刷的安卓底包不一样吧?如果为了照顾未知的安卓底包,偏移多少才算合适?鬼知道还有哪些安卓底包的分区布局?

当然,偏移越多越有可能避开冲突,但这种方法总觉得不太好。不太接受这种拍脑袋的数字。

我用的就是您发的线刷包做的测试,在多个盒子上确实表现不一样,我看flippy大佬对N1也做了两次偏移,这个偏移量貌似不能准确的计算出。

commented

我用的就是您发的线刷包做的测试,在多个盒子上确实表现不一样,我看flippy大佬对N1也做了两次偏移,这个偏移量貌似不能准确的计算出。

这么说的话,分区布局一样,但对于有的盒子那个cache分区就不是安全区域?Bootloader或者在启动过程中的其它程序还会对这个分区进行读写操作、并且大概率集中在前100M?虽然是同一个固件,但是在不同盒子上的行为不一样?

否则的话逻辑上说不通啊。

另外,多偏移的这100M,首先影响的是boot分区——如果之前没碰到启动的问题,那么boot分区就不需要挪动。其次还影响root分区——如果之前碰到了root分区的错误提示,那么就说明root分区应该再往后缩缩。
这东西逻辑就这么简单。boot和root同时往后挪、并且截断cache、vendor分区的做法依据不太充足。

@MDCY9008 你进安卓把每个分区start和size收集一下看看?

@MDCY9008 你进安卓把每个分区start和size收集一下看看?

看了下start和你发的是一样的。 @xcray reserved前空了一些区域,所以108MB这个位置是不是实际cache区域,而且每个分区都空了8mb,rootfs的位置也不一样。
@ophub 大佬,这样说是不是意味着单纯把各分区大小加起来不代表分区的精确位置,因为安卓分区之间可能存在空区域,还需要根据emmc的起始位置,才能精确判断。
image

commented

@MDCY9008 你进安卓把每个分区start和size收集一下看看?

看了下start和你发的是一样的。 @xcray reserved前空了一些区域,所以108MB这个位置是不是实际cache区域,而且每个分区都空了8mb,rootfs的位置也不一样。 @ophub 大佬,这样说是不是意味着单纯把各分区大小加起来不代表分区的精确位置,因为安卓分区之间可能存在空区域,还需要根据emmc的起始位置,才能精确判断。

这确实是个原来没认识到的新情况!填到那个表格里的数据显示,还有172M的空间没有分配。
原来假定各个分区是连续分布的,如果这172M并非连续存在于最后、而是分散在各个分区之间,那偏移量肯定得重新调整。
那个分析安卓分区布局的表格和思路也应该修正一下,要不还是只能拍脑袋试偏移多少合适。
f大他们群里说的偏移了两次,闹不好也是因为没有意识到每两个分区之间不连续这个问题。

还有一点没搞明白:安卓里mmcblk0的大小是15269888K,比16G(16777216K)少了一大块1472M。

@MDCY9008 你进安卓把每个分区start和size收集一下看看?

看了下start和你发的是一样的。 @xcray reserved前空了一些区域,所以108MB这个位置是不是实际cache区域,而且每个分区都空了8mb,rootfs的位置也不一样。 @ophub 大佬,这样说是不是意味着单纯把各分区大小加起来不代表分区的精确位置,因为安卓分区之间可能存在空区域,还需要根据emmc的起始位置,才能精确判断。

这确实是个原来没认识到的新情况!填到那个表格里的数据显示,还有172M的空间没有分配。 原来假定各个分区是连续分布的,如果这172M并非连续存在于最后、而是分散在各个分区之间,那偏移量肯定得重新调整。

还有一点没搞明白:安卓里mmcblk0的大小是15269888K,比16G(16777216K)少了一大块1472M。

这应该正常的,我的16g sd卡也差不多是14.6g,都是会少一些的。

elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
    BLANK1="108"
    BOOT="1024"
    BLANK2="266"

@xcray 这样改对吗?

commented

还有一点没搞明白:安卓里mmcblk0的大小是15269888K,比16G(16777216K)少了一大块1472M。

这应该正常的,我的16g sd卡也差不多是14.6g,都是会少一些的。

不是这样的。你说的16G显示为14.6G的现象是正常的,那是格式化后真正能保存用户数据的容量,就是很多电脑白痴说厂家偷工减料的那个“问题”。

这里说的已经是数扇区了,是原始存储容量,一个字节都不应该少。

至于改法,基于已知的经验,108/1024/266肯定没问题。

不过在armbian里,好像没有必要留那8M的间隔了吧?
最激进的方法100/1040/250应该也可以,当然,8M空间确实也不算啥了。

还有一点没搞明白:安卓里mmcblk0的大小是15269888K,比16G(16777216K)少了一大块1472M。

这应该正常的,我的16g sd卡也差不多是14.6g,都是会少一些的。

不是这样的。你说的16G显示为14.6G的现象是正常的,那是格式化后真正能保存用户数据的容量,就是很多电脑白痴说厂家偷工减料的那个“问题”。

这里说的已经是数扇区了,是原始存储容量,一个字节都不应该少。

至于改法,基于已知的经验,108/1024/266肯定没问题。

不过在armbian里,好像没有必要留那8M的间隔了吧? 激进的方法100/1032/258应该也可以,当然,8M空间确实也不算啥了。

那应该没毛病了,我的建议还是保留原来的8m间隙,它默认预留8m应该也有安全性的考虑。

commented

103a7b9
BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"

不一定,你看我发的那个分区表,虽然分区个数和每个分区大小和你那个表一样,但是reserved分区起始位置不一样,并且每个分区之间有8M间隔,所以vendor起始位置到了1398,而168+512+674=1354在tee分区。 @xcray 你发的那个线刷包,你是勾上那两个选项后线刷的吗?想找个底包把分区改成你那样的,我的分区表太浪费了。

可惜我现在懒得再刷回安卓仔细查看每个分区的开始位置了,可能也一样有8M的间隔,如果是那样的话,说不定哪天还会报错。

最好的做法还是整个“完整版主线u-boot”,可用空间最大化,也省得这么累了

commented

cache的1024不必都使用。实际上boot分168都够用。

为了绝对安全,可以把cache起始100mb后做为boot分区开始,分256或512给boot;把rootfs起始再向后偏移100mb。
这样实际浪费的只是rootfs向后偏移的100mb空间。换来的是更大的兼容性和稳定性。

boot里面剩余的那点空间,扔了吧,不心疼它了,反正空间也用不完。危险分区前后不要占满,稳定第一。

你两个勇士有设备,设置好参数,写入btrfs格式测试下,没报错咱们就这样定了。就以你们的测试结果为准。

103a7b9
BLANK1调整为168MiB了,后面2个值不用调整,实际上rootfs也向后偏移了100MiB。如果底包是CM311的安卓系统,这个应该是比较可靠了。

    elif [[ "${AMLOGIC_SOC}" == "s905l3a" && "${boxid}" -eq "305" ]]; then
        BLANK1="168"
        BOOT="512"
        BLANK2="674"

不一定,你看我发的那个分区表,虽然分区个数和每个分区大小和你那个表一样,但是reserved分区起始位置不一样,并且每个分区之间有8M间隔,所以vendor起始位置到了1398,而168+512+674=1354在tee分区。 @xcray 你发的那个线刷包,你是勾上那两个选项后线刷的吗?想找个底包把分区改成你那样的,我的分区表太浪费了。

可惜我现在懒得再刷回安卓仔细查看每个分区的开始位置了,可能也一样有8M的间隔,如果是那样的话,说不定哪天还会报错。

最好的做法还是整个“完整版主线u-boot”,可用空间最大化,也省得这么累了

我基本上所有安卓包都刷过了,包括你的存在ophub大佬那的,我发现这些包都是一样的分区,都是基于江苏移动原系统改造而来。

cache的1024不必都使用。实际上boot分168都够用。

为了绝对安全,可以把cache起始100mb后做为boot分区开始,分256或512给boot;把rootfs起始再向后偏移100mb。 这样实际浪费的只是rootfs向后偏移的100mb空间。换来的是更大的兼容性和稳定性。

boot里面剩余的那点空间,扔了吧,不心疼它了,反正空间也用不完。危险分区前后不要占满,稳定第一。

你两个勇士有设备,设置好参数,写入btrfs格式测试下,没报错咱们就这样定了。就以你们的测试结果为准。

我的计划是刷openwrt,用cache的前128M做boot分区,cache剩余部分896M做rootfs,vendor开始的部分做docker分区。

cache的1024不必都使用。实际上boot分168都够用。

为了绝对安全,可以把cache起始100mb后做为boot分区开始,分256或512给boot;把rootfs起始再向后偏移100mb。 这样实际浪费的只是rootfs向后偏移的100mb空间。换来的是更大的兼容性和稳定性。

boot里面剩余的那点空间,扔了吧,不心疼它了,反正空间也用不完。危险分区前后不要占满,稳定第一。

你两个勇士有设备,设置好参数,写入btrfs格式测试下,没报错咱们就这样定了。就以你们的测试结果为准。

按照这样三个数应该是208 512 778 不知道我算的对不对。

@ophub 208 512 778刷入了,没发现报错,rootfs比原来少了200m,只有13.1g了,保守的代价就是会少容量。

commented

你总的混合区域是多大?不是1254mb?

你总的混合区域是多大?不是1254mb?

image
您是指这些分区的总大小吗?

commented

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-docs/README.cn.md#1210-如何制作安卓系统分区表

前面的总大小,从vendor开始的rootfs的位置,对应tx3的混合分区1350mb这个大小。把你们发现的8m间隙都算进去,前面这块混合区域是多大?

image

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-docs/README.cn.md#1210-如何制作安卓系统分区表

前面的总大小,从vendor开始的rootfs的位置,对应tx3的混合分区1350mb这个大小。把你们发现的8m间隙都算进去,前面这块混合区域是多大?

image

1398MB BootLoader和reserved中间有32MB
image

commented

208+512+778=1498
vendor是从1498后开始的吧?1398+100=1498?

208+512+778=1498 vendor是从1498后开始的吧?1398+100=1498?

https://blog.csdn.net/ld_leon/article/details/125670744
大佬 您看看这个表,我测的和他一样的

image

这起始也不是208,起始块221184/1024=216 vendor起始块2863104/1024=2796

1个block是512字节,不是1024

commented

好的,百度知道又欺负我读书少
这个盒子每个分区之间有8m,不知道其他盒子有没有这个设置,之前没注意到这个情况,看起来以后要看块的起始位置更准确。