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.
GNU General Public License v2.0
5.8k stars 1.87k forks source link

测试新魔百和 M401a 支持写入emmc使用 #732

Closed HoYin90 closed 1 year ago

HoYin90 commented 1 year ago

Device Information | 设备信息

Armbian Version | 系统版本

Describe the bug | 问题描述 虽然刷入成功,但内存显示不对,M401a在安卓系统显示是2G内存 image

s700k commented 1 year ago

meson-g12a-s905l3a-m401a-js.zip

试了bokeylee魔改的dtb可以刷入emmc。

meson-g12a-s905l3a-m401a-1128R.zip

试了janko888最新修改还是会内核崩溃。

如此看来,貌似降频比升压稳一点。另外emmc的boot分区没有u-boot.emmc也能启动,这是不是非必要项。

janko888 commented 1 year ago

306 `306:M401A :s905l3a :meson-g12a-s905l3a-m401a-js.dtb :u-boot-u200.bin :NA :NA :meson-g12a :s905l3a :no

这个配置文件在rebuild镜像文件时和在armbian-install写入emmc时都用到,之所以我说你在这里的修改无效,是说里面的配置的u-boot-u200.bin在写入emmc阶段不影响实际了,因为这部分关联的逻辑,在rebuild成镜像时已经决定了,在U盘写入镜像后,U盘里再改也影响不了启动策略这些(因为rebuild成镜像文件时读取这个配置文件关s905l3a所有配置的第一条里面的u-boot-e900v22c.bin,镜像复制出u-boot.ext,在armbian-install写入阶段,虽然会重新读这个字段,但根据脚本逻辑优先判断u盘里u-boot.ext文件已经存在的,直接复制u-boot.ext成u-boot.emmc了 )

123

janko888 commented 1 year ago

上图所示304配置的u-boot-e900v22c.bin这个已经决定了s905l3a这个IMG文件所写的u-boot.ext和u-boot.emmc都是内定的了

janko888 commented 1 year ago

昨晚翻了另一篇issue,把u盘的boot.ini boot.cmd搬到了emmc,再在for devtype...前面插了一句usb start。现在可以自由切换usb和emmc了。

是的,您这个方法可已自由切换,我在6.0内核下试过。 不过神奇的是,我的m401a在5.15内核下就是没有遇到过无法切换emmc和usb的问题,个体差异性真大

ophub commented 1 year ago

好帖子,发现一个(疑似错误) 如果当前固件添加了u-boot.ext还能正常启动到armbian-install刷机界面,说明这个u-boot是可以使用的,所以优先复制它(这在5.10/6.0的固件下是这样执行的,无论这个文件是固件rebuild时生成的,还是自己手动复制的,因为它能正常启动,所以这个文件被认为是最可靠的)。 而5.4/5.15因为默认没有这个u-boot.ext,所以会从配置里选择使用,所以配置文件的正确对这2个版本的固件很关键(除非在armbian-install之前,自己也手动在USB里复制了u-boot.ext)。 所以无论如何,都要保障配置文件里的搭配是可靠的(在armbian-update时可真的是使用了配置文件指定的u-boot,在安装时被记录到了/etc/ophub-release里了,在使用非5.4/5.15的其他内核时,都需要复制才能启动)。 最后一列的no改成yes就可以打包了,为了避免重复,可以自己起个唯一的board名字,比如s905l3a-m401。 这些不是固定的,被设置为yes的是因为这些盒子的固件有一定的通用性或者唯一性,通用性可以让同家族的其他盒子直接启动使用,或只改uEnv.txt来使用。唯一性是因为它实在没法使用其他的,不单独打包一个没法用。 目前有17*2个独立打包,空间还有25G可以使用,时间还有2小时可以使用。所以理论上如果使用2个内核打包,再增加15个board,多生成30个固件也是能在Actions里跑完的。

janko888 commented 1 year ago

好帖子,发现一个(疑似错误) 如果当前固件添加了u-boot.ext还能正常启动到armbian-install刷机界面,说明这个u-boot是可以使用的,所以优先复制它(这在5.10/6.0的固件下是这样执行的,无论这个文件是固件rebuild时生成的,还是自己手动复制的,因为它能正常启动,所以这个文件被认为是最可靠的)。 而5.4/5.15因为默认没有这个u-boot.ext,所以会从配置里选择使用。

哈哈,似乎我的逻辑深陷在6.0里测试启动配置不能自拔了

janko888 commented 1 year ago

原厂固件的dt.img里有四个dtb,我分别贴一下,甚至有最高1.5Ghz的灰烬版。

这个貌似一个厂家的固件里面是包括厂家自身类似产品线不同产品的dtb,已便这个固件可以自适应重用,这个要看在启动是选择哪一个dtb,我之前看m302a的TTL日志,每次都提示发现8个dtb,使用第几个dtb启动这种日志

ophub commented 1 year ago

安卓一般是带4个dtb,把几个不同内存大小的都带了,启动时选择1个用。 这些盒子最要命的是变异体太多了,有的盒子芯片都换了,却连名字和型号都不改一下。

HoYin90 commented 1 year ago

昨晚翻了另一篇issue,把u盘的boot.ini boot.cmd搬到了emmc,再在for devtype...前面插了一句usb start。现在可以自由切换usb和emmc了。

是的,您这个方法可已自由切换,我在6.0内核下试过。 不过神奇的是,我的m401a在5.15内核下就是没有遇到过无法切换emmc和usb的问题,个体差异性真大

这个板子最少有两个版本,看别的帖子,另外一个版本刷机之后需要通过触点才能u盘启动,我的是可以直接长按重置键进行u盘启动

bokeylee commented 1 year ago

昨晚翻了另一篇issue,把u盘的boot.ini boot.cmd搬到了emmc,再在for devtype...前面插了一句usb start。现在可以自由切换usb和emmc了。 是的,您这个方法可已自由切换,我在6.0内核下试过。 不过神奇的是,我的m401a在5.15内核下就是没有遇到过无法切换emmc和usb的问题,个体差异性真大

这个板子最少有两个版本,看别的帖子,另外一个版本刷机之后需要通过触点才能u盘启动,我的是可以直接长按重置键进行u盘启动

我可以自由地按reset来线刷,但没办法切到u盘启动,虽然说显示器反馈出来的状态就是在我按住reset开机时,他会重复启动多次

janko888 commented 1 year ago

这个板子最少有两个版本,看别的帖子,另外一个版本刷机之后需要通过触点才能u盘启动,我的是可以直接长按重置键进行u盘启动

国产盒子\运营商盒子在不同批次用料\元件\设计存在差异,这太正常了。

HoYin90 commented 1 year ago

昨晚翻了另一篇issue,把u盘的boot.ini boot.cmd搬到了emmc,再在for devtype...前面插了一句usb start。现在可以自由切换usb和emmc了。 是的,您这个方法可已自由切换,我在6.0内核下试过。 不过神奇的是,我的m401a在5.15内核下就是没有遇到过无法切换emmc和usb的问题,个体差异性真大

这个板子最少有两个版本,看别的帖子,另外一个版本刷机之后需要通过触点才能u盘启动,我的是可以直接长按重置键进行u盘启动

我可以自由地按reset来线刷,但没办法切到u盘启动,虽然说显示器反馈出来的状态就是在我按住reset开机时,他会重复启动多次

我们线刷需要触点的,reset键没用,你可以看下你的板子是否和我的反过来的,而且板子间触点也不一样

janko888 commented 1 year ago

我可以自由地按reset来线刷,但没办法切到u盘启动,虽然说显示器反馈出来的状态就是在我按住reset开机时,他会重复启动多次

一般按正常写入后,都是armbian接管了版子逻辑,除了电源开关这种硬逻辑,其他都失效,例如红外等等(除非有搞有什么多系统并存方案之类的)

bokeylee commented 1 year ago

我可以自由地按reset来线刷,但没办法切到u盘启动,虽然说显示器反馈出来的状态就是在我按住reset开机时,他会重复启动多次

一般按正常写入后,都是armbian接管了版子逻辑,除了电源开关这种硬逻辑,其他都失效,例如红外等等(除非有搞有什么多系统并存方案之类的)

红外好像还是存活的,poweroff关机后会亮红灯,这时候可以用遥控来开机。 顺手贴一下我板子的裸照,看着那堆空焊点,强迫症都犯了 m401a-bottom m401a-top

HoYin90 commented 1 year ago

我可以自由地按reset来线刷,但没办法切到u盘启动,虽然说显示器反馈出来的状态就是在我按住reset开机时,他会重复启动多次

一般按正常写入后,都是armbian接管了版子逻辑,除了电源开关这种硬逻辑,其他都失效,例如红外等等(除非有搞有什么多系统并存方案之类的)

红外好像还是存活的,poweroff关机后会亮红灯,这时候可以用遥控来开机。 顺手贴一下我板子的裸照,看着那堆空焊点,强迫症都犯了 m401a-bottom m401a-top

image 你试试短接一个点

HoYin90 commented 1 year ago

还有,线刷包好像也会有影响,你可以刷一下上面的线刷包,刷的时候记得选择擦除所有

bokeylee commented 1 year ago

还有,线刷包好像也会有影响,你可以刷一下上面的线刷包,刷的时候记得选择擦除所有

原来是这么短接……我以为是上下两行两个点,一开始试了好多次,后来才梦中惊醒发现按住reset也可以刷机

HoYin90 commented 1 year ago

还有,线刷包好像也会有影响,你可以刷一下上面的线刷包,刷的时候记得选择擦除所有

原来是这么短接……我以为是上下两行两个点,一开始试了好多次,后来才梦中惊醒发现按住reset也可以刷机

建议你刷一下上面的线刷包,你的应该是底层分区东西没刷。我板子关机就不会亮灯了

HoYin90 commented 1 year ago

刷完了之后应该reset和短接的会换过来

HoYin90 commented 1 year ago

我一开始的时候也是reset可以先刷,刷完后就不行了,变成了短接

bokeylee commented 1 year ago

明白了,既然这样的话,那我干脆给要短接的触点焊个按钮上去算了,系统目前状态稳定,好怕再刷一次他又薛定谔了哈哈哈

janko888 commented 1 year ago

出现内核恐慌的同学可以尝试在系统调度策略层面限制cpu频率范围,看看自己的soc可以存活在那个频率极限。

1.先用cpufreq-info查看soc核心当前当前策略, 例如 current policy: frequency should be within 500 MHz and 1.80 GHz. bbb

2,然后指定策略sudo cpufreq-set -d 1000m -u 1700m 1800 》 1704 》 1608 》 1512 (没有比这更渣的了吧。。哈哈) (注意:这里的设置重启会失效)

janko888 commented 1 year ago

针对m401a这个盒子的版本比较乱,体质差异较大,是否可以以下解决方案:

1,dtb层面保留频率最高还是1800Hz; 2,在启动系统后,可以具体针对这个型号的做个保守限制到1704Hz的开机设定(sudo cpufreq-set -d 500m -u 1704m),或者这个限制比较方便自行设定;

s700k commented 1 year ago

针对m401a这个盒子的版本比较乱,体质差异较大,是否可以以下解决方案:

1,dtb层面保留频率最高还是1800Hz; 2,在启动系统后,可以具体针对这个型号的做个保守限制到1704Hz的开机设定(sudo cpufreq-set -d 500m -u 1704m),或者这个限制比较方便自行设定;

如果最初1800不能启动,就只能在dtb层面限制1704了。

bokeylee commented 1 year ago

感觉直接拆成高低频两个版本比较好,像我之前1800时,见到登录页都得看运气,根本没机会改设置。 另外可不可以按x大那个方案,把蓝牙信息也写到dtb里uart-a下面,刚刚自己测试了一下可以正常使用

ophub commented 1 year ago

1800可以去掉,稳定第一,那点频率带来的不是激动,是惊吓

janko888 commented 1 year ago

感觉直接拆成高低频两个版本比较好,像我之前1800时,见到登录页都得看运气,根本没机会改设置。 ==>这差异感觉都不是同一代soc了,哈哈

另外可不可以按x大那个方案,把蓝牙信息也写到dtb里uart-a下面,刚刚自己测试了一下可以正常使用

怎么写的,你发一下,我比较专注做服务器方面相关的调整,外设不怎么关注

janko888 commented 1 year ago

1800可以去掉,稳定第一,那点频率带来的不是激动,是惊吓

好的,我是没有想到同一款soc差距有那么大的,就像我这个盒子,跑不了1908高并发的场景,但一般应用场景是没有问题的。还没想到有开不了机的那种。哈哈

bokeylee commented 1 year ago

感觉直接拆成高低频两个版本比较好,像我之前1800时,见到登录页都得看运气,根本没机会改设置。 ==>这差异感觉都不是同一代soc了,哈哈

另外可不可以按x大那个方案,把蓝牙信息也写到dtb里uart-a下面,刚刚自己测试了一下可以正常使用

怎么写的,你发一下,我比较专注做服务器方面相关的调整,外设不怎么关注

主要是按这个https://bbs.hassbian.com/thread-18366-1-1.html 再结合了#639 理解

HoYin90 commented 1 year ago

913d9243311c2eb14d8ad534c556dac 8272ef56c229f6e61798a88427d679b 我怎么感觉我的不是CPU的问题,好像是内存问题。。。我已经把CPU调成了1608了。还是出现

ophub commented 1 year ago

更新到5.15.80

armbian-update -k 5.15.80

HoYin90 commented 1 year ago

armbian-update -k 5.15.80

[ STEPS ] Start initializing the environment... [ INFO ] Set the kernel version name: [ 5.15.80 ] [ INFO ] Set the kernel version branch: [ stable ] [ INFO ] Use mainline u-boot: [ no ] [ STEPS ] Start downloading the kernel from [ https://github.com/ophub/kernel/tree/main/pub/stable/5.15.80 ]... /usr/sbin/armbian-update: line 215: svn: command not found [ ERROR ] Kernel download failed. 这个是需要梯子的意思吗

ophub commented 1 year ago

缺svn

sudo apt-get update sudo apt-get install -y subversion tar coreutils

HoYin90 commented 1 year ago

缺svn

sudo apt-get update sudo apt-get install -y subversion tar coreutils

更新之后启动不起来,用U盘安装5.15.80后,ssh无法启动

ssh.service: Start request repeated too quickly. ssh.service: Failed with result 'exit-code'. Failed to start OpenBSD Secure Shell server.

ophub commented 1 year ago

https://github.com/ophub/amlogic-s9xxx-armbian/blob/460bec40fae42f7cd33cd8a2ebca44b543ce0f75/build-armbian/common-files/rootfs/etc/custom_service/start_service.sh#L25-L27

本地/etc/custom_service/start_service.sh文件,删除那两个#重启

HoYin90 commented 1 year ago

https://github.com/ophub/amlogic-s9xxx-armbian/blob/460bec40fae42f7cd33cd8a2ebca44b543ce0f75/build-armbian/common-files/rootfs/etc/custom_service/start_service.sh#L25-L27

本地/etc/custom_service/start_service.sh文件,删除那两个#重启

都试过,屏蔽了,默认没启动,手动启动也是报错。放开直接系统启动报错。周五的版本没这个问题,打了m401a的版本就开始有这问题

ophub commented 1 year ago

ssh服务没启动和加401没关系。 我看上游也没改ssh相关的,这个解决方法是我在ubuntu的公开邮件咨询问题里看到的。原因就是启动时未创建/var/run/sshd目录,内存的bug

HoYin90 commented 1 year ago

ssh服务没启动和加401没关系。 我看上游也没改ssh相关的,这个解决方法是我在ubuntu的公开邮件咨询问题里看到的。原因就是启动时未创建/var/run/sshd目录,内存的bug

需要人工创建吗?

ophub commented 1 year ago

你删了#就是启用自动创建。你手动执行这3个命令看一下,截图

mkdir -p -m0755 /var/run/sshd
systemctl restart sshd.service
systemctl status sshd.service
bokeylee commented 1 year ago

真怪,我刚刷好也会不启动ssh,然后把start_service那几行注释掉反而就一切正常

HoYin90 commented 1 year ago

真怪,我刚刷好也会不启动ssh,然后把start_service那几行注释掉反而就一切正常

注释了应该服务就没启动了

ophub commented 1 year ago

试试这个方法 先把/etc/custom_service/start_service.sh文件里的两个#加回去,注释了不使用这个方法。

https://codeantenna.com/a/gDvjOXAXqF

https://serverfault.com/questions/941855/why-am-i-missing-var-run-sshd-after-every-boot/949284#949284

使用这个方法: echo "d /run/sshd 0755 root root" >/usr/lib/tmpfiles.d/sshd.conf

然后sync && reboot重启

janko888 commented 1 year ago
# Add custom startup script
custom_startup_script="etc/custom_service/start_service.sh"
[[ -f "${custom_startup_script}" && -f "etc/rc.local" ]] && {
    chmod +x ${custom_startup_script}
    sed -i '/exit 0/i\bash /etc/custom_service/start_service.sh' etc/rc.local 2>/dev/null
}

sed -i '/exit 0/i\bash /etc/custom_service/start_service.sh' etc/rc.local 2>/dev/null sed -i '/^exit 0/i\bash /etc/custom_service/start_service.sh' etc/rc.local 2>/dev/null 这里是是少了一个^吧?

导致rebuild时匹配成功两两次? 这样短时间内执行了两遍bash /etc/custom_service/start_service.sh 以前没有加重启ssh估计问题不大

ophub commented 1 year ago

就1个exit 0,应该只会生成1行,你看看/etc/rc.local里有几行

janko888 commented 1 year ago

就1个exit 0,应该只会生成1行,你看看/etc/rc.local里有几行

还有一行注释里面有exit 0 字样 :) 1

ophub commented 1 year ago

真是错了,以前本地测试的时候怎么没发现呢。 你pr一下

janko888 commented 1 year ago

可能注释内容是后来加上去才触发的

janko888 commented 1 year ago

我这边测试了一下,rc.local里只保留一行bash /etc/custom_service/start_service.sh,重启不会再报ssh问题 @HoYin90 @bokeylee 测试一下,看看

bokeylee commented 1 year ago

我这边测试了一下,rc.local里只保留一行bash /etc/custom_service/start_service.sh,重启不会再报ssh问题 @HoYin90 @bokeylee 测试一下,看看 三种情况:

  1. rc.local只留一行bash /etc/custom_service/start_service.sh start_service.sh保留这两句:

    # Start ssh service 
    [[ -d "/var/run/sshd" ]] || mkdir -p -m0755 /var/run/sshd 
    [[ -f "/etc/init.d/ssh" ]] && /etc/init.d/ssh start 2>/dev/null 

    重启ssh报错,无法连接;手动restart ssh.service后可连接。

  2. rc.local同上只留一行,start_service.sh两行注释掉:无报错,可连接ssh

  3. rc.local保持原样不变(重复bash),start_service.sh两行注释掉:无报错,可连接ssh

janko888 commented 1 year ago

使用这个方法: echo "d /run/sshd 0755 root root" >/usr/lib/tmpfiles.d/sshd.conf

此法可行