etc目录下添加的文件重启后消失怎么解决

leikang1993 2017-11-29 08:34:07
在嵌入式板上跑Linux,通过超级终端进入板子的文件系统,在etc目录下添加一个脚本,但重启后脚本消失,不仅如此,对etc目录下的文件做任何更改,当时是可以改的,但重启之后都还原了,感觉整个etc目录被重写了一遍似的,有大神知道是什么原因吗
...全文
1732 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hy2320020 2018-05-14
在一个迈冲的im6x开发板上遇到过这个问题, 删除一个文件,我删除的是 /etc/rc5.d/S05common文件, 您试试。
  • 打赏
  • 举报
回复
Jayce_Chen 2018-03-09
最近用到一款开发板遇到的问题与楼主类似,可以参考一下 http://blog.csdn.net/Quartu_flag/article/details/79471665
  • 打赏
  • 举报
回复
不落小太阳 2018-01-25
只读文件系统没办法修改里面的内容,除非你的板子上有片flash,每次启动的时候把flash节点挂载到一个目录,对那个目录修改是有效的,因为最后操作的其实是flash上的内容。
  • 打赏
  • 举报
回复
引用 10 楼 leochen_career 的回复:
把内存文件系统的镜像文件在主机环境下给mount到一个目录下,然后再把自己的文件放进去,再unmout.把修改好的镜像文件烧写到flash中。
能加您QQ请教吗,刚接触linux不久,或者您加我870810041
  • 打赏
  • 举报
回复
qq_22562961 2017-12-26
你这种情况我遇到过,我的情况是,不管在开发板那个地方创建文件,刚刚创建好,立马断电重启(非reboot),文件都会消失。 是这样的linux操作系统,所有创建的文件都是放在缓存里面的,如果你立马断电重启,缓存内的文件无法保存到内存里面,所以文件会消失,而linux操作系统是每30s去同步一次缓存内的数据,你也可以手动同步使用sync命令,在代码里面创建文件使用open加上O_SYNC,直接将文件写入内存就好了
  • 打赏
  • 举报
回复
楼主解决了吗?遇到同样的问题,刚接触linux
  • 打赏
  • 举报
回复
leochen_career 2017-12-26
把内存文件系统的镜像文件在主机环境下给mount到一个目录下,然后再把自己的文件放进去,再unmout.把修改好的镜像文件烧写到flash中。
  • 打赏
  • 举报
回复
引用 8 楼 qq_22562961 的回复:
你这种情况我遇到过,我的情况是,不管在开发板那个地方创建文件,刚刚创建好,立马断电重启(非reboot),文件都会消失。 是这样的linux操作系统,所有创建的文件都是放在缓存里面的,如果你立马断电重启,缓存内的文件无法保存到内存里面,所以文件会消失,而linux操作系统是每30s去同步一次缓存内的数据,你也可以手动同步使用sync命令,在代码里面创建文件使用open加上O_SYNC,直接将文件写入内存就好了
只是部分目录,不是全部,比如楼主说的etc目录下做任何修改断电重启都会消失,jffs目录下则不会
  • 打赏
  • 举报
回复
jklinux 2017-11-30
内存文件系统是把整个系统打包成一个镜像文件,内核启动前把镜像文件读出的内存里使用的。也就是内存文件系统用的都是镜像里的内容。
  • 打赏
  • 举报
回复
leikang1993 2017-11-30
如果是内存文件系统的话,每次重启etc目录下不是应该为空吗,所以etc目录肯定是磁盘上的吧 还有一个现象,每次重启后,系统时间都被重置,不知道跟这个有没有关系
  • 打赏
  • 举报
回复
jklinux 2017-11-30
有可能你用的是内存文件系统。看下你的系统是否用了内存文件系统, 如是的话,你可以解包内存文件系统并配置好后再重新打包使用, 或者进内存文件系统后,再挂载存储设备的分区作etc目录.
  • 打赏
  • 举报
回复
jklinux 2017-11-30
没什么方法了,要不就修改镜像文件。或者把整个系统复制到一个存储设备分区里,再修改uboot上的bootargs环境变量,让直接使用设备分区上的系统。
  • 打赏
  • 举报
回复
leikang1993 2017-11-30
下面是启动信息的一部分
......................
Processing /linuxrc
mount /etc as ramfs
re-create the /etc/mtab entries
start init
Processing /etc/init.d/rcS
......................

确实是把/etc挂载为ramfs内存文件系统,那这样的话我在etc目录下的任何修改岂不是在重启后都会还原吗?我只是简单地想在里面加个启动脚本,怎样能将更改同步到原始的镜像文件,而不仅仅是更改内存里的东西,求助!
  • 打赏
  • 举报
回复
leikang1993 2017-11-30
引用 1 楼 jklinux 的回复:
有可能你用的是内存文件系统。看下你的系统是否用了内存文件系统, 如是的话,你可以解包内存文件系统并配置好后再重新打包使用, 或者进内存文件系统后,再挂载存储设备的分区作etc目录.
您说的方法1要重新烧写文件系统吧,方法2重启的话,是不是又还原成原来的镜像中的内容了?有没有不用重新烧写文件系统的方法,因为这是接过来的项目,工具都不见了。。。 多谢前辈
  • 打赏
  • 举报
回复
相关推荐
发帖
驱动开发/核心开发
加入

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2017-11-29 08:34
社区公告
暂无公告