N1 Openwrt 折腾记--修复EMMC启动异常问题

最近春节回家,把N多年前带回家的斐讯N1小盒子找了出来,本着废物利用的原则,决定在上面安装一个Openwrt系统,这样可以实现更好的网络访问。

网络上相关的教程有很多,基本原理也都是类似的。

翻腾出来之后我就开始着手安装系统,虽然步骤上还算比较简单,但是过程确是非常的曲折,中间碰到太多的问题,这是就记录一下这些问题,希望以后可以尽量避免类似的问题。

系统从U盘启动不正常

安装系统首先是将系统放在U盘上启动,U盘直接做就可以了,不过后面启动的时候,发现系统有时候可以进,有时候就一直无法进系统,搞来搞去也没找到根本的原因,直到最后尝试着换一下U盘才发现是U盘不稳定导致的。

无法从EMMC启动

一般来说,U盘启动之后,通过运行一个脚本就可以将系统安装到EMMC上,这样可以明显提高系统的运行速度,不过我试过很多次都不能正常从EMMC启动,接上串口看Bootloader的信息如下:

Kernel command line: buildvariant=user
load dtb from 0x1000000 ......
      Amlogic multi-dtb tool
      Single dtb detected
   Uncompressing Kernel Image ... OK
   kernel loaded at 0x01080000, end = 0x021d4598
   Loading Ramdisk to 734aa000, end 73ec7000 ... OK
   Loading Device Tree to 000000001fff3000, end 000000001ffffff4 ... OK
fdt_instaboot: no instaboot image

Starting kernel ...

uboot time: 7528701 us
domain-0 init dvfs: 4

从log上也看不出所以然来,感觉都要放弃的时候,我开始玩bootloader的命令,偶然间我发现有一个env重置的命令,于是我尝试了以下的操作:

gxl_p230_v1#env default -a
backup factorystep is 0
## Resetting to default environment
set factorystep 0
gxl_p230_v1#
backup factorystep is 0
## Resetting to default environment
set factorystep 0
gxl_p230_v1#env save
Saving Environment to aml-storage...
mmc env offset: 0x27400000
Writing to MMC(1)... MMC: block number 0x13a080 exceeds max(0x2000)
failed

注意,下述的信息说明env并没有正确的写入,所以我又重启了一下系统,直接输入reset复位系统即可。

Hit Enter or space or Ctrl+C key to stop autoboot -- :  0
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#<INTERRUPT>
gxl_p230_v1#env default -a
backup factorystep is 0
## Resetting to default environment
set factorystep 0
gxl_p230_v1#
backup factorystep is 0
## Resetting to default environment
set factorystep 0
gxl_p230_v1#env save
Saving Environment to aml-storage...
mmc env offset: 0x27400000
Writing to MMC(1)... done
gxl_p230_v1#
Saving Environment to aml-storage...
mmc env offset: 0x27400000
Writing to MMC(1)... done

从log上看,这次env被正确的写入并保存了,然后继续通过reset命令重启系统之后,发现系统还是不能正常工作,不过重新烧录U盘之后,再次写入EMMC,然后重启之后,系统就可以正常从EMMC启动了。


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

发表新评论