This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM368 固件升级 Upgrading Firmware 出现 No space left on device



请教各位,

     我现在想通过dm368的boa web sever进行固件更新,但是我升级rootfs的说话,会出现 No space left on device,升级kernel可以。

     rootfs有38M,kernel只有4M。

    是不是内存不够了?如何修改,请教下各位。

出错打印如下:

[01/Jan/1970:00:00:57 +0000] read.c:379 - read 20480 bytes.
[01/Jan/1970:00:00:57 +0000] read.c:433 - wrote 20480 bytes. 26091082 of 36700476
[01/Jan/1970:00:00:57 +0000] read.c:379 - read 20480 bytes.
[01/Jan/1970:00:00:57 +0000] read.c:433 - wrote 20480 bytes. 26111562 of 36700476
[01/Jan/1970:00:00:57 +0000] read.c:379 - read 20480 bytes.
[01/Jan/1970:00:00:57 +0000] read.c:433 - wrote 20480 bytes. 26132042 of 36700476
[01/Jan/1970:00:00:57 +0000] read.c:379 - read 20480 bytes.
[01/Jan/1970:00:00:57 +0000] read.c:433 - wrote 438 bytes. 26152522 of 36700476
[01/Jan/1970:00:00:57 +0000] request from 192.168.2.107 "POST /update.cgi HTTP/1.1" ("/var/www/update.cgi"): write body: No space left on device
[01/Jan/1970:00:00:57 +0000] buffer.c:229 - Wrote "HTTP/1.0 500 Server Error

系统的meminfo是:

root@192:~# cat /proc/meminfo 
MemTotal: 44644 kB 
MemFree:
 26572 kB 
Buffers: 24 kB 
Cached: 7816 kB 
SwapCached: 0 kB 
Active: 4924 kB 
Inactive: 6520 kB 
Active(anon): 3636 kB 
Inactive(anon): 288 kB 
Active(file): 1288 kB 
Inactive(file): 6232 kB 
Unevictable: 0 kB 
Mlocked: 0 kB 
SwapTotal: 0 kB 
SwapFree: 0 kB 
Dirty: 20 kB 
Writeback: 0 kB 
AnonPages: 3632 kB 
Mapped: 4652 kB 
Shmem: 320 kB 
Slab: 2356 kB 
SReclaimable: 380 kB 
SUnreclaim: 1976 kB 
KernelStack: 744 kB 
PageTables: 944 kB 
NFS_Unstable: 0 kB 
Bounce: 0 kB 
WritebackTmp: 0 kB 
CommitLimit: 22320 kB 
Committed_AS: 363380 kB 
VmallocTotal: 968704 kB 
VmallocUsed: 117228 kB 
VmallocChunk: 829436 kB

  • hi,Kyle~

                  我最近也遇到了这个问题,网络更新文件系统的时候,板内提示“request from 192.168.1.83 "POST /update.cgi HTTP/1.1" ("/var/www/update.cgi"): write body: No space left on device”。

                 不知道你是否在这个问题有一些进展?希望我们可以做进一步的讨论。

                  谢谢!!!

  • 你好,

    请问kooking引用的链接里面的提到的两点,你们都修改了么?

    1. ubifs文件系统制作时候的加大卷分区大小

    2. kernel里面增大文件系统分区的大小

  • 你好,我之前因为其他原因修改过ubfis文件系统分区和kernel里的文件系统分区,但是摄像机在运行过程中经常会出现ubifs error,所以我后来又将相关参数恢复到了原始的相关设置(kooking给出的帖子链接也是我之前发的)。

    另外,我还想请教一下,update.cgi这个后台更新程序是如何工作的?它将用于更新的ipnc_dm368_ubifs文件从本地主机拷贝到板上什么位置?如果清楚这个的话,可能会方便我们修改对应的分区或者卷区。

                希望可以获得更多高手的帮助,谢谢!

  • ubifs error有好几种类型,具体提示的是什么错误呢

  • Chris,你好,

        这两个都做过了如图一、图二,没有效果。这几天研究了下,发现rootfs和kernel,上传时写的是tmpfs,也就是写内存了,而不是nand flash。

    我做过如下尝试:

    1,我把/etc/fstab下面的tmpfs加大到50M(如图三),这样就不会出现No space了。看/proc/meminfo,发现随着升级过程,MemFree很快就会逐步被吃光,导致升级不下去。所以No space的原因,应该是耗光了内存而不是nand空间。

    2,想多分点内存给kernel,把bootagrs的mem=48M改为64M,系统起不来,不知道有没有办法增加分给kernel的内存

    3,由于kernel只有4M,所以升级kernel是正常的,不知道可否说明这个update.cgi是不是正常的。

    刚开始做DM368所以不知道说的对不对,问题也还没有解决。

        图一:

        图二: 

       图三:

       

  • 你好,Kyle,
             感谢分享问题的进展,我最近大致看了一下update.cgi对应的update.c源码,打开里边的u_debug开关,更新内核的时候一切正常,更新文件系统的时候甚至无法生成相关的日志文件。
            我按照你提供的思路修改了tmp的大小,确实没有再报错"no space",但是会出现“out of memory”的错误,感觉可能内存占用过高。之前我也尝试过增大bootagrs的mem,但是会引起其他故障,稍后我准备发帖请教一下其他高手;同时,我还有一个想法,在使用远程更新的时候,先关掉其他无关进程,可能会腾出部分内存空间,但是我还没有测试可行性。
              原以为远程升级是原有功能,不会有什么问题,没想到竟然会这样~
               希望TI的高手可以给出一些解决意见,谢谢!
  • 因为rootfs是ubi,可读写,最终我用busybox里面的tftp命令来更新我相应的程序了(例如更新system_server: tftp -l system_server -r system_server -g 192.168.1.1)。

    rootfs实在太大,如果用网页更新,目前的硬件条件实现不了。