踩坑记录:自编译 amlogic-s9xxx-openwrt 写入 eMMC 后无法启动的解决方案

前言

接上文 《中兴机顶盒 ZXV10 B860AV3.2-M 刷入 openwrt 或 armbian 系统》后,我打算自行编译 openwrt 固件。

编译好后写入U盘,可以正常启动。

但是安装进 eMMC 后,却无法正常启动了。

现象

eMMC 启动时会卡在这个位置,但是U盘启动可以正常进入

Starting kernel ...

uboot time: 5984161 us

错误排查

我先安装上 amlogic-s9xxx-openwrt 官方的编译固件,顺利从 eMMC 启动了。

偶然间我发现:

root@ImmortalWrt:~# df -hl
Filesystem      Size  Used Avail Use% Mounted on
udev            731M     0  731M   0% /rom/dev
tmpfs           174M  888K  173M   1% /rom/run
/dev/mmcblk2p2  960M  295M  572M  34% /rom
tmpfs           868M  4.6M  864M   1% /tmp
tmpfs           512K     0  512K   0% /dev
cgroup          868M     0  868M   0% /sys/fs/cgroup
/dev/mmcblk2p4  5.0G  5.9M  5.0G   1% /mnt/mmcblk2p4
/dev/mmcblk2p1  158M  147M   11M  94% /boot
/dev/mmcblk2p3  960M  5.7M  947M   1% /mnt/mmcblk2p3

2024-05-21T18:24:29.png

注意启动分区 /boot 几乎快满了

此时我又想到之前对比了自己编译的和官方编译的固件,有个别文件大小差异明显 (左官方,右自编译):

2024-05-21T18:22:53.png

发现了什么?自己编译的固件大了14MB左右,而启动分区安装官方固件时仅剩11MB

这时再看 uboot 日志,豁然开朗。

官方固件的 zImage,大小对上了

reading /zImage
40174080 bytes read in 1226 ms (31.3 MiB/s)

而这个是自编译固件写入 eMMC 后,明显少了将近4MB

reading /zImage
43327488 bytes read in 1321 ms (31.3 MiB/s)

解决方案

先制作好启动U盘,然后删除启动分区中不必要的文件。

先把 u-boot-*.bin 删除。

然后打开 uEnv.txt,找到 FDT= 开头的行:

FDT=/dtb/amlogic/meson-gxl-s905l3b-m302a.dtb

说明用到了 /dtb/amlogic/meson-gxl-s905l3b-m302a.dtb 这个文件

那么可以删除 /dtb/amlogic/其他的dtb文件

精简完成后插入U盘,启动进系统,再次安装到 eMMC 即可。

本文链接:

https://blog.nkxingxh.top/archives/407/
1 + 1 =
快来做第一个评论的人吧~